レビュー
Coffee Lake-Sは「6コア版Kaby Lake-S」なのか?
Core i7-8700K,Core i5-8400
「Core i7-8700K」「Core i5-8400」レビュー。第8世代CoreのデスクトップPC向け6コアモデルはどれだけ速いのか
それを受けた後編となる本稿では,もう少しミクロな視点から両製品を見ていくことにしたい。とくに,Kaby Lake-S世代との間にCPUコアレベルで違いはあるのか,コア数が増えたことによる内部的な影響はあるのか,そしてコア数に比例した性能が得られるのかといったところを,検証してみたいと思う。
なお,比較対象として用意したCPUは,Kaby Lake-S世代の最上位モデルである「Core i7-7700K」(以下,i7-7700K)と,競合の8コア16スレッド対応CPU「Ryzen 7 1800X」および6コア12スレッド対応CPU「Ryzen 5 1600X」の3製品で,これはレビュー前編と変わらない。主役を含めた主なスペックは表1のとおりとなる。
Coffee Lake-Sでコアの改良による性能向上はあるのか
北米など一部地域で発売になったこともあり,Coffee Lake-Sに関してはIntelからデータシートなどいくつかの公式な資料が公開になっている。
すでにネットで多くの情報が出回っているので,ここで細かく繰り返しはしないが,Kaby Lake-SやSkylake-Sと同じLGA1151パッケージを採用しながらCoffee Lake-Sが後方互換性を持たないことについては,データシートにヒントがある。
まず,Coffee Lake-Sでは,Kaby Lake-Sまで予備(Reserved)とされていた一部のピンが電源に切り替えられている。これは最大6コアとなったCoffee Lake-Sで増加したコア電源(Vcc)の最大電流に対応するためだ。具体的には,Kaby Lake-SまでVccは最大100Aだったものが,Coffee Lake-Sでは最大138Aと,ピークが38Aも増加していたりする。それに対応するため,これまで予備だったところを使って電源ラインを増やしたわけである。
もっとも,電源の強化は「従来のLGA1151対応マザーボードがCoffee Lake-Sに対応できない理由」にはなるものの,Intel 200およびIntel 100シリーズチップセットがCoffee Lake-Sをサポートできない理由にはならない。
1つ考えられるのは,Intel 200&100シリーズチップセットを使ったCoffee Lake-S対応とそうでないマザーボードが市場で混在するのを避けるために,Intel 200シリーズへリビジョン切り替え程度の変更を加えたうえで「Coffee Lake-S対応チップセット」とした可能性だ。Intel 300シリーズがCoffee Lake-S対応で,Intel 200&100シリーズは非対応としたほうが市場――自作市場というよりはOEM PC市場――の混乱が少ないという判断が働いたのかもしれない。
……というようにCoffee Lake-Sの外部仕様はデータシートからいろいろと判明しているのだが,内部仕様については依然として情報がそれほどない。ユーザーとして気になるのは,Coffee Lake-Sで性能を向上させるような改良が加えられているのかどうかだろう。
ちなみに,IntelはHEDT(High-End DeskTop)システム向けのCPUであるCore Xシリーズのうち,開発コードネーム「Skylake-X」と呼ばれていたモデルで内部バスを一新し,従来のリングバスからメッシュアーキテクチャ(Mesh Architecture)への切り換えを行っている。
リングバスはコア数が増えると輻輳(ふくそう)の問題が表面化するため,リングバスを二重化するなどの手法をIntelは取ってきたわけだが,今度はそれによってコア間の距離が非対称になるといった問題が出ていた。そこで,最大18コアという多数のコアを集積するSkylake-X世代では,内部で格子状に高速バスを配することによってコア間の非対称を解消し,マルチコアの効率を引き上げようとしているわけだ。
このメッシュアーキテクチャをCoffee Lake-Sが採用しているかどうかがひとつのポイントになるが,筆者の独自取材によると,採用はされていない。つまり,コア間やコアとアンコア部をつなぐ高速バスはKaby Lake-Sと同じリングバスのままというわけである。
下は「CPU-Z」(Version 1.81.0)をi7-8700Kとi5-8400,i7-7700Kで実行した結果だが,i7-8700Kとi7-7700Kでサポートする命令セットは同じだ。一方,i5-8400はTSX命令をサポートしない点が異なっている。もっとも,SkylakeやKaby Lake世代のCore i5&i3もTSX命令はサポートしていなかったので,その意味では前世代と変わっていない。
ちなみに,TSX命令はマルチスレッドにおけるメモリ競合の問題を簡素化して高速化を計る命令セットだ。従来のデスクトップPC向けCore i5&i3は4コア4スレッド対応や2コア4スレッド対応の製品がメインだったので,TSX命令の必要性もさほどなかった。その意味において,i5-8400Kは6コア6スレッド対応なので,TSX命令のサポートはあったほうがいいのだが,一般向けアプリケーションでTSX命令は現状,ほとんど使われていないという現実もあるので,従来どおり,ミドルクラス以下のCPUではサポートが省略されているのだと思われる。
なら,Coffee Lake-SはKaby Lake-Sを単に6コア化した「だけ」なのかというと,そうとも言い切れない。というのもIntelは,Kaby Lake Refreshベースの2-in-1および薄型ノートPC向け第8世代Coreプロセッサの発表にあたって,設計と製造の両面における最適化をアピールしていたからだ。
Intelの主張を好意的に解釈するなら,リングバスやキャッシュの性能が6コア時代に向けて最適化されていてもおかしくはないが,果たしてどうだろうか? レビュー後編となる本稿のメインテーマはここということになるだろう。
というわけで,さっそくテストのセットアップを紹介したいが,先に言ってしまうと,レビュー前編と完全に同じである。具体的には表2のとおりで,製品名だけでなく個体も100%同一また,ドライバソフトウェアも変更していない。
レビュー前編でもお断りしているとおり,今回はメモリクロックを揃えることを重視する関係から,i7-7700Kでは仕様であるデュアルチャネルDDR4-2400よりも一段高いコントローラ設定にしてあるので,その点はご注意を。
一方,レビュー前編ではゲーマーの常用環境を想定して,Intel製CPUの動作クロック制御機能「Enhanced Intel SpeedStep Technology」(以下,EIST)および「Intel Turbo Boost Technology」(以下,Turbo Boost),またAMD製CPUの「Precision Boost」および「XFR」は常時有効化していたが,今回は必要に応じてこれらの有効/無効を切り換えることになる。詳細は各テストの項目で触れることにしよう。
AIDA64ではおおむね「コア数比に従った性能向上」を確認
最初にテスト結果をチェックするのは,FinalWare製のシステムチェック&ベンチマークツール「AIDA64」(Version 5.92.4358 Beta)である。AIDA64のベンチマークは,古典的なx86およびx87命令やSSE,AVX,AVX-2命令を使用しているため,「従来型のCPU」としての速度比較用として意味を持つ。
まずは,Intel製CPUでEISTおよびTurbo Boostを,AMD製のCPUではPrecision BoostとXFRをいずれも有効化し,クロックも揃えることなくオンにした状態で,クロックを揃えずに実行した結果を見ていきたい。つまり,ユーザーが常用する状態でどの程度の性能が得られるかを調べてみようというわけだ。
以下,表中およびグラフ中に限り,Ryzen 7を「R7」,Ryzen 5を「R5」と表記することと,同じテスト項目のテスト結果を並べる場合であっても,数字の単位が異なるなど,そのまま1つのグラフで掲載すると見づらくなる場合はグラフを複数に分けることをお断りしつつ,テスト結果を順に見ていきたい。
グラフ1は,主に整数演算主体のテスト結果から,4項目を抜き出したものになる。
「CPU Queen」は,古典的なNクイーン問題(N-Queens Problem,n×nの碁盤目状となるボードに,縦横斜めに移動できるチェスのクイーンをn個置くとして,互いに攻撃できないよう配置するパターンがいくつあるか)を解くテストで,AVXおよびAVX2の整数演算を使っているとされるものだ。AIDA64では,パターンの探索をマルチスレッド化してNクイーン問題を解く速度からスコアを算出している。
結果を見ると,i7-8700Kはi7-7700Kに対して約34%高いスコアを示している。
定格クロックはi7-8700Kの3.7GHzに対してi7-7700Kは4.2GHzと,500MHz低い。パーセンテージで言えば約88%だ。一方でコア数は1.5倍になっているため,単純計算では32%高いスコアが出ることになるが,おおむねそのとおりのスコアが出ていると言っていいだろう。
一方のi5-8400だと対i7-7700Kのスコアは約87%。Nクイーン問題はプログラムサイズが小さい,シンプルなベンチマークなので,実行できるスレッド数の違いが素直にスコアを左右してしまうようだ。なお,同じ理由から,8コア16スレッド対応のRyzen 7 1800Xがここではトップに立ってもいる。
続く「CPU PhotoWorxx」は,整数演算を使った写真の加工処理を行うテストで,AVXやAVX2,SSEといったSIMD演算を多用するものである。
結果はほぼ横並びに近いが,僅差でトップになったのは意外にもi5-8400だった。HTTをサポートしないi5-8400のスコアが高いことから、CPU PhotoWorxxはHTTの効果が低い一方,物理コア数は有効なベンチマークと言えそうだ。
スコアを見るとi7-8700Kはi7-7700K比で約95%なのに対し,i5-8400は逆に約5%高い。一方のRyzen勢が振るわないのは,Ryzen勢がやや不得手とするAVX,AVX2を使用しているためだろう。
「CPU AES」はAES暗号化を行うテスト,「CPU Hash」はハッシュ値を求めるテストで,前者ではAES-NI命令を,また後者ではSHA命令をそれぞれ用いる。
CPU AESのスコアでi7-8700Kはi7-7700Kに対し約46%と,コア数比である「1.5倍」に近いスコアの向上が見られた。i5-8400も対i7-7700Kで約25%高いスコアなので,まずまず良好と言っていいだろう。
CPU Hashも傾向はほぼ同じで,対i7-7700Kでi7-8700Kは約46%,i5-8400は約23%高いスコアを示している。専用の命令セットを用いるため,HTTよりはコア数と動作クロックに応じた性能向上が得られている印象がある。
なお,スコアの並びを見るとCPU AESやCPU HashではRyzen 7 1800Xが頭一つ抜けているが,過去にも同じ傾向が出ているので,Ryzen系の特徴と言えるようだ。
Ryzen 5 1600Xのスコアは低めに見えるかもしれないが,Ryzen 7 1800X比だとCPU AESが約78%,CPU Hashで約75%というスコアなので,CPUコア数比から見て妥当である。
次にグラフ2は,整数演算テストから,古典的なx86命令のみを使ってデータの圧縮および展開を行うテスト「CPU Zlib」の結果である。
ここでi7-7700Kに対してi7-8700Kは約44%,i5-8400は約1%高いスコアを示した。古典的なx86命令でもコア数,スレッド数に応じたスコアの向上は得られる,ということだろう。また,x86命令セットはHTTによるリソースの競合が比較的緩やかと考えられるのだが,それゆえにHTTをサポートしないi5-8400のスコアがi7-7700Kと同程度になったものと考えられる。
ちなみに,このテストではRyzen系の強さが目立つが,これも過去のテストで出ていた傾向だ。Ryzen 5 1600XのスコアはRyzen 7 1800Xの約75%で,見事にコア数比の結果になっているのも面白い。
結果的にRyzen 7 1800Xはコア数とスレッド数の力でi7-8700Kを上回り,コア数,スレッド数が同等のRyzen 5 1600Xはi7-8700Kに及ばない格好になった。
続いてAIDA64から,浮動小数点演算を使うテストの結果を見ていきたい。グラフ3は,6項目中4項目のスコアをまとめたものになる。
「FPU VP8」はVP8形式のエンコードを実行するテストだ。このテストは過去のCPUレビューから,CPUによるスコア差が出にくいことが分かっているのだが,それでもi7-7700Kに対してi7-8700Kは約6%,i5-8400も約3%高いスコアを示した。i5-8400でもスコアが伸びることから,スレッド数よりCPUコアの数が多少は“効く”テストのようだ。
とはいえ,過去の結果から考えるにFPU VP8は,CPU性能に直結したスコアを出さないので,参考程度と考えたほうがいいとは考えている。
「FPU SinJulia」は,古典的なx87命令セットを使い,IEEE標準の80bit拡張精度浮動小数点演算でジュリア集合(Julia set,複素平面上である条件を満たす点の集合のこと)を計算するテストである。
結果は,i7-7700Kに対してi7-8700Kが約146%,一方でi5-8400は約91%というスコアになった。ほぼ実行できるスレッド数比に近く,理にかなった結果と言っていいように思う。
ちなみにこのテストはRyzen系がめっぽう強いのだが,今回もその傾向は出ている。同じ6コア12スレッド対応CPU同士の比較だと,i7-8700KはRyzen 5 1600Xの約82%だ。
「FP32 Ray-Trace」は32bit単精度浮動小数点演算を,「FP64 Ray-Trace」は64bit倍精度浮動小数点演算をそれぞれ使ってレイトレーシングを行うベンチマークだ。どちらもAVX系のSIMD演算やFMA命令を使用するとされる。
FP32 Ray-Traceだと,対i7-7700Kのスコアはi7-8700Kが約47%,i5-8400が約12%高い。FP62 Ray-Traceもほぼ似たような結果で,順に約47%,約11%高い結果だ。FP32 Ray-Trace,FP62 Ray-Traceはともにコア数が大きい方が有利で,かつHTTが有効という理解でいいだろう。
定格動作クロックが低いi5-8400でもi7-7700K比で1割を超えるスコアアップが見られることから,HTTよりもコア数のほうが効く,という見方もできると思う。
ちなみにこのテストはRyzenが苦手としており,結果もそのようなものになっている。
さて,浮動小数点演算を使うテストの残り2項目だが,その結果はグラフ4にまとめたとおりだ。
「FPU Julia」は先ほど紹介したジュリア集合の計算を32bit単精度で行うテストで,このテストもSIMD演算やFMAを用いる。ここでi7-7700Kに対してi7-8700Kは約46%,i5-8400は約25%高いスコアを示した。
「FPU Mandel」は64bit倍精度浮動小数点演算でマンデルブロ集合(Mandelbrot set,ジュリア集合と同様に複素平面上で,ある条件を満たす点の集合のこと)を実行するテストで,こちらもSIMD演算やFMAを多用するが,こちらでもi7-7700Kに対してi7-8700Kは約46%,i5-8400は約29%高いという,同様のスコアを示している。
なお,この2テストでもRyzen系はやや苦しく,コアおよびスレッド数の効果で,Ryzen 7 1800Xがなんとかi7-7700Kに匹敵する程度に留まった。
以上をさっくりとまとめるなら,i7-8700Kはi7-7700Kに対し,コア数に応じた性能の向上がおおむね得られているといったところだろうか。一方のi5-8400も,一部を除いてi7-7700Kを上回るスコアを残しており,6コア化に意味のあることが分かる。
言うまでもないが,HTTをサポートしないi5-8400のスコアが相対的に低い場合はHTTが有効に機能しており,高い場合はそうではない。HTTの効果は,CPU内部リソースの競合が起こる処理かどうかで大きく変わる。HTTの効果は実行するソフトウェアによってまったく変わるので,一概にHTTが有効であるとか無効であるとは言えないことが,テスト結果から見てとれるだろう。
続いて,足回りに当たるメモリの性能を見ておこう。グラフ5はAIDA64におけるメモリテスト,「Memory Read」「Memory Write」「Memory Copy」の結果をまとめたものになる。
Intel系CPUは,若干のバラツキがあるものの,おおむね横並びと言っていいように思う。少なくとも,「CPUごとのメモリコントローラ特性」を示すような傾向は出ていないためだ。そしてこのことは,Coffee Lake-Sにおいてメモリコントローラに大きな変更が入った可能性が低いことを示唆している。
なお,Ryzenの2製品は,Intel勢に対して有意に高いメモリバス帯域幅を示す。同じメモリクロックで揃えてこの結果なのだから,メモリバス帯域幅は優秀と言うほかない。
グラフ6はメモリアクセス遅延を見る「Memory Latency」の結果だ。i7-7700Kの47.4nsに対してi7-8700Kは50.9ns,i5-8400Kは54.7nsと,Intel製CPUではCoffee Lake-Sでやや悪化の傾向が見られる。AIDA64のMemory Latencyテストはキャッシュとメインメモリの総合成績を見るものなので,この時点ではどちらが主要因かまでは分からないものの,総合的なメモリアクセス遅延がCoffee Lake-SでKaby Lake-Sより大きくなったことは間違いないだろう。
なお,Ryzen勢は80ns台と,分が悪い。RyzenのDDR4メモリコントローラでアクセス遅延が大きいことは過去のテストから分かっているが,今回もそんなRyzenの弱点を確認した格好になる。
同一クロック設定でコア数分の性能が得られるか確認してみる
以上,常用設定における基本性能の違いを見てきたが,ここからは,テスト対象をIntel製CPUに絞ったうえで,さらに,i5-8400の定格である2.8GHzに動作クロックを固定し,AIDA64を再び実行してみることにした。要は,クロック条件も揃えて,Coffee Lake-SとKaby Lake-Sを比較してみようというわけである。
テストにあたってEISTとTurbo Boostは無効化し,さらに,i7-7700KではHTT有効時だけでなく,無効化して4コア4スレッド対応CPUとして動作させた状態でも検証を行う。これは,6コア6スレッド対応のi5-8400との間で,コア数に応じたスコア傾向が出るかどうかを見るためだ。
そもそも,Turbo Boostを有効化したテストでは,動作クロックが負荷状況によって異なってくる。そのためスコアにぶれが生じるが,それでも常用環境における性能比較を行えるという点で意味があり,それゆえにここまでテスト結果を掲載してきた。
一方,ここからいくつか掲載するテスト結果で注目すべきは,実使用環境における性能比ではない。あくまで,i7-8700Kがi7-7700Kに対してコア数比である1.5倍のスコアが出せるか否か,またi5-8400がHTTを無効化したi7-7700Kに対して1.5倍のスコアが出せるか否かだけをチェックすることになる。1.5倍のスコアが得られるなら「コア数がKaby Lake-S比で1.5倍になったこと」に応じた性能向上が得られていることになり,そうでないなら,CPUの内部に「コア数が増えたことに対応できていない,アーキテクチャ上の欠点」があり,それが性能面で足を引っ張っているということになる。
それを踏まえて見ていきたいが,グラフ7,8は,AIDA64における整数演算ベンチマークの結果となる。ここで注目すべきスコアが出たのはCPU QueenとCPU PhotoWorxxで,まずCPU Queenにおけるi7-8700Kのスコアはi7-7700Kに対して約138%と,目標の1.5倍に及ばない結果となった。
また,i5-8400もHTTを無効化したi7-7700Kに対して約132%と,こちらも1.5倍に達していない。CPU Queenはスレッド間で同じデータを参照することが多いテストなので,それが1.5倍に届かなかった理由ではないかと見ている。
CPU PhotoWorxxはさらに妙な結果で,i7-8700Kがi7-7700Kに対して約96%のスコアしか出せないのに対し,i5-8400はHTTを無効化したi7-7700Kに対して1.16倍と若干の伸びが見られる。グラフ1の結果と合わせて考えるに,CPU PhotoWorxxは,HTTがむしろマイナスに機能する一方,コア数が増えればスコアが相応に上がるテストということなのだろう。
それ以外のテストでは非常に素晴らしい結果になっており,i7-8700Kはi7-7700Kに対して約149〜150%程度と,まさにCPUコア数に応じたリニアなスコア上昇が得られる結果となった。また,i5-8400も同様に,HTTを無効化したi7-7700Kに対して149〜150%程度のスコアを示している。上で述べたとおり,1.5倍のスコアが得られるならばCPU側の仕様に「6コア化を阻害するようなアーキテクチャ上の欠点」はないということになるので,これは良い結果だ。
次にグラフ9,10は浮動小数点ベンチマークのテスト結果をまとめたものだが,こちらも素晴らしい。常に横並びに近いスコアを示すFPU VP8を除けば,i7-8700Kがi7-7700Kに対して,i5-8400もHTTを無効化したi7-7700Kに対して,それぞれ約50%高いスコアを叩き出している。
クロックを揃えるという条件の下で,CPUコア数に応じてここまでリニアにスコアを伸ばすというのは,なかなか難しいことだ。おそらくは,CPUコア数に応じて性能向上が得られるよう,キャッシュやリングバスに何らかの改良を加えてあるのではないかと思う。「Kaby Lake-Sを単に6コア化しただけのCPU」ではないと言えそうだ。
キャッシュやリングバスの高性能化が,コア数に比例した性能向上を生む
ここからは,SiSoftware製のシステム検査&ベンチマークツールである「Sandra」(Version 2017.06.24.27,以下 Sandra 2017)の結果を見ていこう。
Sandra 2017では,キャッシュやメモリのアクセス遅延などをAIDA64より詳細にチェックできるので,Coffee Lake-Sでコア数に応じた性能が得られる理由が多少なりとも見えてくるかもしれない。
テストはここでもまず,常用設定での比較から始めよう。グラフ11はCPUの演算性能を見る「Processor Arithmetic」の総合スコア「Aggregate Native Performance」だ。
i7-7700Kと比較して,i7-8700Kは約46%高いスコアが得られた。この「40%台後半」というのは,AIDA64のテストでよく出てきた数字である。一方のi5-8400は約95%というスコアに留まった。
“総合順位”はRyzen 7 1800Xがトップで,2番手以降はi7-8700K,Ryzen 5 1600X,i7-7700K,i5-8400という並びである。同じ6コア12スレッド対応のCPUでi7-8700KとRyzen 5 1600Xのスコア差が大きいが,これは動作クロックとIPC(Instruction Per Clock)の違いが出たためだろう。
Processor Arithmeticの個別スコアをまとめたのものがグラフ12となる。i7-7700Kに対してi7-8700Kは安定的に45〜46%程度高いスコアを示しているので,コア数およびスレッド数に比したスコア向上率が得られていると言っていい。
それと比べると,i5-8400は対i7-7700Kのスコアが82〜109%程度で,やや出入りが激しい。とくに浮動小数点演算のテストである「Whetstone」の2項目で大きく離されているのは目を惹くところだ。
Whetstoneはプログラムサイズが小さいテストで,HTTによるマイナスの影響も小さいと考えられる。よって,実行できるスレッド数が6と少ないことがi5-8400のスコアに直結したのだろう。
CPUでマルチメディア処理を行う「Processor Multi-Media」の総合スコアにあたる「Aggregate Multi-Media Native Performance」。そのスコアをまとめたものがグラフ13である。
ここでもi7-7700Kを基準にすると,i7-8700Kは約146%,i5-8400は約95%というスコアになった。グラフ21で示したProcessor Arithmeticの総合スコアと一致しており,その意味で矛盾のない結果と言える。
Ryzen系はProcessor Multi-Mediaのスコアがやや振るわないが,これはRyzenが苦手とするAVX-2やFMAを用いるテストが含まれているためで,Ryzenの特性が出た結果である。
Processor Multi-Mediaの個別スコアはグラフ14,15にまとめた。i7-8700Kは古典的なx86命令セットを使う「Multi-Media Quad-int Native x1 ALU」で対i7-7700Kのスコアが約139%と若干低めなのを除けば,総合スコアを踏襲した,対i7-7700Kで45〜48%程度高いスコアが得られている。
i5-8400の場合,最も成績が悪かったのはMulti-Media Quad-int Native x1 ALUで,ここだと対i7-7700Kのスコアは約81%となった。i5-8400が実行できるスレッド数は対i7-7700Kの75%なので,スコアはスレッド数比に近いものになっているとも言え,つまり,Multi-Media Quad-int Native x1 ALUはHTTの効果が大きく表れるということになる。
古典的なx86命令セットは,命令実行にあたって内部リソースの消費が少ないので,HTTが有効に機能するということだろう。
AVX2を用いて単精度の演算を行う「Multi-Media Single-float Native x64 AVX512F,AVX2」と,やはりAVX2を用いて64bit倍精度演算を行う「Multi-Media Double-float Native x32 AVX512F, AVX2」,そして4倍精度でFMAを使った演算を行う「Multi-Media Quad-float Native x2 FMA」においても,i5-8400はi7-7700Kに届かない。これらでi5-8400のスコアが低いのは,Processor AlithmeticのWhetstoneと同じ理由によるものだろう。
CPUを用いた暗号化の性能を調べる「Processor Cryptographic」の総合スコア「Cryptographic Bandwidth」をまとめたものがグラフ16だ。
ここでi7-7700Kに対してi7-8700Kは約18%,i5-8400は約9%高いスコアを示した。コア数比に応じたスコアが得られているとはいい難いものの,総合スコアはそれなりに伸びている印象は受ける。
Processor Cryptographicの個別スコアはグラフ17にまとめた。
暗号化にあたってAES命令セットを使う「Encryption/Decryption Bandwidth AES256-ECB AES」で,i7-8700Kはi7-7700Kの約97%に留まり,i5-8400はむしろ約1%高いというスコアになった。アクセラレーションの一種であるAES命令セットを使う場合,コア数やスレッド数に即したスコアが得られないわけである。Intel製のCPUではAES命令セットにCPUとは別の固定ハードウェアを使っているため,CPUコアとスループットに相関がないのだろう。
Ryzenではコア数に応じた性能向上が見られるので,AES命令セットの実装が異なるようだ。
一方,AVX2を使う「Hashing Bandwidth SHA2-256 AVX512, AVX2」だと,i7-7700Kに対してi7-8700Kは約45%,i5-8400は約19%高いスコアを示した。AVX命令を使ったハッシュ計算では,処理できるスレッド数に応じてスコアが伸びている点がAESとの違いということになる。
グラフ18は,科学技術計算を行う「Processor Scientific」の総合スコアにあたる「Aggregate Scientific Performance」の結果である。
ここで何よりも目を惹くのは,i7-8700Kよりもi5-8400のほうが高いスコアを示していること。i7-7700Kとの比較でi7-8700Kが約40%高い数字を示すところ,i5-8400が示しているのはなんと約49%高い数字だ。
なぜこういう事態が生じているのか,個別テストの結果であるグラフ19,20を見てみると,まず,行列計算を行う「General Matrix Multiply (GEMM) FMA」で,対i7-7700Kのスコアはi7-8700Kで約202%,i5-8400で約218%と,いずれも2倍以上のスコアを残している。行列計算は小さいデータに対して多くのアクセスが比較的生じやすいので,Coffee Lake-SとKaby Lake-Sとで,キャッシュ性能の違いが表れている可能性はあるだろう。
ならi5-8400のスコアがより高い理由は何かというと,HTTがあまり有効でない,換言するとCPUの内部リソースの競合が起こりやすいタイプの処理で,それゆえにi7-8700Kが不利ということなのだと思われる。
FMA命令を使って高速フーリエ変換を行う「Fast Fourier Transform (FFT) FMA」の結果も特徴的で,i7-8700Kがi7-7700K比で約98%のスコアに留まる一方,i5-8400は約3%高いスコアを示せている。General Matrix Multiplyと同様,Fast Fourier Transformも同じデータに対して同じ計算を繰り返すタイプの処理なので,HTTによるリソースの競合が起こりやすいのだろう。
一方,FMA命令を使って多体シミュレーションを行う「N-Body Simulation (NBDY) FMA」については,ここまでの結果から見て妥当なスコアが出ていると言える。
なお,Ryzen勢はProcessor Scientific全般で振るわないが,それはすべてのテストで苦手なFMAが使われるためだと考えられる。
グラフ21は,CPUを使った2D画像処理を行う「Processor Image Processing」における総合スコア「Aggregate Image Processing Rate」をまとめたものだ。i7-7700Kと比較して,i7-8700Kは約46%高いスコアで,こちらはおおむね妥当と言っていい。一方のi5-8400は約12%高い程度に留まっている。
Ryzen勢は8コア16スレッドのRyzen 7 1800Xでさえi7-8700Kに届かない。ここでもRyzen勢が苦手とするAVXやFMA命令セットが使われるので,それが理由と見ていいだろう。
Processor Image Processingの個別スコアはグラフ22,23,24のとおりだ。
畳み込みを使って画像のボカシ処理を行う「Blur: Convolution (3x3) Filter x8 AVX2/FMA」でi7-7700Kに対しi7-8700Kのスコアは約140%と若干低めながら,それ以外のテストでは145〜152%程度と,ここまでの結果と比較して妥当な成績を残した。Blur: Convolution (3x3) Filter x8 AVX2/FMAでだけスコアが低めに出た理由はなんとも言えないが,正直,スコアを落とす要因らしきものは考えつかないので,何かしらのブレが生じた可能性はある。
一方のi5-8400では,Processor ArithmeticやProcessor Multi-Mediaと同様に,i7-7700Kに届かないスコアを示すテストが散見される。たとえば画像を油絵調に加工する「Oil Painting: Quantise (9x9) Filter x8 AVX2/FMA」だとi7-7700K比で約88%というスコアに留まるが,こうしたテストは畳み込みの演算が主の,比較的小さいコードでできていると思われる。そのため,「実行できるスレッド数が6しかないこと」が足を引っ張ったのではなかろうか。
CPUコア間でデータ転送するときの帯域幅を調べる「Processor Multi-Core Efficiency」の結果がグラフ25だ。グラフ画像をクリックすると,実スコアのまとまった表3を表示するようにしてあるので,適宜,そちらも参考にしてもらえればと思う。
さて,Processor Mult-Core Efficiencyというのは,ブロック単位かつブロックサイズを変えながらCPUコア間でデータのやり取りを行い,ブロック単位ごとの帯域幅を見るテストだ。
グラフで「16x 64kB Blocks」より左は,L1もしくはL2キャッシュに収まる容量帯で,HTTにおける同一スレッド間の共有データのやりとりが含まれる。そのためHTTが有効なi7-8700Kやi7-7700Kでは帯域幅が大きく出る傾向を確認できるだろう。
一方,L3キャッシュの範囲となる「16x 64kB Blocks Bandwidth」では,i7-8700Kのスコアがi7-7700K比で約71%も高い。このことから,リングバスかL3キャッシュに何らかの改良が加えられた可能性が高いと見られる。
HTTが無効であるi5-8400は「8x 256kB Blocks Bandwidth」より小さなブロックサイズの帯域幅が冴えない。ただそれだけに,L3キャッシュを使ったデータのやり取りとなる「4x 1MB Blocks Bandwidth」ではi7-7700Kに対して約47%高いスコアを示しているのは注目したいところである。
4x 1MB Blocks Bandwidthより上のブロックサイズだとi7-8700Kとi7-7700Kが同じスコア傾向を示しているので,i7-7700Kにおける4x 1MB Blocks BandwidthではHTTが何らかの負の影響を与えている可能性はある。たとえば,L3キャッシュのアクセスにおいて,スレッド間の競合が起きている,などだ。
お次は,CPUの足回りにあたるメモリバス帯域幅を見る「Memory Bandwidth」の総合スコアをまとめたグラフ26と,その個別スコアを並べたグラフ27である。
Ryzenの,同一のメモリクロックなら競合よりも高い帯域幅が得られるという特性は,AIDA64に引き続きここでも確認できる。i7-8700KのスコアはRyzen 7 1800X比で約86%だ。ただ,それよりも気になるのは,Intelの3製品で最も高いスコアを示しているのがi7-7700Kであることのほうではなかろうか。
対i7-7700Kでi7-8700Kのスコアは98〜99%程度,i7-8400のスコアは94〜98%程度。i7-7700Kよりやや低くなっているのだが,メモリクロックや設定は変えていないので,原因は分からない。この程度のスコア差だと,もしかすると,BIOSがまだ成熟していないなど,メモリコントローラ以外に原因があるような気もする。
キャッシュおよびメモリの遅延を計測する「Cache & Memory Latency」の結果はグラフ28だ。ここでも実スコアは別途表4にまとめている。
SandraのCache & Memory Latencyでは,グラフの横軸にあるメモリアドレスレンジに対して書き込みと読み出しを行い,そのアクセス遅延を算出している。
振り返ってみると,グラフ6で示したAIDA64のMemory Latencyだと,i7-7700Kに対してCoffee Lake-Sの2製品はやや遅いという結果になっていた。ではここではどうかというと,必ずしもそうとは言えない結果になっている。
i7-8700Kに関して言えば,「4MB Range」までi7-7700Kとおおむね同程度のアクセス遅延に収まっている。i7-8700Kで「16MB Range」や「32MB Range」でi7-7700Kより有意に小さいスコアなのは,i7-7700Kの8MBに対してi7-8700Kで12MBまでL3キャッシュ容量が大きくなっている影響だろう。
メインメモリの遅延となる「256MB Range」以上では0.4nsの遅延の増加が見られるが,ブレの範囲とも言える。
一方,定格のCPUコアクロックが低めのi5-8400は,「リングバスの動作クロックは,CPUのコアクロックに応じる(※同じというわけではない)」という理由により,L3キャッシュの動作クロックが低くなり,いきおい,「8MB Range」以内の遅延はやや大きくなった。
L3キャッシュ容量が9MBのi5-8400では,メインメモリアクセス遅延の影響が大きくなる16MB Range以上でも遅延はやや大きめだが,メモリアクセス設定は全CPUで同じため,メインメモリの遅延というよりはそれ以外,それこそすぐ上で述べたL3キャッシュの動作クロックなどが遅延を大きくしているはずだ。
グラフ29はキャッシュの帯域幅を見る「Cache Bandwidth」のテスト結果だ。グラフの横軸に示されている「Data set」の単位でメモリに読み書きを行い,1秒間に処理できたデータをまとめたものになっている。ここでも実スコアは別途表5にまとめてあるが,i7-8700Kは「16MB Data Set」以内でi7-7700Kを圧倒している。やはり,キャッシュやリングバスが高速化を果たしていると見るべきだろう。
一方のi5-8400も帯域幅はおおむね良好で,とくに「32kB Data Set」から「256kB Data Set」の帯域幅はi7-7700Kに比べて有意に大きくなっているので,やはり何らかの改良が入っているはずだ。
常用設定におけるテストの最後は,「マルチスレッド環境において,スレッド間でメモリの競合が発生した場合」のメモリ速度性能を見る「Memory Transaction Throughput」だ。
スコアはグラフ30にまとめたが,ここではi7-8700Kとi5-8400との間に大差がついている点に注目したい。これはもちろん測定ミス……ではなく,本稿の冒頭でお伝えした「i5-8400がTSX命令をサポートしていない」ことに要因がある。逆に言うと,RyzemもTSX命令はサポートしないので,サポートするi7-8700Kとi7-7700Kだけが好成績を残す結果になっている。
4Gamerではこれまでも繰り返してきているように,TSX命令セットはまだ,コンシューマ向けアプリケーションで積極的に使われているわけではない。なので,i5-8400(やRyzen)のスコアが,ユーザーに与える影響は,少なくとも2017年中はほぼ皆無だろう。ただ,同じCoffee Lake-Sでも,テストによってはこういう違いが生じることがあり得るというのは,押さえておいたほうがいいかもしれない。
クロックを揃えたSandra 2017でも,Coffee Lake-SはKaby Lake-S比でおおむね1.5倍の性能を見せる
ここまで常用設定でSandra 2017のスコアを見てきたが,ここからは,AIDA64のテスト時と同じように,Intel製CPUだけピックアップのうえ,動作クロックを2.8GHzで揃え,さらにi7-7700KではHTTを無効化した状態をテスト対象に加えつつ,あらためてSandra 2017を実行していこう。動作クロックを揃えることで,コア数に応じた性能が得られているかを,あらためて確認しようというわけである。
グラフ31,32はProcesssor Arithmeticの結果だ。総合スコアではi7-8700Kがi7-7700Kに対して約151%,i5-8400がHTTを無効化したi7-7700Kに対して約151%のスコアで,驚くくらい,コア数およびスレッド数比に応じた結果となった。
個別スコアもほぼ同様。AVX2を使って超古典的な整数演算ベンチマークである「Dhrystone」を実行する「Dhrystone Long Native AVX2」だけ,i5-8400のスコアがHTTを無効化したi7-7700Kに対して約136%のスコアに留まるものの,理由は不明だ。ひょっとすると,テストの実行中に何らかの不定要因が働いてしまった可能性はある。
続いてグラフ33はProcessor Multi-Mediaの総合スコアをまとめたものになる。こちらも驚くほどの好成績で,総合スコアではi7-8700Kがi7-7700Kに対し約150%,i5-8400はi7-7700KのHTT無効化に対して約156%のスコアを示している。
グラフ34,35にまとめた個別スコアでは,マルチメディア処理をAVX2を使った16bit整数演算で行う「Multi-Media Integer Native x128 AVX512/BW, AVX2」においてi7-7700KのHTT無効化に対しi5-8400が約61%高いスコアを示した。また,同じ処理を32bit単精度で実行する「Multi-Media Single-float Native x64 AVX512F, AVX2」でも約56%高いスコアだ。それ以外はおおむね約50%高いスコアといったところだ。
1.5倍を超えたスコア差が出ているところでは,AVX2の性能がCoffee Lake-Sで向上した可能性を示唆している……と言いたいところだが,ほかのテストでそういうスコア傾向は出ていないので,少なくともAVX2性能の違いが生んだものではないと思われる。
グラフ36,37はProcessor Cryptographicの結果だ。
ハードウェアアクセラレーションを使う「Encryption/Decryption Bandwidth AES256-ECB AES」は固定ハードウェアが関与しており,コア数比のスコアにはならないが,AVX命令を使う「Hashing Bandwidth SHA2-256 AVX512, AVX2」ではi7-8700Kがi7-7700Kの約149%,i5-8400はHTTを無効化したi7-7700Kの約150%と,きっちりコア数比のスコアになっている。
Processor Scientificの総合スコアがグラフ38で,ここではi5-8400がトップに立つという,ここまでのテストはかなり違う傾向となった。
個別スコアはグラフ39,40のとおりだ。
General Matrix Multiply (GEMM) FMAのスコアではi5-8400がi7-8700Kより高い成績を残した。小さなデータへのアクセスが比較的多くなるGEMMでは,データアクセスの競合によりHTTがむしろ足かせになっているのかもしれない。
Fast Fourier Transform (FFT) FMAでコア数に応じたスコア向上が得られず,i7-8700Kはi7-7700Kと同程度,i5-8400はHTTを無効化したi7-7700Kよりやや低い同程度のスコアになった。同一データのアクセスが多いFFTでは,競合が起こり,コア数に比例したスコアが得られないということだろう。
Processor Image Processingのスコアは,総合スコアと個別スコアを一気に並べておこう。というのも,グラフ41〜44を見てもらうと分かるように,i7-8700Kはi7-7700K比で49〜51%程度。i5-8400はHTTを無効化したi7-7700K比で50〜52%程度それぞれ高いスコアという,実にキレイなコア数比のスコアになっているからだ。というか,ここまでしっかりとしたコア数比のスコアが出るのは,正直,驚きである。
テストの最後,グラフ45はProcessor Multi-Core Efficiencyである。やはり実スコアをまとめた表6も用意してあるので,適宜参照してもらえればと思うが,ここではL3キャッシュの範囲内となる16x 64kB Blocks以内の容量帯でi7-8700Kがi7-7700Kに対して149〜178%程度というコア間帯域幅を示している。
一方のi5-8400は,HTTを無効化したi7-7700Kに対して,やや低めの帯域幅を記録した。8x 256MB Blocksでi5-8400がやや高いものの,4x 1MB Blocksではi5-8400の帯域が大きく落ち込んでしまっている。グラフの形が両者で明確に違うため,Coffee Lake-SでリングバスかL3キャッシュに何らかの変更が行われたとは言えるが,i5-8400の結果を見る限り,単純に「Coffee Lake-Sで帯域幅が向上した」とまでは言えないようだ。
「付け焼き刃ではない6コアCPU」と言えるCoffee Lake-S
というわけで,Coffee Lake-Sはクロックを揃えた場合,前世代のKaby Lake-Sに対しおおよそ1.5倍の性能をしっかりと出してくるCPUということが分かった。たとえ動作クロックを揃えたとしても,キャッシュや内部バス,メモリインタフェースといった周辺の性能がコア数にの増大に合わせて強化されていなければ,コア数に応じた性能を得るのは難しい。その意味でCoffee Lake-Sは,「Kaby Lake-Sに2コア追加したCPU」ではなく,6コアCPUとしてきちんと性能が出るよう設計してあるプロセッサとまとめることができるだろう。
一方で,クロックあたりの演算性能が向上している形跡は,今回のテストでは読み取ることができなかった。コアクロックを揃えたテストで1.5倍を超えるスコアを出したテストが散見されたことから,部分的にスループットを向上させると言った小改良が行われている可能性はあるが,コア数周りを除くと,Kaby Lake-Sとの違いはほとんどないと言ってよさそうだ。
そういった意味からも,Coffee Lake-Sよりもしっかりと性能を固めてくるであろう次の世代のCPU性能が楽しみである。
「Core i7-8700K」「Core i5-8400」レビュー。第8世代CoreのデスクトップPC向け6コアモデルはどれだけ速いのか
Intel日本語公式Webサイト
- 関連タイトル:
第8世代Core(Coffee Lake,Kaby Lake)
- この記事のURL: