どうも、jisa郎です。
高性能Ryzenや他のハイエンドCPUは、複数の計算チップ(CCD)を組み合わせることで驚異的なコア数と性能を実現します。
しかし、その設計の裏には「CCD跨ぎ」という見過ごされがちな壁が存在します。これは、スレッドが別CCDへ移動する際に発生する遅延で、ゲームやリアルタイム処理の滑らかさを損ねる原因となることがあります。
本記事では、CCD跨ぎの仕組みと実際の影響、そしてその回避策までを、ハイエンドCPUのポテンシャルを100%引き出す視点で徹底解説します。
CCD跨ぎとは?
CCDはCPU内部の計算ユニットのまとまりで、Zenアーキテクチャでは1CCDあたり最大8コア(16スレッド)を搭載します。
「CCD跨ぎ」とは、アプリケーションやOSスケジューラーの都合で、処理スレッドが別のCCD上のコアに割り当てられる現象を指します。この場合、コア間通信はL3キャッシュの共有範囲を超え、I/Oダイ経由で行われるため、レイテンシが増加します。
技術的背景
単一CCD内通信
Ryzenにおける「単一CCD内通信」が低レイテンシである最大の理由は、全てのデータや命令のやり取りがCCD内で完結するため、物理的な距離と経路が最短になることにあります。1つのCCDには最大8コアと共有L3キャッシュが搭載されており、コア同士が同じL3を介してデータをやり取りできます。
このL3キャッシュは数十MB規模ながら、アクセスレイテンシはおよそ10ns前後と非常に低く、メインメモリやCCD間通信と比べて圧倒的に高速です。また、CCD内部ではInfinity FabricやI/Oダイを経由する必要がなく、信号遅延やプロトコル変換のオーバーヘッドも発生しません。
さらに、キャッシュコヒーレンシ(データの一貫性)制御も同一L3領域内で済むため、更新や同期の手間が最小限です。結果として、単一CCD内で処理を完結させれば、データ転送時間と命令応答時間が短くなり、低レイテンシを実現できます。この特性は特にゲームやリアルタイム処理に有利です。
CCD跨ぎ通信(2 CCD構成例)
Ryzenの「CCD跨ぎ通信」が高レイテンシになるのは、データや命令が物理的に離れた別CCD間を移動するため、経路が長く、複数の中継処理を経る必要があるからです。複数のCCDは直接接続されておらず、必ずI/Oダイ(IOD)を経由します。
このIOD内ではInfinity Fabricを介してデータを転送しますが、ここで信号のパケット化やプロトコル変換、バッファリングが行われます。さらに、CCDごとにL3キャッシュは独立しており、CCD跨ぎ時は相手側CCDからデータを再取得する必要があります。再取得にはキャッシュコヒーレンシ制御も伴い、数十ナノ秒単位の遅延が発生します。実測では、同一CCD内が約10〜12nsであるのに対し、CCD跨ぎでは約35〜45nsと、3〜4倍のレイテンシ差があります。これが、短時間処理やリアルタイム性の高いアプリケーションで性能低下を招く原因です。
では、なぜAMDは2CCD構成を採用せざるを得なかったのか。それはコア数の拡張と歩留まり向上の両立のためです。1CCDあたり最大8コアという設計上の上限があるため、16コアや12コアモデルを実現するにはCCDを2つ搭載する必要があります。さらに、大型モノリシックダイ(1枚の巨大なシリコン)では製造コストや不良率が跳ね上がりますが、CCDを複数に分けるチップレット構造なら、良品率が高く、コスト効率も優れます。
この手法により、高コア数製品を競合より低価格で提供できるメリットが生まれた一方で、CCD跨ぎという構造的課題も残りました。つまり、2CCD構成は高性能化と製造戦略上の必然であり、その代償が高レイテンシというわけです。
実際の影響
Ryzenの複数CCD構成は高コア数による圧倒的なマルチスレッド性能を誇りますが、その一方で「CCD跨ぎ」という構造的課題を抱えています。
これは、スレッドが別CCDへ移動する際に発生するキャッシュ再取得やInfinity Fabric経由通信によって、瞬間的なレイテンシ増加が起こる現象です。数値上の平均FPSは十分でも、フレームタイムの乱れやスタッターとして体感性能が低下することがあります。
本セクションでは、実際に海外フォーラムやRedditに寄せられた具体的な報告をもとに、CCD跨ぎが引き起こすリアルな影響を掘り下げます。
実際の影響①:ゲーム中の微細なスタッター
あるユーザーは、Ryzen 7 9800X3D搭載環境で「1%と0.1%のFPSが非常に低い状態が発生し、多くのゲームでマイクロスタッターが発生する」と報告しています。Rustでは平均FPS234に対して1%が58、0.1%が54と、グラフ上のFPSは高いものの実際のプレイ感は非常に不安定だったといいます。
このような極端な低FPS・スタッターは、CCD跨ぎによるキャッシュミスとIF経由の通信遅延が原因のひとつとして指摘されており、短時間の応答遅延が90fps→54fpsのような体感低下を引き起こします。
スタッター(stutter)というのは、ゲームや動画などの映像が一瞬カクついたり、止まったように見える現象のことです。
実際の影響②:ゲームパフォーマンスの劇的な改善例(1CCD化で解消)
あるRyzen 9 5900Xユーザーが報告した事例では、BIOS設定で片方のCCDを無効化して1CCD構成に変更した途端、ゲーム中のパフォーマンスが劇的に改善しました。改善の内容は、平均FPSの大幅上昇ではなく、フレームタイムの安定化とスタッター(瞬間的なカクつき)の解消です。
もともと2CCD構成時には、OSスケジューラーの判断でスレッドが別CCDに移動することがあり、そのたびにL3キャッシュの再取得やInfinity Fabric経由の通信が発生していました。これが、ゲーム描画処理のテンポを乱し、短時間のレイテンシ増加として現れていたのです。
1CCD化により、全てのスレッドが同じL3キャッシュを共有できるため、キャッシュヒット率が大幅に向上し、データ取得の遅延要因がほぼ消滅します。結果として、平均FPSが同じでもフレームレートの安定性が増し、プレイヤーは「ぬるぬる感」を強く体感できるようになります。
特に、対戦FPSや高速アクションゲームのようにミリ秒単位の応答性が求められるジャンルでは、この差は数字以上に顕著です。ユーザーの感想としても「2CCDでは微妙に引っかかる感じがあったのに、1CCDではまるで別PCのようにスムーズになった」との声が挙がっています。これは、CCD跨ぎ回避策の中でも効果が最も分かりやすく体感できる例のひとつです。
実際の影響③:特定ゲームでの致命的カクつき(Titanサイズのフレーム落ち)
Ryzen 9 9900Xを使うユーザーからは、ARKやMinecraft、Fortniteなど複数のゲームで「定期的に30フレーム程度の大幅なFPS低下や、時には2秒以上の停止が起こる」と報告されています。
しかも、スペック的には余裕のある構成にもかかわらず、このようなフレームタイムスパイクが頻発し、ゲーム体験が極端に劣化していたそうです。原因として、CCD構成による通信遅延などが指摘されています。
回避・緩和策
Ryzenの2CCD構成は高コア数と圧倒的なマルチ性能を誇りますが、その裏には「CCD跨ぎ」という構造的な課題があります。これは、処理スレッドが別のCCDへ渡る際にレイテンシが増大し、特にゲームや低遅延処理で性能低下を招く要因となります。
しかし、この影響は避けられない宿命ではありません。OSやBIOSの設定、アプリ側のスレッド制御によって、CCD跨ぎの発生頻度を大幅に抑えることが可能です。本章では、その具体的な手法を解説します。
スレッド固定(CPU Affinity)
スレッド固定(CPU Affinity)とは、特定のアプリケーションやスレッドを、任意のCPUコアやCCDに固定して動作させる設定です。これを行う最大の理由は、処理を単一CCD内で完結させ、CCD跨ぎによるレイテンシ増加を防ぐことにあります。
例えば、2CCD構成のRyzenでは、OSスケジューラーが負荷分散を目的としてスレッドを別のCCDに移す場合がありますが、この移動が起こるとL3キャッシュの再取得やInfinity Fabric経由通信が必要になり、数十ナノ秒単位の遅延が発生します。リアルタイム性が重要なゲームや音声処理では、このわずかな遅延がフレーム落ちや音切れの原因になり得ます。
「Affinity」を設定することで、スレッドは常に同一CCD上のコアで処理されるため、L3キャッシュの共有範囲を維持でき、キャッシュヒット率が向上します。これにより、メモリアクセスの回数やInfinity Fabric経由の通信を大幅に減らせます。さらに、予測可能な動作パターンが得られるため、パフォーマンスの安定性も向上します。特に、1CCDあたりのコア数が十分な場合(例:8コアCCDに4〜6スレッド程度)では、ほぼすべての処理をキャッシュ内で完結でき、単一CCD構成に近い低レイテンシ特性を再現可能です。
メリットは単にレイテンシ低減だけではありません。スレッドの移動が減ることで、電力変動やクロック変動も少なくなり、CPUの動作が安定します。これにより、温度管理やファン制御もより穏やかになり、システム全体のノイズ低減や消費電力削減にもつながります。総じて、スレッド固定は「高コア数Ryzenの弱点を最小限に抑える最も直接的な手段」といえます。
Windowsゲームモード または 最新スケジューラーの利用
Windowsゲームモードや最新のスレッドスケジューラーを利用することは、CCD跨ぎの影響を最小限に抑えるうえで非常に有効です。理由は、これらの機能がRyzenのCCD構造を認識し、レイテンシに敏感な処理を単一CCD内に優先配置する最適化を行うためです。従来のスケジューラーは、負荷分散を重視してスレッドを空いているコアに移動させる動作を行っていましたが、Ryzenの複数CCD構成では、これが不要なCCD跨ぎを発生させ、キャッシュ再取得やInfinity Fabric経由通信によるレイテンシ増加を招いていました。
Windows 10以降、特に21H2アップデートやWindows 11では、AMDとMicrosoftの協力によりRyzenのトポロジーを意識したスケジューリングが可能になりました。これにより、低遅延が求められるタスク(ゲームのレンダリングスレッドやオーディオ処理など)は同一CCD内に固定されやすくなり、不要なスレッド移動を回避します。ゲームモードを有効化すると、この最適化がより積極的に働き、バックグラウンドタスクを低優先度にすることで、メイン処理へのリソース集中も促されます。
メリットとしては、第一にパフォーマンスの安定性が向上します。フレームタイムのバラつきが減り、FPSが安定しやすくなります。第二に、ユーザーの手間が少ない点です。Affinity設定のように手動でコア割り当てを行う必要がなく、OS側が自動で最適化を行います。また、最新スケジューラーはクロックの高いCCDを優先的に活用するため、クロック差のあるX3Dモデルでも効率的な性能発揮が可能です。総じて、この方法は「設定一つで恩恵を受けられる、最も低コストなCCD跨ぎ対策」と言えます。
BIOSでCCD無効化
BIOSでCCD無効化とは、複数のCCDを搭載したRyzen CPUにおいて、片方のCCDを物理的に動作停止させる設定です。これにより、CPUは単一CCD構成として動作し、CCD跨ぎが物理的に発生しなくなります。最大のメリットは、レイテンシの安定性が完全に確保されることです。スレッドが別CCDに移動する可能性がゼロになるため、L3キャッシュの再取得やInfinity Fabric経由通信といった遅延要因が排除され、単CCDモデル同様の低レイテンシ特性を得られます。特に、Ryzen 9のX3Dモデル(例:7950X3D / 9950X3D)では、V-Cache搭載CCDだけを有効化してゲーム用途に特化させる手法として有効です。
加えて、この方法は全てのアプリケーションやOS設定に依存しない点が強みです。Affinity設定やスケジューラーの最適化は状況やアプリごとに挙動が異なりますが、BIOSレベルで無効化すれば、どんな環境でもCCD跨ぎは発生しません。また、無効化によりTDPや発熱が低下し、冷却負荷や消費電力も減る傾向があります。
しかし、この方法は最終手段として扱うべきです。理由は明確で、有効コア数が減るため、マルチスレッド性能が大きく低下するからです。例えば16コアのRyzen 9を1CCDにすると、8コア(16スレッド)に半減します。レンダリングや動画エンコードのような高スレッド負荷作業では、性能低下が顕著です。さらに、一部のBIOSでは有効化・無効化の切り替えが再起動を伴い、柔軟な運用が難しいこともあります。
総じて、BIOSでのCCD無効化は「低レイテンシ性能を最優先したい用途」において強力な手段ですが、マルチ性能とのトレードオフが大きいため、日常的な万能策ではありません。ゲームやリアルタイム処理専用マシンでの利用や、大会・計測といった一時的な環境構築にこそ真価を発揮する方法と言えます。
CCD跨ぎが発生しやすいCPU(デスクトップ向け)
アーキテクチャ | シリーズ | 製品 | CCD数 | コア数 | V-Cache搭載有無 |
Zen 5 | Ryzen 9 | 9950X3D | 2 | 8 + 8 = 16 | 有 |
9950X | 2 | 8 + 8 = 16 | 無 | ||
9900X | 2 | 6 + 6 = 12 | 無 | ||
Zen 4 | 7950X3D | 2 | 8 + 8 = 16 | 有 | |
7950X | 2 | 8 + 8 = 16 | 無 | ||
7900X | 2 | 6 + 6 = 12 | 無 | ||
Zen 3 | 5950X | 2 | 8 + 8 = 16 | 無 | |
5900X | 2 | 6 + 6 = 12 | 無 | ||
Zen 2 | 3950X | 2 | 8 + 8 = 16 | 無 | |
3900X | 2 | 6 + 6 = 12 | 無 |
まとめ
CCD跨ぎは、Ryzenの複数CCD構成における構造的な性質であり、必ずしも欠陥ではありません。しかし、その動作原理を知らずに使えば、スレッド移動によるキャッシュミスやInfinity Fabric経由通信の遅延が、ゲームやリアルタイム処理の体感性能を損なう原因となります。特にスタッターやフレームタイムの乱れは、平均FPSの数値だけでは見えない隠れた性能低下であり、ユーザーが「なぜか快適でない」と感じる背景に潜んでいます。
だからこそ重要なのは、事象を正しく認識することです。CCD跨ぎの存在とその発生条件を理解すれば、次に取るべきは対応方法を知ること。Affinityによるスレッド固定、Windowsゲームモードや最新スケジューラーの利用、BIOSによるCCD無効化など、手段は複数あり、用途や優先する性能によって選択肢が変わります。そして最後に、実際に適用して効果を検証することが必要です。
正しい知識と適切な設定を組み合わせれば、CCD跨ぎの影響は大幅に抑えられ、上位Ryzenのポテンシャルを最大限に引き出すことができます。複数CCDは諸刃の剣ですが、理解と対策次第で強力な武器に変わります。