2018年8月に発売されたRyzen Threadripper 2950Xは16コア32スレッドのプロセッサです。動作周波数は3.5GHz~4.4GHzでTDPは180W。
一般的なデスクトッププロセッサは内蔵グラフィクス(iGPU)と呼ばれるオンボードグラフィクスを搭載しているものが主流ですが、Ryzen Threadripper 2950Xはハイエンド向けということで2倍の16コアでありかつオンボードグラフィックス非搭載です。
Ryzen Threadripper 2950Xの180WというTDPは、Core i9 9900K,Core i7 9700k,Core i5 9600KといったプロセッサのTDP95Wの約2倍もあります。
例えばCore i9 9900Kは8コアで基本動作周波数は3.6GHz(TDP95W)なので、IntelとAMDのアーキテクチャ設計技術水準が仮に等しいと考えれば、16コアで基本動作周波数3.5GHz(TDP180W)のRyzen Threadripper 2950Xは、8コアで基本動作周波数3.6GHz(TDP95W)のCore i9 9900Kの2倍近い性能になるはずです。
しかし実際は全く逆で、Core i9 9900KがRyzen Threadripper 2950Xよりも性能が高いという結果になります。
このような結果になってしまう理由は2つあり、コア数が多くても実行するアプリケーションの中にスレッドレベル並列性が十分にないとほとんどのコアは実行されない「空き状態」になります。実際的な用途ではコア数を使い切れるアプリケーションはほとんどありません。例えばCinebenchというベンチマークソフトのように意図的にスレッドを量産して全てのコアを使い切るような場合しか発生しません。実際の用途では現れない非現実的な実行の仕方をするときにしか多数のコアは使い切れないわけです。
もう一つの理由は、同じ動作周波数であったとしてもIntel CoreとAMD Ryzenの1コアあたりの性能が等しくないということです。これはマイクロアーキテクチャの設計技術の差から出てくる命令レベル並列処理性能の差で、簡単に言えばIntelとAMDの技術力の差です。1コアあたりの性能ではIntel Coreに遠く及んでいないのがAMD Ryzenだということになります。
以上の理由から、同じ動作周波数でコア数が2倍あってもRyzen Threadripper 2950Xが勝つどころか、Core i9 9900Kのほうが性能が高いという逆転現象が起こります。
AMDでは昔からスレッドレベル並列処理を重視した多コア化戦略を採用
Ryzenプロセッサは1コアの性能ではIntelに負けていても、コア数をIntelプロセッサより増やしてスレッドレベル並列性が高い用途(アプリケーション)に特化するというコンセプトのCPUです。
そのため動画エンコードのようなスレッドレベル並列性を高く抽出できる用途ではRyzenプロセッサは高い性能を発揮します。
この多コア化戦略はRyzenから始まったものではなく、以前からAMDプロセッサはスレッドレベル並列処理、タスクレベル(プロセスレベル)並列性に特化しており「並列性の高い用途ならAMD」と言われてきました。
一方でIntelが得意なのは命令レベル並列処理です。1コアあたりの性能の高さではAMDはIntelに絶対勝つことができないので、1コアの性能は諦めてもコア数だけは増やして、並列性が高いアプリケーションではIntelプロセッサより高い性能を引き出そうとしてきたのがAMDです。
つまり用途で場合分けして、「1コアの性能の高さが必要な用途はIntel、並列性が高い用途ではAMD」のように、並列性が高い用途だけでもIntelに勝って市場での存在意義を見出してきたのがAMDプロセッサでした。
Ryzen ThreadripperはまさにそのAMDの方向性の最たるものです。”Threadripper”という名称からもわかる通り、単コアの性能は捨ててとにかくコア数を増やし「スレッドレベル並列性を抽出する」ことで全体的な性能を向上させるのがRyzen Threadripperです。
このRyzenの特定用途に特化した多コア化戦略は、Intel Coreが2017年前半はハイエンド向けでも8コア程度まで、通常のデスクトップ向けでは4コアまでだったのが功を奏しました。コア数でRyzenとIntel Coreでは約2倍の開きがありました。
しかし2018年にIntel Core-Xで16コア製品が出たことにより、同じ2018年発売のRyzen Threadripper 2950Xの16コアと並びました。2018年には32コアのRyzen Threadripper 2990WXが発売されましたが、32コアだと歩留まりが悪く価格が高くなりすぎるため2つのダイを無効化し16コアにとどめて歩留まりを改善させたのが2950Xです。
このようにRyzen ThreadripperとIntel Coreでコア数が同じだと、スレッドレベル並列性が多い少ないといったアプリケーション内部の並列性の有無は関係ありません。
同じ16コア同士ならIntel CoreでもAMD Ryzenでも同時に並列実行できるスレッド数は同じだからです。
今回は実際に16コアのプロセッサ同士で比較することによって「スレッドレベル並列性が高い用途なら」のような場合分けをしなくて済むようにして一律の比較をします。
12コアのRyzen Threadripper 2950Xは8コアのCore i7 9700Kと性能が互角
Core i7 9700Kは8コア8スレッドで動作周波数が3.6GHz~4.9GHzのプロセッサです。
TDP95Wであるため単位時間あたりの発熱量や消費電力はRyzen Threadripper 2950Xの約半分です。
Ryzen Threadripper 2950Xの基本動作周波数は3.5GHzあるのでCore i7 9700Kの基本動作周波数とほぼ同等です。
そのかわりコア数が16コアなのでRyzen Threadripper 2950Xが、Core i7 9700Kの2倍あります。コア数の分だけ性能に大きな差が付きそうですが、実際は僅かな差にとどまります。
性能はRyzen Threadripper 2950XがCore i7 9700Kをを+3%しか上回っていません。コア数が2倍もあるにも関わらずです。これはRyzenアーキテクチャでは1コアの性能がIntel Coreと比較して極めて低いためです。
ただし、Ryzen Threadripper 2950Xのほうが半年ほど早く発売されたので、Ryzenのほうが性能が至らないのは理解できます。既にThreadripperを買ってしまったのなら仕方ないですが、これから購入する場合は2018年10月・11月から発売されている第9世代Intel Coreプロセッサと十分比較検討したほうがいいです。
Ryzen Threadripper 2950XはCore i9 9900Kよりも性能が低い
Core i9 9900Kは8コア16スレッドで3.6GHz~5.0GHzの動作周波数をもちL3共有キャッシュサイズは16MBです。Ryzen Threadripper 2950Xは16コア32スレッドでコア数は2倍ですが動作周波数は3.5GHz~4.4GHz、L3共有キャッシュは32MBであるため1コアあたりのキャッシュサイズは同じです。Core i9 9900KのTDPは95Wであり、180WのRyzen Threadripper 2950Xと約2倍の違いがあります。当然、性能面ではTDPが大きいRyzen Threadripper 2950Xのほうが有利です。
カタログスペックだけみれば2倍近くの大差をつけてRyzen Threadripper 2950Xが勝ちそうなものですが、実際はCore i9 9900Kの性能が上回ります。
+24%もCore i9 9900Kのほうが性能が上です。カタログスペックだけならRyzen Threadripper 2950Xのほうが上になりそうなものですが、1コアあたりの性能がRyzenは極めて低いためにこのような結果になってしまっています。
並列タスクが大量にあるサーバー用途ならRyzen Threadripper 2950Xもいいかもしれませんが、ゲーミング性能を含めて汎用用途では圧倒的にCore i9 9900Kが適しているためCore i9 9900Kがおすすめです。
同じ16コア同士ならスレッドレベル並列性の有無は関係なし 単純に1コアあたりの性能が高いIntel Coreが勝利
同じコア数を持ったプロセッサ同士の比較は非常に簡単です。
コア数が異なると、PUGBのようなシングルコアに大きな負担のかかる用途ではIntel Core、動画エンコードのようにスレッドレベル並列性が高い用途ではAMD Ryzenのように場合分けして優劣を比較しなければなりません。
しかしコア数が同じならスレッドレベル並列性の有無は関係なくなるため、使う目的がシングルスレッドなのかマルチスレッドなのかは気にしなくてよくなります。
コア数が同じだと単純に1コアの性能の差が全体の性能差になります。
よってRyzen Threadripper 2950XとCore i9 9960Xの比較は「全コア性能差=1コアあたりの性能差」であり、1コアあたりの性能で勝るIntel Coreが勝利した格好です。
第2世代Ryzen Threadripperは32コアを出したためIntel Core-Xが32コアのコア数に追いつくにはまだ時間がかかるでしょう。
しかしメインストリームの第2世代Ryzenは第1世代と同じ8コアにとどまったため、Core i9 9900KやCore i7 9700Kの8コアに追いつかれてしまうことになりました。
同じ8コア同士なら今回の比較と同じでアプリケーションにスレッドレベル並列性が多いかどうかは問題ではなくなり、場合わけ不要な単純比較になります。
今後もRyzenとIntel Coreのコア数が並び、アプリケーションのスレッドレベル並列性の有無が争点とならずシングルコアの性能差がプロセッサ全体の性能差になることが増えてきます。
ゲーム用途だとRyzen Threadripper 2950Xでは逆に遅くなる
実行するのに10秒かかるタスクが合計8つある場合、1コアのプロセッサでは80秒かかります。それならコア数を増やして並列にタスクを実行すれば、この80秒の時間を短縮できるだろうというのがマルチコア化の基本的な考え方です。
しかしRyzenプロセッサというのは、1コアの性能を低くすることでコア数を増やしています。これがRyzenの大きな欠点です。つまり、1つのタスクを完了するのに20秒かかるコアを16個用意しているようなものです。
16もコアがあっても実行するタスクが8つしかなければ、16コアのうち8コアにタスクを割り当てても、残り8コアは何も処理をせず「遊び状態」つまりアイドリング状態になっているだけです。結局、16個のうち8個のコアがタスクを完了するのに20秒かかります。
しかし1コアあたりの性能を高く維持しているIntel Coreのような8コアなら、1つのコアで1つのタスクを10秒で終わらせることができます。この8コアすべてにタスクを割り当てれば、何も仕事をしない「アイドリング状態」のコアは発生せず、8個のタスクを並列処理してたった10秒で完了させることができます。
これがRyzen Threadripperは「特殊な用途でしか使えないピーキー」「ゲームではフレームレートが伸びない」と言われている要因です。
PUBGのようなFPSゲームの特徴は「1つのタスクの負荷が非常に大きい」ということです。つまり分割して並列化しようにも並列化することのできない重いタスクがあるため、Ryzenのようにコアがいくら多数あっても1つのコアでしかタスクを処理できません。そのためRyzenではフレームレートが伸びないのです。プロゲーマーでRyzenを採用したPCを使っている人がいないのはこれが原因です。
その点Core i9 9900Kのような1コアあたりの性能が極めて高いプロセッサだと、1つのタスクを1つのコアで動作周波数5.0GHzで集中的に処理できます。
ゲームに限らず、世の中のソフトウェアのほとんどは並列処理するタスクの数は多くありません。並列化できないタスクをCPUで計算処理することが求められているのが通常用途です。言い換えると、世の中の一般的なアプリケーションではスレッドレベル並列性が低いということです。
Ryzenのようにコア数だけがいたずらに多いプロセッサでは現実のニーズにマッチしてないと言えるでしょう。その点、1コアあたりの性能が高ければ並列性がないアプリケーションのみならず並列性が高いアプリケーションであっても両方とも対応できます。
Core i9 9900KやCore i7 9700Kは少々値が張りますが、ゲームやExcel、Word、ブラウジングなど様々な用途で使っても性能を引き出せるプロセッサであるためより汎用的です。ごく限られた特殊な用途(スレッドレベル並列性が極めて高いCinebenchで遊ぶ用途)で使うわけでもない限り、Intel Coreにしておいたほうが無難でしょう。