概要

AMD Ryzenの一部プロセッサーにおけるCCX跨ぎと呼ばれる減少によって引き起こされる性能低下とその対策。 VRChatに限った話ではありません。

CCX跨ぎとは

Zen世代以降のプロセッサーは、Bulldozer世代やIntel Core iシリーズ(Nehalem〜Alder Lake)とは設計が異なります。 大きな1つのCPUダイで完結するのではなく、小さな複数のCPUダイを並べてコア数を増やす方式です(コントローラーなどは除く)。

Zen、Zen+、Zen2では1CCDあたり4コアまで、Zen3では1CCDあたり8コアまでを1ダイ内で完結できます。 それを超えるコア数は、2つ以上のCCDを組み合わせて実現します。 例としてRyzen 7 1800XはZen世代の8コア16スレッドで、2つのCCDを使います。

AMDとIntelは、原則としてダイ内のコア間通信が高速です。 ダイを跨ぐ通信はそれより遅くなり、Ryzenも例外ではありません。

この遅延はマルチスレッドのソフトウェアで顕在化します。 シングルスレッド主体のプログラムでは原理上起きません。 VRChatはマルチスレッドで動くため、CCDを跨ぐコア割り当てが起きると性能低下の可能性があります。

Zen〜Zen2では4コア超、Zen3以降では8コア超のプロセッサーで影響が出やすくなります。

対策

該当コアを使用しないように割り振る。

のようなツールを使う。

対象プロセッサー

デスクトップ向けRyzenプロセッサのみです。モバイル向けや非Ryzen APU(Aシリーズ)は対象外です。

Zen

  • Ryzen 7 1800X
  • Ryzen 7 PRO 1700X
  • Ryzen 7 1700X
  • Ryzen 7 PRO 1700
  • Ryzen 7 1700
  • Ryzen 5 1600X
  • Ryzen 5 PRO 1600
  • Ryzen 5 1600

Zen+

  • Ryzen 7 PRO 2700X
  • Ryzen 7 2700X
  • Ryzen 7 PRO 2700
  • Ryzen 7 2700
  • Ryzen 5 2600X
  • Ryzen 5 PRO 2600
  • Ryzen 5 2600
  • Ryzen 5 1600AF

Zen2

  • Ryzen 9 3950X

  • Ryzen 9 3900XT

  • Ryzen 9 3900X

  • Ryzen 9 3900

  • Ryzen 7 3800XT

  • Ryzen 7 3800X

  • Ryzen 7 3700X

  • Ryzen 5 3600XT

  • Ryzen 5 3600X

  • Ryzen 5 3600

  • Ryzen 5 3500X

  • Ryzen 5 3500

  • Ryzen 3 3100(4コア8スレッドだが、例外的に2CCD構成)

  • Ryzen 7 PRO 4750G

  • Ryzen 5 PRO 4650G

Zen3

  • Ryzen 9 5950X
  • Ryzen 9 5900X
  • Ryzen 9 5900

ThreadRipper / EPIC

例外なくすべてのプロセッサ。 もともとこれらのプロセッサ向けに開発された技術なので。

用語

どちらかというとUnityやVRChatの知識ではなく自作PCや半導体の知識が要求される話なので、書いておきます。

用語補足
AMD赤色のCPU/GPUメーカー。今はRyzenシリーズを売ってます。
Intel青色のCPU/GPUメーカー。今はCore iシリーズを売ってます。
Zen初代Ryzenのアーキテクチャ名
Zen+第二世代Ryzenのアーキテクチャ名
Zen2第三世代Ryzenのアーキテクチャ名
Zen3第四世代Ryzenのアーキテクチャ名
Nehalem初代Core iのコードネーム
AlderLake第十二世代Core iのコードネーム
ダイ半導体でできたトランジスタの塊。CPUの本体と言える。
CCDRyzenの1つのCPUダイのこと。AMDの呼び方。
CCXRyzenのCCD同士を繋ぐバス
InfinityFabric上と同じ
バス通信するための経路
CCX跨ぎCCD同士の通信、およびそれによって引き起こされる遅延