RyzenとIntel Core i9,i7,i5,i3のベンチマーク比較 ゲーム用ならRyzen、作業用ならIntel Core

私も当初はRyzen発売を好意的に受けとめていましたが、非ゲーマーにとってはあまりメリットの見いだせないCPUだという印象です。海外でも”gaming cpu”として認識されています。

2017年に発売された第1世代Ryzen(Summit Ridge)プロセッサについてはこちらで評価しています。

2018年に発売された第2世代Ryzen GシリーズRaven Ridge APUについてはこちらで評価しています。

2019年5月27日には第3世代Ryzenも発表されたのでそれについても評価していきます。

私は今後バックアップ用の副系パソコンを自作する予定で、既にケース・ファンレス電源とRyzenにも対応したCPUクーラーも購入して残りはマザボCPUメモリを買うだけなのですが、Ryzenが良かったらそれを選択するでしょうが残念ながら今の情勢だとIntel Coreを購入することになりそうです。

まず本稿の構成としては、最初に「RyzenとIntel Coreの評価手法」を説明します。続いて「AMD Ryzenが登場した際のCPU業界の背景」を記載し、次に「ベンチマーク評価」に移ります。その結果を受けた「Conclusion(結び、結論)」をまとめ、そして「AMD Ryzenの今後の展望」を記載し、最後に「参考文献」を掲載しています。

RyzenとIntel Coreプロセッサの性能比較評価手法

比較は次のように行います。

2017年に発売された第1世代Ryzen(Summit Ridge)プロセッサとIntel Coreプロセッサとの比較は、同じ2017年に発売された第8世代Intel Core(Coffee Lake)プロセッサを対象に行います。

2018年に発売された第2世代Ryzen(Pinnacle Ridge)プロセッサとIntel Coreプロセッサとの比較は、同じ2018年に発売された第9世代Intel Core(Coffee Lake Refresh)プロセッサを対象に行います。

2019年5月には第3世代Ryzen 3000が発表されたのでそれについても検証していきます。

またIntel Coreプロセッサには内蔵グラフィクス(iGPU:integrated GPU)が搭載されており、内蔵グラフィクス非搭載のRyzenとの比較では、内蔵グラフィクスを搭載している分だけ汎用コアに割り当てることのできるチップ面積が減少することになりIntel Core側にハンデがあることになります。しかしこれはRyzen側に下駄を履かせる効果があるため、企業規模(総資産額、純資産額、設備投資額)で劣るAMDのRyzenプロセッサを不利にしすぎないための配慮になります。

そしてカタログスペックではなく実効性能で性能の優劣を比較します。価格においては定価ではなく実勢価格が重視されるのと同じです。CPUを購入したユーザが実際使ってみて性能がどの程度でるのかが最も重要だからです。

ベンチマークにおいては並列化できないシングルスレッドの性能を重視するものや、スレッドレベル並列性が高いマルチスレッド性能を重視するものもあり様々です。シングルスレッドの性能を重視するベンチマークを使うとIntel Coreが有利になってしまいますし、マルチスレッド重視のベンチマークだとAMD Ryzenが有利になります。

そこで今回掲載しているベンチマークはスレッドレベル並列性が無いシングルスレッドの性能、多数のスレッドを各コアに割当てたマルチスレッドの性能をそれぞれ測定し、それら性能向上率の相乗平均を取ったものを掲載しています。性能向上率というのは比率なので相加平均(いわゆる普通の平均)では適切ではないため、相乗平均を使うのがコンピュータアーキテクチャ分野で一般的だからです。

本来はRyzenがIntel Coreより優位に立つはずだったゲーム分野

AMD Ryzenは2016年にZenアーキテクチャの発表があったのが初出でした(発売は2017年)。その2016年の発表当初から8コアになることが発表されており、当時4コア止まりだったIntel Coreの4コアの2倍であることが大きく注目されていました。

これを受けて海外のPC系メディアでは「ゲーム用CPUの完成形が現れた」と大歓迎していました。実は2016年以前に主流だったゲームでは1コアあたりの性能の高さは不要で、とにかくコア数が多くスレッドレベル並列処理性能が高いほうがゲーム用途では有利でした。これまで登場してきたコンシューマゲーム機も1コアの性能を追求しておらず動作クロックの低いコアを大量に採用したものです。

そのためZenアーキテクチャを製品化したRyzenは”gaming cpu”として持て囃されていました。Ryzenは2017年3月2日に発売された第1世代のRyzen 7の時点で8コアを実現しており、実に当時のIntel Core i7(4コア)の2倍のコア数を実現していたからです。

しかし、Ryzen発売から間もない2017年3月24日にPUBGというゲームが登場します(まだこの頃はアーリーアクセス、ベータ版)。

当初多くの人は「何このゲーム?」といった扱いをしていたのですが、2017年夏頃には爆発的にヒットしてしまい、まだPUBGが正式版でないにも関わらずTwitchやYoutubeの配信や実況でPUBGが主流となり、BTO PCショップも「PUBGに最適」を謳ったPCをメインに据えてしまうほどの需要の大きさでした。「ゲーミングPCといったらPUBG用途前提」と言わんばかりの勢いであり、それまで低調だったBTO PC業界も活況になりました。PUBG流行による大きな貢献は、一般家庭にもPCゲーム向けのハイスペックPCを普及させたことです。

さらにPC業界にとって幸いだったのはPUBGが非常に負荷の重いゲームだったことです。未だに人気で息の長いゲームとしてLoLがありますが、LoLはPCのスペックが低くてもいいので高性能CPUや高性能GPUは不要でした。そのため高価なIntel Coreや高価なNVIDIA GeForceよりも、安価なAMD RyzenやAMD Radeonでも十分だったわけです。一方でPUBGは非常に高負荷でハイスペックゲーミングPCが必要だったため、高性能で高額なBTO PCが注目されこれがPC業界の活況に繋がりました。

そしてGPUのみならずPUBGでは「1コアあたりの性能が高いCPUでないとフレームレートが下がる」ことが明らかとなったためIntel Coreがプロゲーマーやストリーマーから積極採用されることになってしまいました。実際にTwitchで常に上位表示される日本国内の著名ストリーマーも2017年当時からIntel Coreを使用しています。

PUBGでは各オブジェクトの同期処理をたった1つのスレッドで実行しています。つまりオブジェクトの数が増える(狭い範囲に敵・味方が集まる)と同期をとるべきオブジェクトが急増し、重い処理が1コアに集中してしまうため「1コアあたりの性能が低いCPU」だと大きくフレームレートが下がる要因になります。

そのため1コアあたりの性能が低いRyzenはフレームレートが伸びずPUBGゲーマーから見向きされなくなり、本来覇権を握るはずだったゲーム用CPUからはじき出されることになってしまいました。

実はPUBGを始めとしたいわゆるバトロワゲーが例外なだけで、本来ゲームは1コアあたりの性能が低くてもより多くのコアがあったほうが有利なのは前述した通りです。

なのでPUBGのような例外的な闖入者が2017年に現れなければゲーマーからRyzenが大量採用されるのは普通にあり得ることでした。それがたまたま初代Ryzen発売月の2017年3月にPUBGがリリースされ大流行してしまいその派生系ゲームが大量に登場してきてしまってプロの間でもストリーマーの間でもPUBGのようなゲームが大会でも配信でも主流となってしまったのは本当にタイミングが悪く、Ryzenにとっては巡り合わせの悪い不幸だったとしか言いようがありません。

ゲームや動画エンコードなど1コアあたりの性能より並列性を優先するならRyzen

Ryzenが叩かれている部分は何かというと、1コアあたり、または1スレッドあたりの性能の低さです。これはコア数を増やすと消費電力が増大してしまうため、動作周波数を下げなければTDPが高止まりしてしまう技術上の問題で仕方のないことです。

しかし1コアあたりの性能が低くなることは、ウェブサイトの閲覧、Word・Excelなどのテキスト作業、会計ソフトの入力のような事務作業用途で圧倒的に不利になります。

Excelは既に入力した数式の再計算処理は自動的に並列化して実行してくれますが、入力操作やグラフの作成時など計算処理以外のシート操作部分ではマルチコアの恩恵を受けることができません。1コアあたりの性能が高いほうが有利です。

またWordはExcelよりもさらにコア数増加のメリットを受けることができず、Word用途においてコア数が多いことはほぼ何もメリットがありません。Wordなら尚更1コアあたりの性能が高いほうが編集時にもたつく時間の短縮に繋がります。

またプログラミング作業用途を考えている場合でもRyzenのような多コアは不利であり、VisualStudioでの作業やビルドやデバッグはIntel Coreのほうが高速です。並列プログラムを作ったあとにそのプログラム自体を実行する段階ならRyzenでも”あり”です。しかしプログラム作成段階では1コアあたりの性能が低いと非常に作業効率が悪くなります。最初から並列化してプログラミングすることはまずなく、まずはシングルスレッドのプログラムを作ってバグを潰してから並列化するという手順を踏むので、趣味でVisualStudioを使って深層学習や金融分析をしているような用途で使う人はIntel Coreの方が作業効率が圧倒的に高いです。

さらにIntelにはMath Kernel Libraryという非常に数値計算精度が高いライブラリを利用できます。数値計算乗の小数誤差を小さくできるのみならず自動的にSIMDを活用し高速化してくれるライブラリです。このMath Kernel Libraryを利用する際の恩恵を受けられるのがIntelプロセッサの非常に大きなメリットです。

SIMD演算命令を活用できる1コアあたりの性能の高さが重要な数値計算・数値解析・科学技術計算といった分野の作業をするのなら、残念ですがRyzenが選択肢として載ることはまずありません。大学や大学院などでアカデミックな分野で使いたい人もIntelにしておいたほうが無難です。つまりRyzenは遊び向けということです。

2017年に爆発的に大流行したPUBGは「Ryzenに対応していないから遅い」と言われていますが、Ryzenに対応していないというのは「PUBGの実装ではスレッドが並列化されていない」ことを意味します。実はPUBGのようなバトロワゲー以外ならRyzenの性能は悪くありません。

海外でもRyzenは”gaming cpu”として認識されており、AMDやNVIDIAグラボと組み合わせて使うゲーム用CPUの色がかなり濃いです。Ryzenはそもそもオンボードグラフィックスが内蔵されていません。Ryzenはグラボを別途用意しない限り画面すら映らないため、最初からグラボを買うことを前提としているユーザからすると内蔵グラフィクス非搭載のRyzenのほうがゲーム用を前提としていることでますます”gaming cpu”として扱われています。

オンボードグラフィクスが搭載されていないなんてExcel/Wordをやる事務用PCだったら考えられないことですが、ゲーム用を想定しているRyzenなら「ゲーマーはグラボを別途買うだろうしCPUにわざわざグラフィック機能を乗せる必要はないだろう」ということでRyzenにはオンボードグラフィックスがないのです。このことからもRyzenがゲーマー用CPUだということがわかります。

1コアあたりの性能が低くてもAMDがコア数を増やす背景

チップあたりのコア数を増やすマルチコア化が活発化したのは2000年代半ばです。しかしそれ以前でもマルチプロセッサでコア数を増やす手法がありました。コア数を増やしてコンピュータを高速化する手法はMIMD(Multiple Instruction Multiple Data)に分類されます。このMIMDという概念が提唱されたのは1966年と記載されています。こんな大昔から「今流行りのコア数を増やす手法」の原点が提唱されており、コンピュータ・アーキテクチャの教科書の前半部分で必ず載っているお決まりの分類であるほど古典的な手法です。

こんな大昔に提唱された概念がなぜ今流行しているかというと「クロック周波数を引き上げるために電圧を上げると半導体の微細化が進んだことでリーク電流が大幅に増加してしまいこれ以上動作クロックを上昇させるのが難しい」ことで「コア数を増やさざるを得なくなっている」からです。「古典的な(classical)」というのは古いという意味ではなく「昔も現在も普遍的に通用する」という意味なので、そういった意味でMIMDは古典的です。

現在のCPUのクロックはベース4GHz~最大5GHz程度です。2000年代前半に登場したPentium4でも動作クロック4GHz程度です。それから20年近く経過しているのにもかかわらず、未だに4GHz~5GHzをうろうろしているあたり、動作クロックは年数の経過とともに全く向上していないことがわかります。

できれば動作クロックが6GHz,7GHzと伸びていってシングルコアの性能が年率50%以上で向上し続けるのが理想ですが、動作クロックを引き上げるためには電圧を引き上げることも必要で、電圧を上昇させると半導体の微細化が原因で消費電力が急増してしまいこれ以上動作クロックを引き上げるのが難しくなりました。

実は2003年まではシングルコアの性能向上が年率平均+52%を記録していました[Hennessy&Patterson, 2011]。これはアーキテクチャの改良による要因が半分、もう半分は半導体の微細化によるクロック周波数向上です。つまりアーキテクチャの改良と半導体の微細化によるクロック周波数向上の両輪によって年平均+52%の性能向上が実現されていました。

[Hennessy&Patterson, 2011]

しかし2003年頃から微細化が逆に仇となりリーク電流が大幅に増加しクロックの上昇が鈍りました。これは丁度Pentium4の時期とかぶります。この頃からシングルコアの性能向上は年率22%を上回ることがなくなります。つまり微細化によるクロック性能向上がほぼゼロになり、アーキテクチャの改良による要因でのみ性能向上せざるを得なくなったということです。

アーキテクチャの改良とは、キャッシュの改良や分岐予測精度の向上でパイプラインをスムーズに流すことによるIPC向上、命令レベル並列処理の並列性抽出度を向上させることによるIPC向上と、SIMD演算命令のデータレベル並列処理で浮動小数点演算を高速化することによるFLOPS/cycleの向上です。

このような背景によりクロック周波数の向上に頼らずアーキテクチャの改良のみで性能向上するしかなくなったため、シングルコアの大幅な性能向上は非常に難しくなってきました。

そこで、もしアプリケーションにスレッドレベル並列性が十分に存在するならば、4GHzのコアを2つ用意してアプリケーションを2つに分割して実行すれば擬似的に8GHzのシングルコアと同じ性能を実現できる、という妥協案が採用されました。

8GHzのクロック周波数を4GHzに下げると電圧は1/2で済むため電流も1/2になり消費電力は1/4になります。消費電力が1/4になったコアが2つということは全体として消費電力は1/2になっています。これが「コアを増やす」手法のメリットです。8GHzのコアを1つ用意するよりも、4GHzのコアを2つ用意するだけで消費電力を1/2にできてしまいます。

「並列性が十分に存在するアプリケーションなら、コア数を増やして消費電力を下げつつMIMDで高速化しよう」というのがコア数を増やす一つの動機です。

ただ問題なのは、この前提条件である「アプリケーションにスレッドレベル並列性が十分に存在するならば」という部分が重要で、実は世の中のほとんどのアプリケーションはこの前提条件を満たしていません。これが「コア数が2倍3倍になっても性能が2倍3倍にならない」理由です。

一方でシングルコアの性能が2倍3倍になると「アプリケーションにスレッドレベル並列性が十分に存在するならば」という前提条件を満たしていても満たしていなくてもどちらでも2倍3倍と高速化できるため、できる限りシングルコアの性能(1コアあたりの性能)を向上することが望ましいです。

このような事情から、アーキテクチャ改良で少しずつシングルコア性能を上昇させることを優先しつつ、これ以上大幅なクロック周波数増加が望めないため同時にマルチコア化も組合せてきたのがARM、Intel、Apple製プロセッサです。

しかし、AMD Ryzenの場合は少し事情が異なります。

Ryzenのようにコア数を増やすことで見かけ上の性能を増やしていくことが2017年から流行しているのは、コア数の増加はカタログスペックでアピールしやすいメリットがあるためです。コンピュータ・アーキテクチャ分野に詳しくない人は「コア数が2倍3倍と増えると性能も2倍3倍になる」と勘違いしてくれるため、Ryzenを買った後で「並列性が高い特殊な用途でないと性能は出ない」と気づいても返品できないことからメーカーのAMD側としてはメリットがあることになります。

特にCINEBENCHのように実際の用途では現れることのない多数のスレッドを同時に実行し多数のコアを使い切るというかなり特殊な用途ならRyzenは最適です。

実際の用途ではほとんど登場することのないCINEBENCHで実行される特殊な処理や、動画エンコードをメインでやる人はこのRyzenを選んで間違いありません。並列性を十分に活かせるからです。しかし、Excel・Word・ブラウザでウェブ閲覧(Youtube閲覧)などの一般的で実際的なPC用途のように、1コアあたりの性能が重要である汎用性を重視するならIntel Coreをおすすめします。

シェアが低い少数派のAMD Ryzenが一部で強く支持される理由

Ryzenが実力以上に持て囃されている理由は、Intelの一強独壇場を打ち崩す役割を果たし、高止まりしているCPU価格を引き下げる効果が期待されていることにあります。これは合理的な理由です。

他には合理的な理由ではなく、感情的な理由で業界第1位より第2位を応援したいという判官びいきもあります。世の中には「1位」「一強」「多数派」を嫌う人達が一定数存在するためです。CPUのシェアは個人向けのゲーム用途でもIntel:AMD=80:20、官公庁や大企業等の法人向けのシェアだとIntel:AMD=100:0になってしまいAMDはCPUの採用数で少数派です。AMD Ryzenは「野党支持者」のような価値観を持つ人達から強く支持されています。

第3世代Ryzenで採用されたZen2アーキテクチャの詳説:
256bitFMA×2を搭載し16FLOPS/cycleを実現
一方でL3キャッシュレイテンシは40cycleまで増加
CCXあたり4コアは維持されたためL3キャッシュミス問題が残る

第2世代Ryzenで採用されたZen+アーキテクチャは第1世代Ryzenで採用されたZenアーキテクチャの焼き直しでほぼ何も進歩していませんでした。コア数を第1世代から増やさずに単にクロックを微増させただけです。

しかし、第3世代RyzenのZen2アーキテクチャでは抜本的変更となりました。中にはSIMD演算器のように大幅に強化されているものにあれば、L1命令キャッシュサイズやL3キャッシュレイテンシ等むしろ後退した部分もあります。

256bitSIMD演算器(FMA)×2搭載し倍精度16FLOPS/cycleを達成

第1世代Ryzenと第2世代RyzenではSIMD演算器がIntel Coreよりも大きく劣っていました。その要因は、SIMD演算命令の主役であるFMA命令でAMDはFMA4、IntelはFMA3を採用するという「二重仕様」状態になっていたためです。AMDとIntelでFMA命令の仕様の覇権争いをしていたのですが、結果AMDが敗北しZenアーキテクチャからFMA4命令を削除するという憂き目にあってしまい、結果的にZenアーキテクチャではSIMD演算命令の実装が非常に乏しいものになりました。

Zenアーキテクチャの次である第2世代Ryzen用のZen+アーキテクチャでもこの点は克服されることはありませんでした。そしてZen2アーキテクチャでようやくこのSIMDの劣りを克服します。

Zen、Zen+では128bitFMA×2だったのが、256bitFMA×2になりbit幅が倍増されました。これはIntel Coreと同じです。つまりSIMD演算命令のFLOPS/cycle性能は第3世代RyzenとIntel Coreで並んだことになります。

浮動小数点乗算命令のレイテンシを4サイクルから3サイクルに短縮

上述した浮動小数点演算性能の強化とつながる話ですが、浮動小数点演算の積算命令のレイテンシが従来の4サイクルから3サイクルまで短縮されました。

実はこの乗算の3サイクルレイテンシは、Intel Coreだと2014年発売のBroadwellアーキテクチャで既に実現していたものでした。つまり第5世代Intel Coreでは既に3サイクルで浮動小数点演算の乗算を完了していたということです。今回2019年になってようやくAMDのアーキテクチャもそれに追いつきました。

L1命令キャッシュサイズが半減 引き換えに連想度を2倍

L1命令キャッシュは第2世代と比較し後退しています。それまで64KBあったL1命令キャッシュサイズが32KBまで半減しています。なぜ半減させたかというとuOP用のキャッシュサイズを2,000エントリから4,000エントリまで拡大させるためです。ダイ面積の制約のため、uOP用のキャッシュサイズを増やすためにはL1命令キャッシュサイズを減らさざるを得なかったことになります。以下の図でもわかるようにI-Cacheが32KB 8wayになっていることがわかります。

しかし単にL1命令キャッシュサイズを減らしただけだと性能低下が著しくなってしまいます。そこでその性能低下をある程度抑制するためにL1命令キャッシュの連想度を第2世代の4-wayから8-wayに倍増させました。

連想度というのはダイレクトマップの初歩的なキャッシュと、実装が難しいフルアソシアティブキャッシュの中間にあたるセットアソシアティブキャッシュの「ブロック重複数」です。

セットアソシアティブキャッシュではブロックが衝突した場合でもキャッシュできるように連想度が2以上になっています。連想度4ならブロックに入りたいライン(64B)が4つ発生しても格納することができます。今回の第3世代RyzenのZenアーキテクチャではL1命令キャッシュが8-wayになっているので連想度8です。

しかしキャッシュサイズ2倍にして連想度を半減するのと、キャッシュサイズを1/2にして連想度を2倍にするのでどちらが有利かと言えば前者です。

もしキャッシュキャッシュサイズを1/2にしても連想度を2倍にすればキャッシュの性能が落ちないと仮定してしまうと、キャッシュサイズ2KBの128-wayフルアソシアティブキャッシュと、64KBの4-wayセットアソシアティブキャッシュの性能が同程度ということになってしまいます。たとえフルアソシアティブであってもキャッシュサイズたった2KBでは不利になってしまうのは明らかです。

L3キャッシュレイテンシが40サイクルに増加 以前は35サイクル

IPC向上を狙うために今回AMDが一番注力したのがこのL3キャッシュです。L3キャッシュまわりはAMD Ryzenのコンプレックスでした。

RyzenではL3キャッシュミスが発生すると多大キャッシュミス・ペナルティが発生してしまい数百クロックのレイテンシが発生します。この間パイプラインは停止し後続のLoad命令が次のステージに進めず動作しません。Load命令が滞るとそのデータを必要とする演算命令も実行できず(データハザード)、結果的にIPCが大きく悪化します。

そこで考えだした妥協案がこの「L3キャッシュサイズ倍増」です。L3キャッシュサイズを2倍にすればL3キャッシュミスが減少しパイプラインストールも減るだろうということです。しかしこれはその場しのぎの対策であり、以上の問題を根本的に解決するには「L3キャッシュミス時の数百サイクルレベルの多大なペナルティを減らす」必要があります。これは次の項目で解説します。

L3キャッシュサイズを倍増させた引き換えとして新たに発生した問題がL3キャッシュヒット時のレイテンシが増加したことです。第1世代Ryzen(Zen),第2世代Ryzen(Zen+)では35サイクルだったレイテンシが第3世代Ryzen(Zen2)では40サイクルまで増加しました。

キャッシュサイズを大きくするとレイテンシが増加するのはAMDのみならずIntelも直面する問題です。コンピュータアーキテクチャ分野では様々な「トレードオフ」が存在しますが、このキャッシュサイズとレイテンシも有名なトレードオフのうちの一つです。メモリやキャッシュを含めた記憶装置というのは「大きいほど遅くなる」法則があります。「小さいということは高速」「大きいということは遅い」というものです。そのためコンピュータアーキテクチャでは速いものから「レジスタ」「L1キャッシュ」「L2キャッシュ」「L3キャッシュ」「メモリ(主記憶)」「ストレージ(補助記憶:SSDやHDD等)」のように重ね合わせて記憶階層を構築しています。当然ながら上にいけばいくほど小容量(高速)、下位に行けば行くほど大容量(低速)になります。

つまりL3キャッシュの容量を増やしたことでレイテンシが増加してしまうのは「変えることのできない根本的原理」です。このトレードオフがありながらもAMDは「レイテンシが増加してもL3キャッシュを増やす必要がある」と判断したことになります。

しかしIntelは同サイズのキャッシュで25サイクルのレイテンシを実現していることから、同じキャッシュサイズ同士で比べてもAMDとIntelの技術力に開きがあります。

L3キャッシュミス時のレイテンシ数100サイクルを短縮するための抜本的解決を先送り L3キャッシュ倍増でとりあえず対応

Intel CoreではL3キャッシュがミスしても急激にレイテンシが増加することはありません。しかし第3世代Ryzenでは16MBのL3キャッシュサイズを超えるデータを扱うとそれまで40サイクルだったレイテンシが一気に数100サイクルまで上昇してしまいます。

Intel Coreの場合、L3キャッシュにヒットするデータサイズなら25サイクル以下のレイテンシで済みます。そしてL3キャッシュに収まらないほどの大きさのデータを扱ってもレイテンシは50サイクル、75サイクルとデータサイズに比例して少しずつ増加していくだけに留まっています。急激に数100サイクルまで悪化することがないのがIntel Coreです。

本来はこの「L3キャッシュミス時の莫大なペナルティ」を解決して欲しいところでしたが、今回の第3世代Ryzen Zen2アーキテクチャでは「棚上げ」することになりました。L3キャッシュサイズを倍増させて、できるだけL3キャッシュミスが発生しない方策を採ったということです。しかしL3キャッシュ16MBに比べて一般的なメモリ容量は16GB~64GBもあります。L3キャッシュミスは頻繁に発生する事象です。根本的に上記の問題を解決するならばL3キャッシュミス時のペナルティ削減に注力すべきでしたが、それは次世代移行に先送りされました。

4コアのCCX×2構成は変更無し 8コアのCCX×1構成なら大きく性能向上できていた

そして今回のZen2アーキテクチャでも残念だったのがZen,Zen+に続いて再び4コアのCCX×2の構成になってしまったことです。

8コアのCCX×1でL3キャッシュを共有させるのがベストなのはAMDも理解していますが、技術的にそれが実現できなかったことになります。

Ryzenでは1枚のダイあたりに2つのCCXが存在します。CCXの定義は「L3キャッシュを共有する物理コアの集合」です。CCXごとにL3キャッシュが存在するため、同じダイ上に配置されたスレッドであっても別のCCXに再配置されてしまうとL3キャッシュミスになり多大なペナルティレイテンシが発生し、結果パイプラインがストールすることでIPCが悪化するのがRyzen最大の弱点でした。

つまり同じダイであっても、先程までCCX0で実行されていたスレッドがOSによる次のスケジューリングでCCX1に割当てられてしまうとキャッシュミスになってしまいます。せっかくCCX0のL3キャッシュにはデータが載っているのに無駄なレイテンシがかかります。

この点、8コアごとにキャッシュを共有しているIntel CoreよりRyzen(Zen2)が劣っています。Intel Coreだと8コアのうちどこにスレッドがスケジューリングされてもキャッシュミスにはなりません。

ただしこのRyzenの瑕疵はWindows10のスケジューリングアルゴリズムの改良である程度解消されます。本来はOS側はCPU内部のアーキテクチャを意識せずに済む透過性(transparency)があることを前提にスケジューリングするのですが、今回はあえてRyzen内部のアーキテクチャを感知(awareness)することで高速化をはかるアプローチです。

しかし1つのCCXを1つのプロセスが独占することは組込みシステムでないと難しいです。Windows10ではそのようなスケジューリングを保証(guarantee)ではなくベストエフォートで実行するので、Windows10で動いているアプリケーションが多いと同じCCXに再割当てされる確率は下がって別のCCXに割り当てられてしまう確率が上がり、結果的に従来のようにL3キャッシュミスによる性能低下が発生します。

この問題を根本的に解決するために必要なことは、ダイ上のCCXを4コア単位ではなく8コア単位にして、8コア全てで1つのL3キャッシュを共有できるようにすることです。

第2世代RyzenとIntel Coreのベンチマーク性能比較評価:
2018年発売の第2世代Ryzen(Pinnacle Ridge)最上位モデルRyzen 7 2700Xでも、2018年発売のCore i5 9600Kに勝てず

Ryzenのコンセプトは、1コアあたりの性能ではIntelに勝てないためオンボードグラフィックス(iGPU)を削り、その部分に汎用コアを割り当ててコア数を増やして「並列性の高いアプリケーションに特化する」というものです。これは2017年の第1世代Ryzenもそうでしたし、2018年発売の第2世代Ryzen(Pinnacle Ridge)にも引き継がれています。しかし世の中のアプリケーションには並列性が無いものが多く、コア数を増やしただけでは宝の持ち腐れになり性能が伸びないことは第1世代Ryzenにおいても指摘した通りです。

第1世代Ryzenの8コアからコア数が増えなかった第2世代Ryzen

当サイトでも「Ryzenは1コアあたりの性能が低い」「多いコアを活用するためにはアプリケーションにスレッドレベルの並列性がなければならない」「しかし並列性が高いアプリケーションは少数派」ということを指摘してきましたが、こういった点は海外のレビューでも指摘されており、Ryzenの弱点は「1コアあたりの性能が低いこと」に集約されていました。

そのためZen+アーキテクチャを採用した2018年発売の第2世代Ryzenはコア数の増加よりも動作周波数の増加を優先した格好です。デスクトップ向け第2世代RyzenのフラッグシップモデルであるRyzen 7 2700Xでさえコア数は8コアであり、第1世代RyzenのフラッグシップモデルであるRyzen 7 1800Xの8コアとコア数が同じです。Ryzen 7 1700Xも8コアだったのでやはりコア数は増えていません。

集積度を向上させると動作クロック周波数を維持したままで低消費電力化が可能になります。第1世代Ryzenでは14nmプロセスでしたが、第2世代Ryzenでは12nmプロセスでの製造になったため、この集積度の向上だけでも低消費電力化が可能となりました。そうなると第1世代Ryzenと同じ消費電力を維持したまま第2世代Ryzenでは「1.コア数を少し増やす」か「2.動作周波数を少し増やす」ことができることになります。

第2世代Ryzenでは動作周波数の上昇を優先

結果として第2世代Ryzenでは「2.動作周波数を少し増やす」ことを選びました。第1世代Ryzenで指摘されていた「1コアあたりの性能が低い」という弱点を補うことを優先したことになります。14nmプロセスを12nmプロセスにしたことで集積度の向上により10コア程度なら達成できるところですが、そうしてしまうと1コアあたりの性能が低いままになってしまうのでコア数を増やすことよりも動作周波数の上昇を選んだわけです。

ゲーム用途は一般論としてコア数が多いほうが有利なのですが、2017年から大流行したPUBGとその派生系ゲームでは1コアに大きな負担がかかるためIntel Coreのように1コアあたりの性能が高いプロセッサのほうが有利であり、Ryzenの1コアあたりの性能の低さはゲーミングPC向けとしても大きな弱点となっていました。RyzenのようにiGPU(オンボードグラフィックス)を搭載しておらず、別途グラボを必要とするゲーミングPC用途を想定しているRyzenだからこそ「1コアあたりの性能が低い」という弱点は無視できなかったことになります。

そして重要なことは、結局Ryzen 7 2800Xが発売されなかったということです。2017年はRyzen 7 1800Xも同時発売されていたので異例です。これは2018年下期に発売されたCore i7 9700K,Core i5 9600Kが8コアになると従前から予想されていたため、この第9世代Intel Coreプロセッサに対抗するためにAMDはRyzen 7 2800Xの発売を先延ばしして”温存”しているという情報が拡散されていました。プロセッサは後に発売したほうが技術的に優位だからです。しかしRyzen 7 2800Xは実際にリリースされませんでした。

それではまずRyzen 7 2700Xと同じ2018年に発売されたカウンターパートのCore i7 9700Kから比較してみます。

・Ryzen 7 2700X vs. Core i7 9700K

8コア8スレッドのCore i7 9700Kと比較してみます。8コア16スレッドのRyzen 7 2700XはCore i7を意識してリリースされているものなので、第一義的にはこのCore i7 9700Kと比較されるべきものです。

+14%もCore i7 9700KがRyzen 7 2700Xを上回っています。基本動作周波数が0.1GHzほどCore i7 9700Kのほうが低いですが、マイクロアーキテクチャが優秀であるため結果的にCore i7 9700Kが勝利していることになります。

・Ryzen 7 2700X vs. Core i9 9900K

Intel第9世代Coreプロセッサからは8コア16スレッドの9900Kも追加されたので、8コア16スレッドのRyzen 7 2700Xと全く同じコア数・同時マルチスレッディング数で比較できるようになりました。この両者の比較ではアプリケーションのスレッドレベル並列性の有無は関係なく、単に1コアあたりの性能の優劣が結果に反映されます。

結果は+21%もCore i9 9900Kが上回っています。日本で通称ヘネパタと呼ばれている「Computer Architecture」というプロセッサアーキテクチャの標準的な教科書には、「プロセッサはアーキテクチャの改良と半導体プロセス改良の両輪で1年で平均的に22%性能向上する」と記載されています。つまりこのCore i9とRyzen 7の21%の差はおよそ1年分の技術力の差になります。これはIntelとAMDの間には約1年分の技術的な差があり、AMDはIntelの1年遅れの技術力だということです。

これは2019年発売の第3世代RyzenのCinebenchのスコアが、このCore i9 9900KのCinebenchスコアと互角だったというAMD公式発表内容と整合的です。つまり第2世代Ryzenは第9世代Intel Coreよりも性能で1年遅れており、次の第3世代Ryzenをもってきてようやく第9世代Intel Core i9 9900Kと互角、そして第3世代Ryzenは第10世代Intel Coreより1年遅れた性能になることを意味します。

・Ryzen 7 2700XはCore i5 9600Kを下回る性能

8コア16スレッドのRyzen 7 2700X(2018年4月発売)と、6コア6スレッドのCore i5 9600K(2018年10月発売)を比較してみます。

Core i5は当然ながらCore i7より低性能なので、Ryzen 7 2700Xのほうが有利です。しかもCore i5はグラフィック機能まで搭載しているので、グラフィック機能がないRyzen 7 2700XのほうがCPU性能に特化できるためRyzen 7 2700Xがどう見ても勝てるように「カタログスペック上」は思えます。しかし結果は真逆になります。

このように+5%、Core i5 9600KがRyzen 7 2700Xに勝利しています。6コアのCore i5が上回った理由は、Intel Coreのほうが演算回路の設計が優秀で1コアあたりの性能が高いからです。性能の高さは動作周波数やコア数では変わらず、命令レベル並列処理を高く抽出するリザベーションステーションの並列性抽出の深さ等のマイクロアーキテクチャが優秀で、さらにSIMD演算命令の1サイクルあたりFLOPS数がRyzenの2倍あるためです。

2018年10月に発売されたCore i5 9600KはRyzen 7 2700Xを性能でも価格の安さでも超えています。第2世代Ryzenより後に発売されたのでCore i5 9600Kの性能が上回るのも納得がいきますが、Core i5 9600Kは6コア6スレッドにもかかわらず、8コア16スレッドのRyzen 7 2700Xに勝っていることは特筆すべき点です。

さらにCore i5 9600Kは内蔵グラフィクス(iGPU)を搭載しており、Ryzen 7 2700Xは搭載していません。内蔵グラフィクスを搭載している分だけ汎用コアの数は少なくなって6コアどまりですが、それでもCore i5 9600Kが性能で勝利しているのでCore i5の内蔵グラフィクスを削って汎用コアに割り当てた場合、Core i5はさらに大きくRyzen 7 2700Xより性能を伸ばすでしょう。

第9世代Intel Coreに対しRyzen 7 2700Xは圧倒的劣勢でCore i5にも勝てず

以上、第2世代Ryzen 7 2700Xは2018年発売なので、2018年発売の第9世代Intel Coreと比較してきましたが、圧倒的大差で第2世代Ryzenが敗北する結果となりました。

Ryzen 7はCore i7をカウンターパートとして意識されて発売されたものなので、Ryzen 7 2700Xと比較するならCore i7 9700Kと比較するべきですが、ここではCore i5とも比較してみました。

またIntel Coreシリーズはグラボを別途用意しなくても4K@60fpsでトリプルディスプレイ(3画面表示)ができる内蔵グラフィクス(iGPU)をCPU内部に標準搭載していますが、Ryzenシリーズは内蔵グラフィクスを搭載していません。

内蔵グラフィクス機能をCPUチップ上に搭載しているIntel Coreはそのぶんだけ汎用コアに割り当てられるチップ面積が減少するため、内蔵グラフィクスを搭載せずチップの全面積を汎用コアに割り当てているRyzenは下駄を履かせをしてもらっている(Intelにハンデがある)わけですが、それでもIntel Coreの性能のほうが上回ってしまっている点が非常に重要です。

第2世代Ryzenで採用されたZen+アーキテクチャの敗因:
SIMD演算器(FMA)が第1世代と同じで進歩なし
コア数もキャッシュ構成も変わっておらず単にクロック周波数微増のみ

このようにZen+アーキテクチャを採用した第2世代Ryzenが、第1世代Ryzenと同じくIntel Coreに大敗してしまった要因は簡単です。第1世代Ryzenで採用されたZenアーキテクチャからほとんど何も変わっていないからです。

変わったのは製造プロセスが14nmから12nmに微細化されたことで余裕のできた消費電力量(単位時間あたりの発熱量)をクロックの上昇にまわしたことです。

つまりコア数やキャッシュ構成は何も変わっていません。プロセスの微細化でクロックを向上させたことにより第1世代Ryzenの「1コアあたりの性能が低い」を少しだけ改善しただけに終わりました。

これは狭い意味でのマイクロアーキテクチャはZen+でもZenでも変わっていないことを意味します。例えばIntel Coreの場合、Skylake,Kaby Lake,Coffee Lakeとコードネーム(広い意味でのマイクロアーキテクチャ)が存在しますが、これらは全て狭い意味でのマイクロアーキテクチャでは等しく「Skylake」のままです。今回の第2世代Ryzenも同じで、広い意味でのマイクロアーキテクチャはZenかZen+で進歩しましたが、狭い意味でのマイクロアーキテクチャは全く変更無しでした。

AMDからしても第2世代Ryzenは負けることが確定していてそれが事前にわかっていた「負け前提の投入」でした。

Intel CoreよりRyzenの方がコア数が多くてもアプリケーションに並列性がなければ宝の持ち腐れになる

このようにRyzenが全敗しIntel Core全勝の結果になった理由は簡単です。Ryzenの方が1コアあたりの性能が低いからです。RyzenのようにIntel Coreの2倍のコア数である8コア16コアレベルでいくらコア数を増やしても、実行するソフトウェアの並列性がない限りは実効性能を上げることはできません。

これは1964年に世界初のスパコンが出来た時から現在に至るまで、大学の研究者から企業の技術者も頭を悩ませる古典的な問題です。いくら並列実行するためのコア数が増えてもそれを使いこなせるソフトウェアがなければ宝の持ち腐れです。Amazonの和書で「並列処理」のようなキーワードで検索して出版年を遡ってみるととてつもなく古い本が出てきてしまうくらいです。。

今回のベンチマークが示しているのは結局世の中の大半のソフトウェアは1コアのみで動くようにできているということです。つまりシングルスレッドでプログラミングされていることを意味します。なぜマルチスレッド化して実装されていないかというと、データの依存性で並列化したくても原理的に並列化できないからです。これはAmdahlの法則を知っている人なら理解が早いと思います。コア数をいくら増やしても並列化できない部分は高速化できないため、コア数を2倍3倍と増やしても性能は2倍3倍とスケールせず性能向上は頭打ちになってしまうという法則です。

一般人の用途で多数のコアを有効活用できるのは動画エンコードくらいです。しかし日頃から動画エンコードしかひたすらやっていない人は極々一握りであり、ほとんどの人はブラウザでウェブサイト閲覧をしていたり、Amazon Prime VideoやYoutubeを観ていたり、レポートを提出するときはWord(一部の学生はTeX)で文書作成をしているわけです。そのような用途では1コアあたりの性能が高いIntel Coreの方が優秀です。

オンボードグラフィックスで十分な人にとってはIntel Coreシリーズの方がお得
Ryzen単体ではディスプレイすら映らない

またIntel CoreシリーズからみてRyzenが異様なのはオンボードグラフィックスがないことです。

AMD RyzenではIntel Coreと互角な勝負をするために、本来オンボードグラフィックスを乗せる部分のチップ面積を汎用コアに回しました。オンボードグラフィクスをCPUチップ上に載せないかわりに、その空いた面積を汎用プロセッサに振り分けたわけです。

オンボードグラフィクスをCPUチップ上に搭載してしまうと、その分だけ汎用プロセッサに割り当てる面積が減り、汎用プロセッサの性能を高くできないからです。

一方で、Intel CoreはこのAMD Ryzenとは全く逆のことをしています。

Intel Coreプロセッサは世代が重なるごとにオンボードグラフィックスのチップ面積を増やし着実に強化しています。IntelとAMDは向いている方向が全く逆です。

なぜIntelは汎用プロセッサ用のチップ面積を減らしてまでオンボードグラフィックス性能を年々上げているかというと、NVIDIA GeForceやAMD Radeonから顧客を奪って、オンボードグラフィックスだけで間に合うようにすることをIntelは狙ってるからです。

実はIntel Coreプロセッサの汎用4コアの面積が、Intel HD Graphics(オンボードグラフィックス)用のコア面積とほぼ同じということはあまり知られていないようです。

これは第6世代のSkylakeプロセッサのダイです。第7世代のKabylakeもこれと同じ割当です。

一番左の部分がオンボードグラフィックスです。そして真ん中の4つの青い長方形がある部分がCPUの中枢とも言える汎用4コアプロセッサの部分です。

このようにみると汎用プロセッサとオンボードグラフィックスの面積がほぼ同じだということがわかります。

Intelの場合は以前はオンボードグラフィックスの面積はこんなに大きくなく、Intelはオンボードグラフィクスに力を入れず冷遇していました。気休め程度に「ディスプレイが取り敢えず映りさえすればいい」程度の認識しかIntelにはありませんでした。

しかし、現在のIntel Coreプロセッサではチップ面積の大半をグラフィックのために割いています。

なぜそのようなことをするかと言えば、ゲーム以外の用途として使う人にとっては画面出力のためだけに高価なグラフィックボードはオーバースペックすぎて不要だからです。だからといって、Youtube再生や簡単な3Dグラフの描画程度でもたつくのは困ります。

そこで拡張グラフィックボードがなくても、そこそこのグラフィクス性能を確保するために、最近のIntelはNVIDIA GeForceやAMD Radeon潰しのために、CPU上のオンボードグラフィクスに注力しているわけです。

 

次にRyzenのチップを見てみます。

左と右にそれぞれ1つずつ、合計2つ見える横長の長方形がRyzenの汎用コアです。

このように片方の長方形で4コア、もう片方の長方形で4コアで合計8コアにしています。

この図にはグラフィック部分が見当たりません。それは当然であり、Ryzenでは一切グラフィックスを載せていないからです。グラボを別途お買い求めくださいというコンセプトなのがRyzenです。

なぜここまでしてRyzenではオンボードグラフィックスを削ったのかと言えば、それは単なるRyzenのコンセプトだけではありません。

Intel Coreに太刀打ちするために仕方なく、Ryzenではオンボードグラフィックスを削ったのです。

このような事実を認識すると、第3世代Ryzen APUになってもいまだにRyzen APUが4コア止まりである理由がよくわかると思います。Ryzen APUはオンボードグラフィクスを搭載したRyzenシリーズです。APUでないRyzenはコア数が8以上なのにAPUになると第1世代からずっと4コアのままです。だからこそ汎用コア数を増やすためにはオンボードグラフィクスを削らざるを得なかったことを、AMD Ryzenが自ら証明してくれています。

理由1:オンボードグラフィックスを削減して汎用コアにチップ面積をまわさないとIntelに太刀打ちできないから

Ryzenは一切オンボードグラフィックスコアをCPU内部に搭載していません。オンボードグラフィクスを搭載しない代わりに、その空いたチップ面積汎用プロセッサ部分に割り当てることによって、AMDは技術力ではIntelに敵わないから汎用コア用のチップ面積を増やすことでなんとかIntelの背中に追いつこうとしているのが今回のRyzenです。

Intelプロセッサではオンボードグラフィックスと、汎用コアで丁度同じくらいの面積を分け合って使っているものの、Ryzenではオンボードグラフィックス用の面積はゼロです。

RyzenではオンボードグラフィクスをCPU上に載せない代わりに4コア8スレッドの汎用コアをもう1セット追加してダイ1枚あたり8コアを実現しなんとかIntel Coreと勝負しようとしたものの、やはりベンチマークでは負けてしまいました。Core i7どころかCore i5にすら負けてしまった形です。

でもAMDの企業規模から言えば一強のIntelに対してそこそこ健闘した方だとは思います。

第1世代Ryzenが発売された2017年度のAMD売上高は53億2900万ドル、第2世代Ryzenが発売された2018年度のAMD売上高は64億7500万ドルでした。

一方でIntelはの売上高は2017年度が627億6100万ドル、2018年度が708億4800万ドルです。これは売上高で、純利益だとさらに差は広がって100倍程度Intelが上になってしまいます。このような企業規模の差がありながらもAMDは頑張って努力はしたほうです。

理由2:そもそもAMDはNVIDIAと並ぶグラボチップメーカーなのでオンボードグラフィックスをRyzenに搭載してしまうとAMDの自社グラボが売れなくなってしまうから

AMDはCPUではIntelに大きく水を開けられていますが、グラフィックボードではそこそこ健闘しています。NVIDIAという巨人がいるものの、グラフィックボードは価格がそもそも高いので稼ぎ頭です。

もしグラフィックボードが売れなくなってしまうとAMDとしても困ります。

例えばRyzenにオンボードグラフィックスを内蔵してしまうと、ゲーマーでない限りはオンボードグラフィックスで十分なのでグラフィックボードを買おうとしません。そうなるとグラフィックボードを売りたいAMDとしては好ましい展開ではありません。

Ryzenはあくまでも汎用プロセッサ。グラフィックプロセッサが欲しいなら別途グラフィックボードを購入する方向に持っていくほうがAMDとしても望ましいということです。

Ryzen 7とRyzen 5と同じく、Ryzen Threadripperも残念な結果に

私は2017年5月15日にスペックがリークされたRyzen Threadripperに注目していました。しかしその少し後に発売されたIntel Skylake-XのCore i9 7920Xに性能価格ともに完敗してしまいました。

それどころかCore i7 7820Xでも十分Ryzen Threadripperに勝ててしまいました。詳細はこちらにまとめていますが、これもまた敗因は1コアあたりの性能の低さです。コア数を愚直に増やしていくだけでは限界があることを示しました。

まとめ:
動画エンコードや音声エンコード等のマルチメディア処理専門ならRyzenもあり
ウェブサイト閲覧、Youtube再生、Word・Excel文書作成などの一般的用途ならIntel Coreが優秀

私から見ればRyzenプロセッサは動画エンコードのようなマルチメディア並列処理をひたすら実行する特殊な限られた人向けのCPUです。またPUBG等のFPSゲームを除く、大多数のゲームともRyzenはマッチします。

ウェブサイト閲覧をする、Youtubeを再生する、Excelで簡単な表を作ったりWordでレポートを作成するといった用途ならIntel Coreが優秀です。

また学生等で機械学習を専門にする研究室に配属された場合や機械学習系の科目を履修した場合、または個人で機械学習(世間で言ういわゆるAI、ディープラーニング)をやる場合はIntel Coreがおすすめです。Visual Studioで.NetFrameworkを使ってプログラミングしたりPythonを使う人でもIntel Coreがおすすめです。.NetFrameworkなら自動的にIntel Math Kernel Library(MKL)を使うように中間コードを変換し実行してくれるため数値計算をする人でもIntel Coreがマッチします。当然native C++で書く場合にもIntel Coreのほうが性能が高くなります。

動画や音楽(ハイレゾのような高サンプリング周波数のデータ)といったマルチメディアデータのエンコード処理をひたすらやるのなら、Intel CoreではなくAMD Ryzenが十分いい選択になると言えます。

ただ動画の編集自体はIntel Coreが優秀です。編集作業では1コアあたりの性能の高さが重要なためです。

Youtuberをやっていて動画のエンコード処理を日常的に行っていたり、録画が趣味の人はRyzenでいいでしょう。

Ryzenがオンボードグラフィクスを削ったことには目を瞑って、Ryzenの1コアあたりの性能がIntel Coreより高ければRyzenにも存在価値はありました。しかし実際はRyzenがIntel Coreに性能でも負けてさらにオンボードグラフィックスが付いていないとなると、合理的判断をするならばIntel Coreを選ばざるを得ません。感情で判官びいきでもしない限りRyzenの選択はありません。

しかしRyzenには「型番のグレードが同じならIntel Coreより安い」といった最終手段のメリットがあります。つまりCore i7 9700KよりRyzen 7 2700Xが安いといったメリットです。「性能は高いけど価格も高いIntel Core」「性能は低いけど価格も安いAMD Ryzen」といった棲み分けは、実はIntelとAMDがRyzen登場以前からずっと実施してきた業界棲み分けの構図と全く一緒です。

最近AMDは「お金の無い人向けのローエンドのAMD Ryzen」といったイメージを払拭したがっており、Apple社のような高付加価値な企業イメージに塗り替えたいと考えているようですが、実際は今でも「Intelは高くて選べずお金を買う人がない人が選ぶのがAMD」になってしまっているのが現状です。

今後のAMD RyzenとIntel Coreの展望

2019年5月27日にZen2アーキテクチャを採用した第3世代Ryzen 3000シリーズが発表されました。

それに先立つ2018年の年末頃から海外のリークサイトから第3世代Ryzenのスペック情報が発信されていました。

その最たるものだったのは「Ryzen 9 3850Xなる16コアのCPUが存在し動作クロックは4.3GHz~5.1GHzに届く」というものです。それらは全て海外AdoredTVの偽リークをソースとしたもので、2019年6月に第3世代Ryzenが正式発表されて「実際のスペックは相当低い」ことが明らかになるまでそのリークがあたかも公式発表かのように使われ続けていました。特にブーストクロックが5.1GHzに届くというのは魅力的だったらしく、AMDユーザの間では「最大クロック5GHzの大台達成は堅い」というコンセンサスがあったくらいでした。

しかし実際に発表されたものはフラッグシップモデルのRyzen 9 3950Xですら動作クロックはたったの3.5GHz~4.7GHzでした。ベースクロックが非常に低いだけでなくブーストクロックが5GHzの大台に届かなかったのです。これは「Ryzen 7 2800Xが発売される」という情報が拡散されていた2018年よりも期待はずれのリーク報道でした。

Ryzen 9 3950Xは台湾TSMC社が製造し、7nmプロセスを採用したチップです。これは第1世代Ryzenで採用されたGlobalFoundries14nmの「2倍」の集積度を持つことになります。

まず重要なことは、Intelの14nmとAMDの14nmでカタログスペックでは同じ「14nm」でも、Intelの14nmプロセスのほうが高い集積度を達成しているという事実です。14nmプロセス時点でも既にIntelとAMD(GlobalFoundries)で集積度に差がついていたことが、1コアあたりの性能でRyzenが負けている上にRyzenは内蔵グラフィックス(iGPU)を削ってチップ面積を確保しなければならない要因でした。それにより、Intelでは14nmプロセスで内蔵グラフィクスを搭載しながらも8コアを実現していますが、Ryzenは14nmプロセスで内蔵グラフィクスを削って8コアを実現しなければならない結果となりました。

さらには少し微細化が進んでGlobalFoundries12nmプロセスを採用した第2世代Ryzen 7 2700Xでも最大で8コアしか搭載できませんでした。しかも第1世代と同じように内蔵グラフィックス(iGPU)を搭載するスペースを作れず、iGPU非搭載品です。

一方でIntel14nmプロセスを採用したCore i9 9900K,Core i7 9700Kは8コアを搭載しつつもiGPUを搭載するスペースを確保し、グラボなしでも4K@60fpsトリプルディスプレイ出力を可能にしています。つまりAMD12nmプロセスと、Intel14nmプロセスの時点でも、AMDの集積度はIntelよりも劣っていたということです。

第3世代Ryzen最高峰のRyzen 9 3950Xでも最大動作クロックはたったの4.7GHzに

Ryzenを買ってしまったユーザがひたすら気にしていたのは、「RyzenはIntel Coreよりも動作クロックが低く1コアあたりの性能が低い」というものです。

2017年に第1世代Ryzenがリリースされたのとほぼ同時にPUBGというFPSゲームが不幸にも大流行し、PUBGでは1コアあたりの性能の高さがフレームレートを伸ばす上で重要なため、1コアあたりの性能が低いRyzenではフレームレートが低くなることが明らかになってしまいました。

そのためゲームのフレームレート性能を重視するプロゲーマーの間でRyzenは全くといっていいほど採用されてきませんでした。

プロゲーマーではなくTwitchやYouTubeで配信する著名ストリーマーからも採用されませんでした。ゲームと配信を同時に1台のPCで実施するならコア数が多いRyzenが有利になるはずですが、コア数の多さが有利になるのはあくまでも動画エンコード部分だけであって、肝心のゲーム本体のフレームレートが伸びなくては意味がないのでRyzenが採用されないという憂き目に遭ってきました。

そして2019年6月に第3世代Ryzenが正式発表されるまでの間、「次の第3世代Ryzenでは最大動作クロックが5.1GHzになって1コアあたりの性能が上がる」といった報道が海外のAdoredTVでリークされ、国内のAMDユーザもそれを心待ちにしていました。

しかし実際に正式発表された第3世代Ryzen 9 3950Xでさえ動作クロック上限4.7GHzであり既にIntel Coreが2018年の時点でも達成していた5.0GHzを達成できませんでした。Ryzenユーザは「10nmプロセスのIntel Coreは動作クロックが伸びないだろう」と予測をしていましたが、それがまさかのブーメランとなって「7nmプロセスのAMD Ryzenでは動作クロックが伸びない」という結果になってしまったわけです。

しかもコア数が少ない6コアのRyzen 5 3600X、8コアのRyzen 9 3800Xでもベースクロック4GHzに届かなかったのは残念なところです。

8コア16スレッドのRyzen 7 3800Xでも動作クロック最大4.5GHz止まり

第3世代Ryzenで8コアの製品は2つラインナップされています。そのうちより高性能なのはRyzen 7 3800Xであり、動作クロックは3.9GHz~4.6GHzです。2019年発売のCPUでもその程度になってしまいました。

一方で2018年発売のCore i9 9900Kは全コア同時動作でも4.7GHzまで動作クロックが定格で上がるようになっています。これはオーバークロックを手動でやらなくても定格範囲内で自動的に8コア全てが同時に4.7GHzになります。

仮にRyzen 7 3800Xが全コア同時4.6GHzに対応しているとしても、1年も前に発売されたIntel Coreよりも低い動作クロックになってしまったことを意味します。

しかも実際はRyzen 7 3800Xの最高4.6GHzという動作クロックは全コア同時ではなく一部のコアだけが4.6GHzに届くというだけです。

プロセスの微細化は消費電力やコア数では有利になるが動作クロックの向上では不利 リーク電流の増大が原因

プロセスの微細化にはメリットとデメリットがあります。本項目で解説する「リーク電流」が顕在化するまでは、プロセスの微細化のデメリットはほとんどなく「低消費電力化」「チップ面積の縮小による歩留まり改善」「スイッチング性能の向上」というメリットだらけであり、デメリットは「配線遅延の悪化」くらいでした。しかしリーク電流の問題化が顕在化してくると、微細化で低消費電力化と面積の縮小は達成できても回路性能の向上は鈍ってきました。

実際に7nmプロセスを採用したAMD Radeon VII(3840コア)は12nmプロセスのNVIDIA GeForce RTX 2070(2304コア)に大敗しています。

プロセスの微細化の第一のメリットは動作クロックを維持したまま電圧と電流を下げることができることによる低消費電力化です。

AMDにとっても最も関心があるのは「低消費電力化」です。12nmプロセスを採用した第2世代Ryzenの動作クロックを維持したままで、7nmプロセスにするだけで消費電力が下がるからです。

ここで「7nmプロセスにして消費電力が下がって終わり」、だと「とにかく高性能なCPU」を志向する自作PCユーザに魅力的に映りません。そこでこの余裕のできた消費電力を「コア数の増加」または「動作クロックの上昇」に割り当てるのがAMD Ryzenの戦略です。

第3世代Ryzenでは7nmプロセスに移行してできた消費電力の余裕を「コア数の増加」に割り当てました。そのためコア数が12nmプロセス第2世代Ryzenの8コアから16コアになっているわけです。

しかしその引き換えとして動作クロックの引き上げには失敗しました。つまりベースクロック4GHz台、ブーストクロック5GHzの大台は第3世代Ryzenでは諦めたわけです。これはNVIDIA vs. AMDでも同じで、1コアあたりの性能ではNVIDIAに勝てないということでAMD Radeonではコア数の多さでマウントを取っています。

実際に2019年5月の第3世代Ryzen発表時に、AMDが自ら「今回の7nmプロセスは以前の12nmプロセスと比較して半導体回路としての性能は上がっていない。しかし消費電力は下がった。性能向上はアーキテクチャの改良で実施した」と表明しています。

さらにもっと重要な事実があります。これは2007年以前からIEEEやACM等のコンピュータ・サイエンス学会論文誌で指摘されていたことですが、「微細化が進むとリーク電流が増加するため動作クロックを引き上げることが難しい」という大きな問題があります。

半導体というのはゲートの電圧を変化させることで、ドレイン~ソース間の電流のONとOFFのスイッチを実現できる素子です。しかし半導体の微細化が進むと、演算を行っていない(スイッチング動作していない)OFF状態の半導体でも電流が流れてしまう「リーク電流」が急増します。何もしていなくても流れてしまうのでstatic電流ともいいます。

オーバークロックするときになぜ電圧を上昇させるかというと、高い動作クロックの実現のためには高周波成分を減衰させないことが必要であり、高周波成分を減衰させないためには高い電圧が必要だからです。

つまりCPUの動作クロックを上昇させるということは電圧を上昇させることが必ず伴います。しかし微細化が7nmのように進んでくると、高い電圧はリーク電流を急増させてしまいます。微細化が進むということは絶縁性が低くなることを意味するので、絶縁が弱いのに電圧を上昇させてしまうとリーク電流が大きく増えてしまう結果になります。消費電力は電流の大きさの2乗に比例するため消費電力も急増してしまいます。結果的に発熱量が増えて半導体のスイッチング性能が低下します。半導体は回路をON、OFFすることでBool代数論理回路を実装しているわけですが、発熱量が増えるとこのスイッチング性能が悪化します。「冷却ができないと性能が低くなる」ことは多くの人が経験則で知っていると思いますが理論的には以上のように説明できます。

よって7nmプロセスのように微細化が進んだ半導体では動作クロックを上げることが非常に難しく、必然的に「1コアあたりの性能が低いCPU」ができあがってしまいます。

実際、7nmプロセスを採用したRadeon VIIは12nmプロセスのRadeon RX Vega 64と動作クロックはほぼ同じでした。

プロセスの微細化は半導体の「スイッチング遅延」を短縮し改善する効果はあります。各社も低消費電力化に加えてこのメリットを狙って微細化をしています。しかし「配線遅延」は微細化によりむしろ悪化することが明らかになっています。この両者を足したのが「伝搬遅延」であり(伝搬遅延=スイッチング遅延+配線遅延)、この伝搬遅延を短縮することがプロセッサの高速化に必要です。

7nmへの微細化による配線遅延の悪化でトータルとしての伝搬遅延が改善しなかったことが、「TSMC7nmで半導体回路自体の性能は上がっていない」とAMDが公式に認めた理由です。つまり微細化のメリットではなくアーキテクチャの改良で性能向上したことになります。

さらにこの微細化によるスイッチング遅延の低下のメリットも、先程の「クロック上昇→電圧上昇→リーク電流増大→高消費電力化→スイッチング性能低下」が発生してしまうと打ち消されてしまいます。第3世代Ryzenで5GHzが達成できなかった理由はこういった事情によるものです。

7nmや5nmプロセスといった微細化は、動作クロックを上昇させて1コアあたりの性能を向上させる用途では不向きです。微細化されたプロセッサが向くのは、512コアのように非常に多くのコアを用意して各コアの動作周波数を1GHzのように非常に低くするサーバ用途です。またはTDP15W、TDP5Wのような低消費電力を志向するラップトップやスマートフォン等のモバイル向けの用途です。低消費電力こそプロセス微細化のメリットそのものだからです。

よって、消費電力はおかまいなしに絶対性能のみを追求する傾向が強い「自作PCユーザ」からすると、今回の第3世代Ryzenは1コアあたりの性能が大して向上せず、PUBGのような1コアに大きな負担のかかるFPSゲームをプレイするプロゲーマーから再び見向きされないプロセッサになってしまったということです。

内蔵グラフィックス非搭載でグラボなしではディスプレイが映らない第3世代Ryzenが、内蔵グラフィックスを搭載していてグラボなしでディスプレイが映るIntel Coreに汎用コア性能でも負ける

さらに付け加えると第3世代Ryzenは内蔵グラフィックス(iGPU)を搭載していません。内蔵グラフィックスを搭載してしまったらそれが足かせになりIntel Coreに勝てないので、内蔵グラフィックスを削り汎用コアにチップ面積を割いているのが第1世代Ryzenから第2世代RyzenでもAMDが採用している方針です。

一方でIntel Coreは内蔵グラフィックスを搭載しているのでその分だけ汎用コアに割り当てることのできる半導体数(チップ面積)はIntel Coreのほうが少ないです。それなら内蔵グラフィックスを搭載しておらずチップ全体を汎用コアに割り当てることができる第3世代Ryzenのほうが勝たないとおかしいことになりますが、結果は逆となってしまいました。

つまりゲーム用のグラボが不要な法人用途のために内蔵グラフィックスを搭載しているIntel Coreよりも、内蔵グラフィックスが搭載されておらずグラボ無しでは画面が映らない第3世代Ryzenの8コアが下回ったということは、TSMC7nmプロセス&Zen2アーキテクチャをもってしても14nmプロセスのIntel Coreにすら勝てていないことになります。

Intel10nmプロセスは、Ryzenで採用される台湾TSMC7nmプロセスよりも1.35倍の集積度向上

先程は微細化のメリットとデメリットについて学術的観点から記載しました。微細化は低消費電力化とスイッチング遅延縮小というメリットがある一方で、リーク電流の増大と配線遅延をむしろ悪化させるデメリットがあるということです。

ここからは各社の微細化の展望を見ていくことにします。

Ryzenを製造するTSMCは14nmから7nmプロセスに移行するにあたって、単純計算通りの「2倍」の集積度向上しか達成していませんが、Intelの10nmプロセスはアーキテクチャレベルと半導体回路実装(ロジック)レベルを横断的に最適化することで「2.7倍」の集積度向上を達成することになりました。一時期、Intelの10nmプロセスはこの「2.7倍」のハイパースケーリングを達成できないらしいという報道がされていましたが実際は2.7倍のハイパースケーリングを達成できてしまいました。

これはIntel10nmプロセスで製造された集積回路が、台湾TSMCの7nmプロセスで製造された集積回路の1.35倍の集積度を持つということです。しかもこの1.35倍は「14nmプロセスの集積度がIntelと台湾TSMCで同等である」というIntelにとって控えめな前提でも達成できる倍率です。実際は上述したように、14nmプロセスの時点でもIntelのほうが集積度が高いため、1.35倍よりもさらに高い倍率で差がつくことになります。

Intel7nmはTSMC5nmの2倍の集積度になり差が広がる

そしてRyzenを製造する台湾TSMCは5nmプロセスを実現してもそれは7nmプロセスからみて、1.4倍の集積度向上にとどまります。一方でIntelは10nmプロセスから7nmプロセスへの移行において、集積度を2倍向上させます。

これは14nmプロセスを基準にすると、Ryzenを製造する台湾TSMCは5nmプロセスにおいて2倍×1.4倍=2.8倍の集積度向上しか達成できないことになります。

一方でIntelは14nmプロセスを基準にすると、7nmプロセスにおいて2.7倍×2倍=5.4倍の集積度向上を達成します。

つまり台湾TSMCの5nmプロセスは14nmプロセスの2.8倍の集積度向上にとどまり、Intelの7nmプロセスは14nmプロセスの5.4倍の集積度向上を達成することから、TSMCの5nmプロセスで製造されたRyzenはIntel7nmプロセスで製造されたCoreの1/2の集積度しか持たないということです。これが「5nmプロセスの台湾TSMCと7nmプロセスのIntelを比較すると2倍の差がつく」と言われている理由です。

なぜこのように差がついてしまうかというと、RyzenはAMDでマイクロアーキテクチャレベルの設計をし、実装は台湾TSMCに委託するという「分業」を行っているからです。つまりアーキテクチャレイヤーとロジックレイヤーそれぞれでの局所的最適化しかできないため、14nmから7nmプロセスへの移行でたった2倍の集積度向上しか達成できていません。

他方Intelではアーキテクチャ設計もロジック実装もIntel一社で実施しているため、複数のレイヤーを横断的に大域的最適化することができます。それが14nmから10nmプロセスへの移行で2.7倍の集積度向上に繋がっています。

ハードウェアとソフトウェアを横断的に最適化して設計する「ハードウェア・ソフトウェア協調設計(Co-Design)」という分野がありますが、Intelが実施しているのはマイクロアーキテクチャと半導体ロジックの協調設計です。

2019年初頭に発売されるTSMC7nmプロセス採用のRyzen 3000シリーズは、第10世代Intel Coreに打ち負かされることが確定しているので、急ぎでない場合はより高速な第10世代Intel Core発売を待ったほうがいいでしょう。

【参考文献】

第3世代AMD RyzenではどのようにIPCを向上させたのか理解するためにパイプライン、リザベーションステーション、リオーダバッファ、レジスタリネーミング、分岐予測、キャッシュコヒーレンシあたりの分野が重要です。特にZen2アーキテクチャではパイプラインのストール防止とキャッシュの関連の理解が重要になります。体系的に詳説されている通称ヘネパタで有名な以下の著書がおすすめです。

Computer Architecture, Sixth Edition: A Quantitative Approach (The Morgan Kaufmann Series in Computer Architecture and Design)

最新版を読むのがベストですが少し古い第5版は日本語訳で出ています。私も学部時代に読みました。翻訳陣が豪華です。監修者はReconfigurable Computingで有名な天野英晴教授であり、実際に翻訳している人達もコンピュータアーキテクチャの専門家で、この分野では有名な坂井修一教授の研究室でPh.Dを取得した准教授が翻訳に携わっています。文系が翻訳してる日経BP出版のパタヘネよりおすすめです。

ヘネシー&パターソン コンピュータアーキテクチャ 定量的アプローチ第5版

学部3~4年か学部卒業者、または修士以上の人なら簡単に読めると思います。

また慶應義塾の天野研によると原著6th edition(2017)の翻訳が進んでいるようです。邦訳書の最新版が欲しい場合はもう少し待ってみるといいかもしれません。