ソフトウェア

一部のCPUベンチマークの計測方法に問題があり正しく性能を評価できていないという指摘


CPU-Zは無料で使用できるハードウェア情報表示ツールで、CPUやマザーボード、メモリなどの基本的な情報を表示できるほか、ベンチマークを計測することも可能です。しかし、ベンチマークの方法に問題があり、正しくCPUの実力を計測できていないという指摘があります。

CPU-Z’s Inadequate Benchmark – Chips and Cheese
https://chipsandcheese.com/2023/11/03/cpu-zs-inadequate-benchmark/


CPU-Zで表示される情報はこんな感じ。PCに搭載しているハードウェアの基本的な情報をコンパクトにまとめて表示してくれます。


「Bench」タブではベンチマークを計測する事ができ、結果を送信して比較する機能も搭載されています。


CPU-Zを利用したベンチマークはAMDのZEN 4とZEN 3の比較図にも登場しました。CPU-ZのベンチマークスコアによるとZEN 4の性能はZEN 3から1%しか向上していないことになっています。


CPU-Zのベンチマークは、SSE命令を使用した単精度浮動小数点数(FP32)の計算テストです。一部の128bitメモリアクセスを除き、SSEのベクトル演算機能は利用せず、ほとんどのSSE命令はスカラーFP32の加算、乗算、変換、または比較です。


SSE命令と大きなディスプレースメントを持つメモリオペランドの影響で、平均命令長は4.85バイトです。平均命令長が長いため、古いIntel CPUではフロントエンドのスループットがサイクルあたり16バイトというL1命令キャッシュ帯域幅によって制限される可能性がありますが、この制限は命令(Op)キャッシュによって軽減でき、実行エンジンがフロントエンドのスループットが問題になるのに十分な高いIPCに到達できる場合にのみ問題となります。


また、CPU-Zベンチマークには典型的なメモリアクセスが混在していますが、ゲーム、圧縮、Cinebench 2024に比べて分岐があまりありません。


CPU-ZはIPCベンチマークで、「Zen 4」「Zen 2」「Kaby Lake」「Goldmont Plus」「Bulldozer」という5つのアーキテクチャでテストしたところIPCはコア幅の半分を少し下回りました。BulldozerはさらにIPCが低くなりました。


上記のうち、Zen 4アーキテクチャのAMD Ryzen 7950X3DおよびKaby LakeのIntel Core i7-7700K、そしてGoldmont PlusのIntel Celeron J4125の3つのCPUの動作をトップダウン解析法で分析した結果が下図の通り。この分析では、CPUのパイプラインスロットがそれぞれのサイクルにおいてどんな仕事をしたのかを5つのパターンに分けて表示しすることでどの要因がボトルネックになっているのかを調査できます。


それぞれのパターンは下記の意味を表しています。

・Retiring
実行に成功したタスクに費やされたサイクルです。

・Backend BoundおよびFrontend Bound
何らかの事情でスロットが空でありタスクを行わなかったサイクル、つまりストール状態のサイクルがこの2項目として計上されます。スロットが空だった理由がフロントエンドによる命令の供給不足であればFrontend Boundになり、一方でロードバッファーなどのリソースが不足しておりバックエンドが命令を処理できない場合はBackend Boundになります。

・Bad SpeculationおよびRecovery
CPUが分岐の結果を予測して投機的に命令を実行したものの、分岐結果が誤っており計算が無駄になってしまった場合にBad Speculationのラベルがつけられます。Goldmont Plusは予測ミスをすぐにリカバリーできず、AMDのAthlonなどと同様に誤って予測されたブランチがリタイアするのを待つ必要があり、そのために費やされたサイクルは「Recovery」となります。

3つのCPUは全てスループットが良好であるものの、バックエンドがボトルネックになっていることが確認できます。バックエンドの中身をさらに詳しく見ていくと、読み込み待ちなどメモリが原因のストールと計算完了を待つことで発生したストールに分解できます。CPU-Zではコアがボトルネックになっています。


ゲームやCinebench 2024など他のワークロードの多くはメモリがボトルネックになりがちですが、CPU-Zは32KB L1データキャッシュ内におさまるほど非常に少量のデータで動作するため、下図の通りキャッシュヒット率が100%に近いレベルで高くなります。


こうしたキャッシュヒット率の高さはフロントエンド側の命令キャッシュでも確認できます。CPU-Zの命令の占有領域が小さいため命令全体をキャッシュに保存でき、「コアへの命令の供給」という要素を計測できていません。


また、CPU-Zの分岐の予測は簡単で、全てのCPUが90%台後半の精度で分岐を正確に予測できました。AMDは分岐予測器の精度向上のために多くのダイ領域を使用してきましたが、CPU-Zのスコアにはほとんど反映されていないというわけです。


ベンチマークは難しく、ユーザーが実行するさまざまなアプリケーションの状況を正確に反映することはできません。ただし、AMDのZenやAppleのA4からA7の設計に関わったマイクロプロセッサエンジニアのジム・ケラー氏がインタビューで語ったように、現在のCPUのボトルネックになりがちなのはメモリアクセスと分岐予測であり、多くのベンチマークはその2つの性能を計測しようとします。CPU-Zのベンチマークは現実の課題とは大きくかけ離れており、CPU設計者にとってもエンドユーザーにとっても役に立たないものとなってしまっています。

元のブログ記事ではさらに詳細な分析が行われているので、気になる人は確認してみてください。

この記事のタイトルとURLをコピーする

・関連記事
Apple・AMD・テスラ・Intelを渡り歩いた天才エンジニアのジム・ケラー氏へのインタビューが公開中、Intelで一体何をしていたのか? - GIGAZINE

AppleのCPUアーキテクチャを巡る歴史 - GIGAZINE

プログラマーが知っておくべき「PC内部の通信速度」 - GIGAZINE

Intelが32ビット対応を切り捨てた新アーキテクチャ「x86S」を開発中 - GIGAZINE

AIを使用してRISC-V CPUを人間のチームより約1000倍速く設計することに中国の研究チームが成功 - GIGAZINE

in ソフトウェア,   ハードウェア, Posted by log1d_ts

You can read the machine translated English article here.