連載
「Ryzen AI 300」とはどんなプロセッサなのか。高効率Zen 5cコアに新世代NPUとPS5を超えるGPUを組み合わせる[西川善司の3DGE]
そのうえ,名称に「AI」と付いていることからも分かるように,「高性能な推論アクセラレータ」も統合しており,AMDは,「AI時代のPCに合わせて設計されたAPU」であることを大きくアピールしている。
本稿では,AMD版高効率コアともいえるCPUコア「Zen 5c」や,「RDNA 3.5」と呼ばれる新しい統合型GPU,そして「XDNA 2」という名称が与えられた新推論アクセラレータに焦点を当てて解説していこう。
Ryzen AI 300シリーズは第3世代Ryzen AIである
Ryzen AI 300シリーズは,開発コードネーム「Strix Point」と呼ばれている。Strixは,猛禽類の鳥「フクロウ」を意味し,Pointは「世代」「視点」といった意味が与えられているようだ。
Ryzen AI 300シリーズは,2024年7月時点で「Ryzen AI 9 HX 370」と「Ryzen AI 9 365」の2モデルがラインナップされている※。「Ryzen AI」がシリーズ名で,その後に1桁奇数の「型番グレード」,上位モデルの場合は,それを示す「HX」が入り,最後に3桁の「モデルナンバー」が続く。
※AMDのRyzen AI情報ページには,「Ryzen AI 9 HX 375」というモデルナンバーの製品もあるが,詳細は未公開
モデルナンバーの「300」は第3世代を表す。と聞いて,「Ryzen AI 100や200ってあったっけ」と首をかしげる人もいるだろう。ややこしいのだが,これは,AMDが時々しれっと始める「リブランディング」というやつだ。
Ryzen AI 100に相当するのは,Zen 4ベースの「Ryzen 7040」シリーズ(開発コードネーム Phoenix Point)で,Ryzen AI 200に相当するのは,同じくZen 4ベースの「Ryzen 8040」シリーズ(開発コードネーム Hawk Point)となる。一応,Ryzen AIシリーズは,「鳥っぽい名前」の開発コードネームの系譜が貫かれているようだ。
Ryzen AI 300シリーズは,TDP(Thermal Design Power,
CPUは,Ryzen 9000シリーズと同一のZen 5マイクロアーキテクチャのCPUコアと,そのコンパクト(Compact)版とされるZen 5“c”マイクロアーキテクチャのCPUコアが混在しているのがポイントだ。
一方のGPUは,「RDNA 3」世代に改良を施したRDNA 3.5世代の「Radeon 800M」シリーズを搭載する。
これに加えて,XDNA 2世代の推論アクセラレータも搭載している。この第2世代推論アクセラレータの搭載こそが,今回,AMDがわざわざリブランディングをしてまで,Ryzen APUに「AI」の名を冠した理由だ。
なお,Ryzen AI 300シリーズは,TSMCの製造プロセス「N4P」(4nm)で作られる。デスクトップPC向けのRyzen 9000シリーズとは異なり,Ryzen AI 300シリーズはチップレットアーキテクチャではなく,モノシリックな単一ダイである。
AMDの高効率コア「Zen 5c」はZen 5と何がどう違うのか
AMDはRyzen AIシリーズに,Ryzen 9000シリーズのCPUコアとまったく同一設計のZen 5コアを4基と,Intelでいうところの「高効率コア」(Efficiency Core,E-core)に相当するZen 5cコアを8基の,計12基搭載している。
今回の技術説明会でAMDは,Zen 5cを「コンパクトコア」と呼んでおり,E-coreと呼ぶのを意図的に避けている様子だった。とは言うものの,フリートークでの質疑応答では,AMDエンジニア達もZen 5cをEfficiency Coreと呼ぶ場面もあったので,一般的な解釈としては,「Zen 5を高性能コア(Performance Core,P-core)」「Zen 5cをE-core」と呼んでも大きな間違いではなさそうだ。
ただ,マーケティング的な側面においては,Zen 5cは「IntelのP-coreとE-coreとは違う」ことを,強調しておきたいというAMD側の強い意思は感じた。ここでは,そうしたAMDの認識を念頭に置きつつ,Zen 5cとはどんなものかを見ていこう。
ではどこか違うのか。それはL3キャッシュの構成だ。
Ryzen 9000シリーズのZen 5では,8基のCPUコア=CCD 1基で,容量32MBのL3キャッシュを共有していた。これはZen 4/3時の構成と同じだ。
それに対してRyzen AIのZen 5では,4基で容量16MBのL3キャッシュを共有する構成になっている。つまり,Ryzen 9000シリーズでは,Zen 5コアのクラスタは「Zen 5×8基」で構成され,ここに容量32MBのL3キャッシュを組み合わせていたが,Ryzen AIシリーズでは,Zen 5コアのクラスタは「Zen 5×4基」で,容量16MBのL3キャッシュを組み合わせる構成になっているわけだ。どちらもZen 5コア 1基あたりのL3キャッシュ容量は,1コアあたり4MBと変わらない。
一方,Zen 5cでは,8基のZen 5cを1クラスタとして,ここに容量8MBのL3キャッシュを組み合わせている。つまり,Zen 5cコア 1基あたりのL3キャッシュ容量は,1コアあたり1MBと大幅に少ないのだ(※1クラスタあたりのCPUコア数が6基の場合,L3キャッシュ容量は変わらないので1コアあたり約1.33MBになる)。
つまり,Ryzen AI 300シリーズのL3キャッシュ容量は,以下のようになる。
●Ryzen AI 9 HX 370
- Zen 5コア×4基,L3キャッシュ容量 16MB
- Zen 5cコア×8基,L3キャッシュ容量 8MB
- Zen 5コア×4基,L3キャッシュ容量 16MB
- Zen 5cコア×6基,L3キャッシュ容量 8MB
こうした,L3キャッシュ容量の大幅削減によって,ダイ面積比的に見ると,Zen 5cの1コア分は,Zen 5の1コア分に対して約30%ほど小さいそうだ。ちなみに,IntelのCore UltraシリーズにおけるE-coreは,P-coreに対して4分の1程度の面積しかないという。それに比べると,Zen 5cはZen 5に対してあまり小さくないことになる。ただ,Zen 5cとZen 5は,同一マイクロアーキテクチャで,相違点はほぼL3キャッシュ容量にしかないのに対して,Core UltraシリーズのP-coreとE-coreは,それぞれがまったく異なるマイクロアーキテクチャとなっているので,同列で比較はしにくい。
いずれにせよ,今の時点で明らかなのは,高効率コアに対する設計思想が,AMDとIntelではまったく異なっているということだ。どちらが優れているとは言いにくいが,ユーザー側での評価が進むにつれて,それぞれの特性は明らかになっていくことだろう。
さて,もうひとつ,Ryzen AI 300シリーズのCPU部分で気になるのは,Zen 5クラスタのL3キャッシュと,Zen 5cクラスタのL3キャッシュの制御メカニズムについてだ。この点についてClark氏は,「両クラスタのL3キャッシュの制御は,各CPUクラスタ内で完結しており,Zen 5とZen 5cそれぞれのL3キャッシュが,互いにキャッシュするアドレスが重複している場合もある」と述べている。そうなると,キャッシュコヒーレンシ(キャッシュの一貫性)の問題が出てくるのではないだろうか。
この点について,Clark氏によると,Zen 5クラスタのL3キャッシュと,Zen 5cクラスタのL3キャッシュは,直結したデータバスのようなものはないものの,CPUクラスタ間を結ぶ内部バス「Infinity Fabric」によって,一貫性を維持するとのことである。
さて,Zen 5とZen 5cの違いは,L3キャッシュ容量の違いだけなのかと言うと,それだけではない。
実はZen 5cでは,動作クロックのピーク周波数がZen 5よりも低くなるよう制御しているそうだ。具体的には,電圧制御とクロック周波数制御の仕方をZen 5とZen 5cで変えている。Zen 5では,電圧をより高く上げることを許容して,動作クロックもかなり上まで上げる制御をするが,Zen 5cでは,低電圧を最優先して,その電圧で駆動できる範囲の動作クロックで動作するそうだ。そうした制御の結果として,「Zen 5cの方が,消費電力が低いわりに高性能である」という,高効率コア的な特性を実現しているわけである。
なお,Ryzen 9000シリーズの解説記事でも触れているが,Ryzenでは,Windows側のスケジューラによる各CPUコアへのスレッド割り当ては,スケジューラとCPU側のドライバーソフトの連携によって行われている。Ryzen AI 300シリーズの場合,各種周辺機器の入出力(I/O)処理スレッドなどは,Zen 5c側に積極的に割り当てられるそうだ。その分,ゲームのスレッドのように逐次実行性が最優先のスレッドは,高性能なZen 5コアが割り当てられやすくなる。このあたりの仕組みは,IntelのP-coreとE-coreのスレッド割り当てメカニズムと,似たような方針を採っていると見ていい。
Ryzen AI 300のGPU性能は,PS5超えの約12 TFLOPSに
続いて,Ryzen AI 300シリーズに搭載されるGPUを見ていこう。
Ryzen AI 300シリーズに搭載されるGPUは,RDNA 3.5世代の「Radeon 800M」シリーズとなった。
RDNA 「3.5」の部分は後述するとして,Ryzen AI 300シリーズの搭載GPU名と搭載CU数,そして理論性能値を以下に示す。
●Ryzen AI 9 HX 370
- 搭載GPU:Radeon 890M
- 総CU数:16
- GPU動作クロック:2.9GHz
- 理論性能値:11.88 TFLOPS
●Ryzen AI 9 365
- 搭載GPU:Radeon 880M
- 総CU数:12
- GPU動作クロック:2.9GHz
- 理論性能値:8.91 TFLOPS
上位モデルのRadeon 890Mは,ついに,PlayStation 5の演算性能(約10 TFLOPS)を超え,Xbox Series X(約12 TFLOPS)に迫るグラフィックス性能を身に付けたということだ。
とはいえ,歓喜することなかれ。Ryzen AI 300シーズは,高速なグラフィックス専用メモリではなく,メインメモリのLPDDR5メモリをグラフィックスメモリとしており,さらに,メモリバス幅も128bitに留まるため,メモリバス帯域幅は約90GB/s(LPDDR-5600接続時)しかない。この値は,PS5の448GB/s,Xbox Series Xの560GB/sよりもだいぶ低く,PlayStation 4の176GB/sと比べても半分程度だ。それでも,PlayStation 3の25.6GB/sに比べれば3.5倍ほどあるので,フルHD解像度程度なら,そこそこ優秀なゲーム性能を発揮しそうだ。
なお,ビデオプロセッサ部分は,RDNA 3世代のRadeon 7000シリーズと同等で,H.264,H.265,AV1のハードウエアデコードとエンコードに対応する。
さて,ここで気になってくるのは,「RDNA 3.5」という小数点刻みのバージョン番号だ。
RDNA 3は,AMDが「Radeon RX 7000」シリーズとして発表したGPU(Navi 3x)の基盤となったGPUマイクロアーキテクチャである。レイトレーシング技術に対応するAMD製GPUとしては,「Radeon RX 6000」シリーズに続く第2世代モデルに相当するもので,2024年7月時点では,AMDにとって最新のGPUアーキテクチャである。
AMDとSamsungは,2019年より,スマートフォン向けGPUを共同で開発。2022年には,SamsungのSoC「Exynos 2200」向けに,RDNA 2ベースのGPU「Xclipse 920」(約1 TFLOPS)を完成させている。続く2023年には,RDNA 3ベースのGPU「Xclipse 940」(約3.4 TFLOPS)を開発して,「Exynos 2400」への搭載をアナウンスしている。
では,どんな知見をフィードバックしてRDNA 3.5としたのか。
ひとつは,「テクスチャの読み出しレートを2倍に引き上げた」こと。シンプルに言えば,テクスチャ処理系が2倍速くなったということである。
2つめとしてPapermaster氏は,「一般的なシェーダ命令における補間演算や比較演算の実行レートを,2倍に引き上げた」ことを挙げている。補間は,各種座標系計算やテクスチャアドレス演算,色の演算で多用され,比較は条件分岐やマスク生成などで用いられるが,RDNA 3.5では,これらのスループットが従来比で2倍となったわけだ。
3つめが,RDNA 3.5における最も大きな改良ポイントで,簡単に言えば,メインメモリへのアクセスを極力低減させる新機構となる。この機構についてPapermaster氏は,「Programmable Bin Ordering」というキーワードを掲げて説明していた。ようするに,「描画パイプラインにタイルベースレンダリングを介入させるメカニズム」を採用したということのようだ。なお,GPUアーキテクチャ用語では,「Bin」は「タイル」と同義である。
これは,NVIDIAがMaxwell世代で導入した「L2キャッシュ上に用意した仮想的なタイル」を活用して,疑似的なタイルベースレンダリングを行う仕組みである「Tiled Caching」と,同発想のメカニズムと見て間違いない。簡単に言えば,「レンダリングパイプラインにおいて,発生するメモリアクセスをできるだけ低減させ,避けられないメモリアクセスは局所性の高いスレッドへとまとめて,キャッシュメモリの恩恵を最大限に得ながら実行させる仕組み」ということになる。なお,Tiled Cachingの詳細は,筆者による過去記事を参照してほしい。
今どきのGPUでは,グラフィックスメモリの読み書き時に,リアルタイムのロスレス圧縮機構を搭載しているが,Papermaster氏は,「RDNA 3.5では,新世代の圧縮機構に改めている」と述べていた。こうしたロスレス圧縮は,2分の1程度から8分の1程度の圧縮率を誇るが,ランダム性の高いGPGPU演算結果のデータなどは,当然,まったく圧縮が効かない。しかし,逆にグラフィックス描画においては,最新のロスレス圧縮技術は,平均で「メモリシステムの帯域幅の2倍近い実効帯域幅を実現する」とも言われている。
Ryzen AI 300シリーズのメモリバス帯域幅は,先述のとおり最大で約90GB/sしかないが,これが倍の約180GB/s近い実効帯域幅を出せるのであれば,結構,優秀なゲームグラフィックス性能を期待できるかもしれない。
今回,AMDが公開したダイ写真のCPUとGPU,NPU(推論アクセラレータ)を色分けしたブロック図を見ると,一番大きいのがCPUコアだった。元来,性能重視型のAPUでは,GPUが一番大きいことが多い。
一方でGPUは,コア部分(≒CU数)を1.33倍とするに留まった。その理由は,Ryzen AI 300シリーズが汎用的な高性能コンピュータ向けのプロセッサだったためだ。この増加率の違いが,Ryzen AI 300シリーズにおける各コンポーネントの面積比を生んだとのことである。
Ryzen AI 300シリーズでは,NPUコンポーネントも相当に大型化していることも踏まえると,今回は「GPUの性能強化」よりも,「CPUやNPUの性能強化」に重きを置いた設計を選んだ,ということなのだろう。
XDNA 2となったRyzen AI 300シリーズの推論アクセラレータ
Ryzen AI 300シリーズにおける,注目すべき点には,推論アクセラレータ(NPU)の高性能化がある。
このNPUは,AMDが推進する「XDNA」アーキテクチャをベースとするが,その実,これは,2020年にAMDが買収したXilinxのコンフィギュラブルアクセラレータ「DPU」(Deep Learning Processor Unit)を,ほぼそのまま採用したものだ(関連記事)。
今回のRyzen AI 300シリーズに実装されたNPUには,「XDNA 2」という名称が与えられている。「AI Tile」と呼ばれる,NPU内のSIMD演算器は,下に示すスライドのようになっている。
図を見て分かるとおり,Ryzen 7040/8040世代のXDNA 1では20基だったAI Engine Tileは,Ryzen AI 300シリーズでは1.6倍の32基に増大した。この強化によって,Ryzen AI 300シリーズの推論性能は,XDNA 1の10 TOPSから,50 TOPSにまで引き上げられたという。
Xilinxの資料に当たると,AI Engine Tileは,512bit浮動小数点SIMD演算器(Floating Point 512b SIMD Vector Unit)と,512bit固定小数点SIMD演算器(Fixed Point 512b SIMD Vector Unit),そして32bitスカラ整数演算器(32b Scalar RISC Unit)を内包していることが分かる。
2種類の512bit SIMD演算器は,8bitデータ入力時は64-wayのSIMD演算器となり,さらに機械学習系のAIE-ML命令においては,クロック当たり512個の積和算(2ops)を実行できる。つまり,
- (浮動小数点512個+固定小数点512個)×32 AI Engine×動作クロック=50TOPS
となるので,1.53GHzという動作クロックを逆算できる。
Boppana氏によると,一般的なGPGPUとは異なり,XDNA系は,各演算器(AI Engine Tile)の出力結果をキャッシュやメモリに保存せずに,直接,別の演算器に直送できる点が大きな違いであるとのこと。このアーキテクチャによって,メモリアクセスを最低限にでき,超低遅延な高密度演算が可能になるわけである。
各AI Engine Tileは,隣接するプログラマブルインターコネクトと呼ばれる,演算器間NoC(Network on a Chip)を介して接続される。AI Engine Tileから出力されたデータは,必要(≒処理中のスレッドによる演算器の使い方)に応じて,リレーのように次の演算を担当するAI Engine Tileに受け渡すという仕組みだ。もちろん,AI Engine Tileから出力されたデータは,必要に応じて別のAI Engine Tileにではなく,直接DMAを介してメモリに退避させることも可能である。
余談になるが,NPUの単位演算器の出力を,NoCを介して,直接,別の単位演算器に回す構造は,Intelの推論アクセラレータ「Gaudi」シリーズも採用するものだ。Intelも,「GPGPUよりも低遅延で,演算実行効率がよくなるアーキテクチャである」と強くアピールしていた。
先代のXDNA 1にはなく,XDNA 2で導入された注目の新機能として「Block FP16」への対応が挙げられている。これは,機械学習業界向けのダイナミックレンジ重視16bit浮動小数点数である「BF16」(Brain FP16)形式の別バリエーションとも言うべきものだ。具体的には,BF16のスループットをFP8並みに引き上げる新形態とも言うべきもので,普通のBF16とは違って,共通指数項(Shared Exponent)の概念を導入している。
以下に,一般的な16bit浮動小数点数(FP16),BF16形式,Block FP16形式の各フォーマットを示す。
- FP16:符号 1bit,指数項 5bit,仮数項 10bit
- BF16:符号 1bit,指数項 8bit,仮数項 7bit
- Block FP16:符号 1bit,共通指数項 8bit,仮数項 7bit
BF16とBlock FP16は,一見,同じに見える。しかし,Block FP16の指数項は,複数の「符号+仮数項」データに対して,共通に用いるものだ。
次のスライドは,8個分のFP16と,ブロックサイズ「8」のBlock FP16のデータ量を比較したものである。左がFP16/BF16の占有容量で,右がBlock FP16の占有容量だ。FP16 8個分のデータは「FP16(16bit)×8個」で128bit分になる。一方,Block FP16では,定義されたブロックサイズ8個分の仮数項は個別に持つが,8個分の指数項は共通の指数項として1個分だけを保持するので,「8bit仮数項×8個+8bit共通指数項」=72bit分のデータ量だけで表現できるのだ。
具体的にいえば,ブロックサイズ8のBlock FP16では72bitとなるので,1要素あたりの占有容量は「72bit÷8要素=9bit」となり,ほとんど8bitに近いデータサイズでBF16を扱えるわけである。ブロックサイズを大きく取れば取るほど,1要素あたりのデータサイズはどんどん8bitに近づいていくのは想像できるだろう。
Block FP16を使うメリットは,先述したようにデータ量の削減が最大の恩恵だが,デメリットもある。演算直後の生データでは,ブロックサイズ分(つまり複数個)のBF16データの指数項が,すべて同じ値になっていない場合も多い。その場合,共通指数項を同一値で管理できるように,各仮数項をビットシフトして正規化しなければならないのだ。このときに,仮数の有効桁が失われる可能性もある。
つまりBlock FP16は,演算精度の面でFP16に対してはもちろん,BF16に対しても劣る場合がある。これがBlock FP16のデメリットだ。Block FP16は,8bit浮動小数点数とほぼ同一のデータ量で,BF16に近い精度を実現できる。精度的には,「FP8≦Block FP16≦BF16」のような新数値表現式として,活用が進むことだろう。
携帯型ゲームPCにも人気が出そうなRyzen AI 300シリーズ
Ryzen AI 300シリーズを,AMDは「ノートPC向け」と謳っているが,小型デスクトップPCなどへの搭載も視野に入れて開発したものであり,注目度の高いプロセッサとなりそうだ。
高性能なNPUは,ほとんどWindowsのAIエージェント機能「Copilot+」対応のために実装されたようなもので,そこに一般的なPCユーザーの興味をどの程度引きつけられるかは分からないが。少なくとも,「Zen 5×4+Zen 5c×8」からなるAMD式P-core+E-coreソリューションは,高性能なノートPCに求められる性能要件にちょうどいい感じがする。
実際,説明会では,Ryzen AI 300シリーズを搭載したゲーマー向けノートPCもいくつか展示されていたので,日本でどうなるかはともかく,世界市場では人気が出そうである。
それと,筆者が個人的に注目しているのは,Ryzen AI 300シリーズの統合型GPUの性能が高いことだ。PS5の10 TFLOPSを超える性能の統合型GPUは,携帯型ゲームPCなどへの引き合いが相当に高くなりそうである。
メモリバス帯域幅が100GB/s未満ではあるが,RDNA 3.5による新搭載のメモリアクセス低減機構などが功を奏すると,おそらく,フルHD解像度程度のゲーム用途においては,グラフィックス設定をかなり高くしても,快適なゲームプレイが楽しめるではなかろうか。
AMDのRyzen AI情報ページ
- 関連タイトル:
Ryzen(Zen 5)
- この記事のURL: