「Skylake-K」とはいかなるCPUなのか。「Core i7-6700K」ベンチマークで新世代マイクロアーキテクチャの実態を探る

 2015年8月5日,開発コードネーム「

Skylake

」(スカイレイク)と呼ばれてきた第6世代Coreプロセッサの第1弾製品となる倍率ロックフリーモデル,「

Skylake-K

」こと「

Core i7-6700K

」「

Core i5-6600K

」がリリースの日を迎えた。

 その製品概要は

別途お伝えしている

が,その記事でも指摘しているとおり,Skylake世代ではCPUのコアマイクロアーキテクチャが刷新されているはずなのだが,現時点で,その詳細はほとんど明らかになっていない。

 そこで今回は,ほぼ手探りであることをお断りしつつ,入手したCore i7-6700K(以下,i7-6700K)を使って基本特性を検証し,その正体に少しでも迫ってみたいと思う。

キャッシュが変わりTSX命令が有効化されたSkylake

 i7-6700Kは,4コア8スレッド対応,定格クロック4GHz,自動クロックアップ機能「Intel Turbo Boost Technology」(以下,Turbo Boost)有効時の最大クロックが4.2GHz,共有L3キャッシュ容量8MBで,デュアルチャネルDDR4-2133およびDDR3L-1600メモリコントローラとグラフィックス機能「Intel HD Graphics 530」(以下,HDG 530)を統合するCPUだ。今回はこれを,MSI製のゲーマー向け「Intel Z170」(以下,Z170)チップセット搭載マザーボード「

Z170A GAMING M7

」に取り付けてテストを行う。

 Z170A GAMING M7というマザーボードの特徴は,追って紹介記事を掲載予定だが,ATXフォームファクタを採用し,発表時点におけるMSIのゲーマー向けZ170マザーボードのラインナップにあって上から2番めのグレードにおかれる製品であることは,ここで紹介しておきたい。

 さて,実際の運用にあたってまず気になるのは,メモリモジュールの対応だろう。i7-6700KではデュアルチャネルDDR4を新たにサポートし,日本で流通するZ170マザーボードも,少なくともゲーマー向けモデルではDDR4サポートが一般的になる見込みだが,これまでDDR4メモリモジュールは,LGA2011-v3プラットフォームなど,一部の超ハイエンド環境でしかサポートされていなかったので,Skylakeで初めてDDR4に触れるという人も少なくないのではなかろうか。

 現在,市場では,PC4-24000(DDR4-3000),PC4-22400(DDR4-2800),PC4-21300(DDR4-2666)といったモジュールも流通しているが,Skylake-Kが正式対応するのはPC4-17000――一部メーカーはPC4-17066と呼んでいる――モジュールだ。CPUのオーバークロック,とくにBCLK(ベースクロック)を念頭に置くのでなければ,PC4-17000対応のモジュールを(できれば2枚単位で)入手すればよい。

 少し気になるのは,DDR3と同じように,DDR4でも,シングルランク(Single Rank)やデュアルランク(Dual Rank),クアッドランク(Quad Rank)と,3種類のメモリモジュールが存在することだ。クアッドランクのモジュールがPC市場に流通することはほぼないので,ゲーマーが手にするのは片面実装のシングルランクか両面実装のデュアルランクかということになるが,今回はサンマックス・テクノロジーズと秋葉原のPCパーツショップであるパソコンショップ アークの協力で,合計容量16GBをシングルランク4枚で実現する「SMD4-U16G28M-21P-Q」と,デュアルランク2枚で実現するセット品「SMD4-U16G28M-21P-D」をそれぞれ入手し,Z170A GAMING M7に差してみたが,結論から先に述べると,どちらでも問題は生じなかった。「デュアルランクで4枚差したらどうなるか」まで確認はできていないのだが,少なくとも,合計16GBという,ゲーム用途で十分な容量を実現するのであれば,モジュールの選定にそこまで神経質になる必要はなさそうだ。

 今回は,デュアルランクの8GBモジュール2枚セットであるSMD4-U16G28M-21P-Dを使うこととし,実際にWindowsをインストールして,取り急ぎ「CPU-Z」(Version 1.72.1)を実行してみた。Haswellマイクロアーキテクチャを採用するCPU「Core i7-4790K」(以下i7-4790K)の結果と合わせて下に掲載してみよう。

 見比べると,8月5日時点におけるIntelの公式資料にない,2つの重要な情報が読み取れる。1つがキャッシュメモリ,もう1つが「

TSX

」だ。

 まずキャッシュメモリからだが,i7-6700KのL1データキャッシュ,L1命令キャッシュはいずれも4×32KBで,Haswellマイクロアーキテクチャから変わっていない。

 L2キャッシュが4×256KBなのもHaswellと同じだが,ここでポイントなのは,i7-4790Kが「8-way」なのに対し,i7-6700Kでは「4-way」となっているところ。CPU-Zの表示が正しいのであれば,

Skylakeでは4-wayセットアソシエティブに切り替えられた

ようだ。

 「n-wayセットアソシエイティブ」というのは,キャッシュメモリの構造のこと。ややこしい話なので本格的に説明すると大変に長くなるため,本稿ではざっくりとした説明に留めるが,キャッシュメモリは,メインメモリに存在するデータを「キャッシュライン」に一時格納してメモリアクセスの高速化を計る仕掛けだ。したがって「キャッシュラインに格納しているデータのアドレス」の情報が必要になるが,アドレスをいちいちデータとセットで保存しているとキャッシュにデータが存在するかどうか(=ヒットしているかどうか)を検索するのに時間がかかってしまう難点がある。

 そこで,アドレスの一部を検索タグとして使い検索速度を高めるわけだが,タグとキャッシュラインを1対1対応にしてしまうと,キャッシュを効率的に使えない(=同一タグを生成しているアドレスのキャッシュが衝突する)という問題が生じる。なので,1つのタグに対してn個のキャッシュラインを対応させる(n-way)構造が登場した。これがn-wayセットアソシエイティブである。

 n-wayのnの数を増やすと論理的にはキャッシュの効率は上げやすいが,その分だけ構造が複雑になるため,単純に増やせばいいという話ではない。一般論では,8-wayが4-wayに変わった場合,キャッシュが衝突する確率が増える一方,構造が単純になるため,キャッシュ更新の効率が上がり,遅延が減るといったことは考えられる。

 通常,「n-way」におけるnの数は,設計時におけるさまざまシミュレーションを基に決めていくものなので,Skylakeでは4-wayのほうが効率がいいと判断されたのではなかろうか。

 ちなみに,容量8MBの共有L3キャッシュは(CPU-Zを信じるならば)Haswellから変わらず,16-wayセットアソシエティブのままとなっている。

 もう1つのTSXは,「Transactional Memory」(トランザクショナルメモリ)を実現する新しい命令セットのことだ。

 「新しい」と言っても,実装されたのはHaswellマイクロアーキテクチャの時代からなので,まったくの新規というわけではないのだが,Haswellマイクロアーキテクチャでは,データセンター向けの「

Xeon E7 v3

」でしか有効化されていないので,PC向けとしては「新しい」命令セットと断言してしまって構わないだろう。

 TSX命令については,Xeon E7 v3の解説記事に詳しいので,興味のある人はそちらをチェックしてもらえればと思うが,簡単にまとめると,スレッド間で依存があるメモリの書き換え性能を大幅に向上させる可能性を持つ命令セットだ。データセンター向けだけでなく,幅広いアプリケーションや,OSそのものの性能向上にも役立つため,ゲーマーとしても要注目の命令セットといえる。

 先の記事で筆者は,いずれPC向けにもTSXは“下りてくる”と予想していたのだが,そのタイミングは存外に早かったわけである。

 というわけで,Windowsを起動した時点でSkylakeに関する2つの事実が分かった。1つはL2キャッシュの設計が変わっているという点で,従来の8-wayセットアソシエイティブから4-wayセットアソシエイティブに変更されている。だからどうなるとは言えないものの,Skylakeではアーキテクチャが練り直されたことだけは確かといえそうだ。

 もう1つはTSX命令がサポートされた点で,今後,TSX命令をサポートするPCアプリケーションが増える可能性が出てきたことになる。

基礎テストでは64bit版Windows 8.1を利用。Haswell世代と比較してみる

 さて,ここからは,i7-6700Kがどういった特性を持つCPUなのか,ベンチマークテストを通じて探っていくことにしたい。

 それに先だって,OSと機材の話を済ませておこうと思う。

 ご存じのとおり,去る7月29日にWindows 10がリリースされ(関連記事),8月1日からはPCパーツショップの店頭でDSP版を購入することもできるようになっている。

 これまで4Gamerでは基本的に,64bit版Windows 7 Ultimate+Service Pack 1をベンチマークプラットフォームとして採用してきたが,さすがに今から「SkylakeとZ170のシステムにWindows 7を導入する」というのは,あまり現実的でない。付け加えるなら,Z170マザーボードにWindows 7を導入した場合,USB関係の障害が生じることが明らかになっていたりもする。

 ただし,テストを開始するタイミングでは,7月29日を迎えておらず,Windows 10のリリース版を利用できなかった。かといって,一般ゲーマーが試せないOS(=Insider Preview)を使うのも問題であろう,ということで,今回は64bit版Windows 8.1 Proを用いている。本稿の主旨は,CPUそのものや,CPUに統合されるグラフィックス機能(以下,iGPU)の基本的な振る舞いを調べるものであることから,「製品版OSで,かつ,ハードウェア的なトラブルが発生していないもの」ということで,64bit版Windows 8.1 Proに白羽の矢を立てた次第だ。

 ゲーム性能を検証するレビュー記事では,DSP版のWindows 10を用いているので(

関連記事

),「Windows 10環境におけるゲーム性能」を知りたい人は,そちらを参照してもらえればと思う。

 ちなみに,Windows 8.1にはインストールメディアにUSB 3.0のホストコントローラxHCIのドライバが標準で入っているため,Z170マザーボードへOSをセットアップするにあたって,USBがらみのトラブルが発生することはなかった。

 ドライバに関して述べておくと,タイミングがタイミングだけに,ドライバはテスト中にも頻繁に更新が入った。とくに,HDG 530用のグラフィックスドライバは,テストをすべて終えてから刷新が入るという状況だったため,8月5日時点の最新版ドライバを利用できてはいない。本稿ではゲームアプリケーションを用いたテストを行わないため,そう大きな違いが出るとは思わないが,この点もあらかじめお断りしておきたい。

 比較対象は,基本的にHaswell世代の最上位モデルとなるi7-4790Kとした。ただし,DDR4メモリ周りに関するテストにおいては,クアッドチャネルDDR4-2133メモリコントローラを搭載するハイエンドモデル「Core i7-5960X Extreme Edition」(以下,i7-5960X)も用意している。

 そのほかテスト環境は

表1

のとおりだ。

Haswellに対して順当な(もしくは若干の)性能向上を期待できるSkylakeのCPUコア


別記事で紹介している

ように,i7-6700Kの性能はi7-4790K比で10%高いというのが,Intelのメッセージだ。そこでまずは,両CPUで,一般的なアプリケーションを実行したときの性能にどの程度の違いが出るのかを見るべく,「PCMark 8」(Version 2.4.304)を実行して,総合スコアを調べてみることにした。

 PCMark 8は,Webブラウジングやテキスト編集,表計算,スライド作成や,写真およびビデオの編集,ゲームの実行を模したストレージへのアクセスなど,一般的なPC操作で期待できる性能を示してくれるものなので,Intelの謳うざっくりとした性能指標を確認するのに適しているはずだ。

 グラフ1は,Turbo Boostを有効にした状態で実行したときの結果となる。

 i7-6700Kのスコアは,i7-4790Kに対して約2%高い結果となった。Intelが謳う10%にはまったく届かず,端的に述べて残念な結果だ。しかし,定格こそ4GHzで揃う一方,最大クロックだとi7-4790Kが4.4GHzなのに対してi7-6700Kは4.2GHzで200MHz低いCPUであるにもかかわらず,わずかに高い程度の総合スコアが出せている以上,Skylakeマイクロアーキテクチャで,クロックあたりの性能が相応に高くなっているとはいえそうである。

 ここからは,Turbo Boostを無効化し,動作クロックを定格の4GHzに揃えた状態で,PCシステム情報表示ツール兼ベンチマークツールである「Sandra 2015 SP2」(Version 21.40)を用い,CPU性能を比較していこう。

 グラフ2は,CPUの演算性能を見る「Processor Arithmetic」の結果をまとめたものだ。総合スコアにあたる「Aggregate Native Performance」で,i7-6700Kはi7-4790Kに対して約13%高いスコアを示している。

 個別のテスト項目を見ると,AVX2命令を用いて整数演算を行う「Dhrystone Integer Native AVX2」で約20%という,大きなスコア差を対i7-4790Kで示しているのが目を惹く。

 一方,AVX命令を用いた単精度浮動小数点演算性能を見る「Whetstone Single-float Native AVX」では約5%,同じくAVX命令を使って倍精度の演算性能を見る「Whetstone Double-float Native AVX」では約7%高いスコアに留まっており,整数演算のほどのインパクトは得られなかった。

 ただ,同じクロックで比較して,整数演算,浮動小数点演算ともにスコアの向上が確認できるわけで,マクロアーキテクチャに手が入っているのは間違いないということになる。

 動画や画像処理関連の演算性能を見る「Processor Mutimedia」のスコアをまとめたものが

グラフ3,4

だ。テスト中2項目だけスコアが2桁以下となるため,それだけ見栄え重視で

グラフ4

にまとめなおしたが,「Aggregate Multi-Media Native Performance」が総合スコアで,残りはいずれも個別のテスト項目におけるスコアである。

 さて,その総合スコアを見ると,i7-6700Kは,i7-4790Kに対して約30%も高いスコアを示している。

 個別のスコアで目を惹くのは,FMA(積和算)命令を用いた3つのテストでi7-6700Kが良好な成績を収めている点だろう。Haswellマイクロアーキテクチャで浮動小数点演算への対応用として拡張されたFMA2は,Skylakeマイクロアーキテクチャでも引き続きサポートされているわけだが,i7-6700Kのスコアは,「Multi-Media Single-float Native x16 FMA」「Multi-Media Double-float Native x8 FMA」「Multi-Media Quad-float Native x2 FMA」の3項目でi7-4790Kより24〜32%程度高い。AVXの整数演算性能だけでなく,FMA処理性能にもかなりの手が入っているようだ。

 なお,拡張命令を用いず,“普通に”整数演算命令を使う「Multi-Media Quad-int Native x1 ALU」だと,i7-4790K比で約7%高いスコアに留まった。Skylakeでは,通常の整数演算命令よりも,AVXやFMAといった拡張命令の実行性能が重点的に改良されているのではなかろうか。

 続いて

グラフ5

の「Processor Cryptographic」は,暗号化および複合化の処理性能を見るものとなる。

 このテストは,ハードウェアアクセラレーションを利用できるCPUでは自動的に使う設計になっており,i7-6700Kとi7-4790Kはいずれも対応していることから,暗号化アクセラレーションの性能を比較することになるが,総合スコアとなる「Cryptographic Bandwidth」だと,i7-6700Kはi7-4790Kと比べて約19%高い数字を示した。そのため,「アクセラレーション用ハードウェアが強化されたのか?」と思いたくなるが,実のところ,スコアが帯域幅で示されているところから想像できるように,Processor Cryptographicでは,メモリバス帯域幅がスコアを左右しやすいのだ。

 メモリ周りのテストは後段でまとめてチェックしたいと思うが,ここでのスコアは,「統合されるハードウェアアクセラレータが同じなので,メモリコントローラの性能差が表面化しているだけ」のように見える。

 「Processor Scientific Analysis」は,FMAを含んだ科学技術計算の性能を見るテストだ。その結果は

グラフ6

のとおりだが,FMAの性能がSkylakeで向上しているため,総合スコアにあたる「Aggregate Scientific Performance」で,i7-6700Kはi7-4790Kに対して約27%高いスコアを示している。

 個別スコアでは「Fast Fourier Transform (FFT) FMA」のスコア差が約11%と,ほかの項目に比べて小さいのが気になるが,FFT(高速フーリエ変換)では高速化のための整数化がよく用いられるので,整数のFMA性能は,浮動小数点のそれと比べ,それほど上がっていないという可能性はあるだろう。


グラフ7

は,マルチコアCPUにおけるコア間のデータ転送性能を調べる「Multi-Core Efficiency」の結果をまとめたものだが,端的に述べて,ここでのスコアはとても興味深い。「4x 1kB Blocks Bandwidth」より大きなブロックサイズでi7-6700Kがi7-4790Kを引き離し,「4x 64kB Blocks」だと,なんとそのギャップは約61%にも達しているのだ。

 ブロックサイズから分析するに,コアごとに256KB用意されるL2キャッシュのデータを複数のコアで共有するのときの性能が大幅に向上しているように見える。前述のとおり,詳しい情報は明らかになっていないのだが,

  • コア間の接続にはリングバスが用いられている
  • リングバスの動作クロックはコアクロックと同期する

はずで,i7-6700Kとi7-4790Kでリングバスの動作クロックは同じと見られるだけに,リングバスそのものに手が入ったか,あるいはL2キャッシュの改善・改良が効いているか,その両方という可能性が考えられる。L2キャッシュから溢れてL3キャッシュの“領域”となる「4x 1MB Blocks Bandwidth」「8x 1MB Blocks Bandwidth」でも11〜25%程度のスコア差があることからすると,リングバスそのものに手が入っている可能性のほうが高いか。

 Haswell世代でも,Haswell-Eシリーズではリングバスが改良・拡張されていたりするので,Skylake世代でリングバスに手が入ったとしても不思議ではない。

 ……以上,CPUコアの性能を見てきた。ここまでを軽くまとめるなら,「同じ動作クロックで比較すると,AVXやFMAの実行性能においてi7-6700Kはi7-4790Kに対して有意に高い性能を持っている」「コア間を接続するリングバスにも何らかの手が入っていそう」といったところだ。

DDR4メモリコントローラで帯域幅が向上。キャッシュ周りの性能も上がる

 引き続きSandra 2015 SP2を使って,ここからはメモリ周りのテスト結果を見ていきたい。

 テストのセットアップ段で述べたとおり,ここではクアッドチャネルDDR4-2133メモリコントローラを搭載するi7-5960Xも比較対象として登場願う。動作クロックもCPUコア数もまったく異なる製品なので,あくまでもメモリ周りのみを比較しようというわけである。なお,i7-5960Xのテストにあたっては,

表1

にもあるとおり,クアッドチャネルだけではなく,デュアルチャネルでもテストを行い,「i7-5960X(QC)」「i7-5960X(DC)」と書いて区別する。

 さてまずは,ざっくりとメモリ帯域幅を計測する「Memory Bandwidth」のテスト結果を確認しておこう(グラフ8)。

 ここでは総合スコアと個別スコアの違いがほとんどないため,総合スコアでとなる「Aggregate Memory Performance」だけ注目すればよさそうだが,i7-6700Kのスコアは,i7-4790Kに対して約28%高い。DDR4-2133とDDR3-1600だと,カタログスペック上の帯域幅は約33%異なるので,まずまず順当といえる結果が得られていると述べていい。

 興味深いのは,i7-6700Kとi7-5960X(DC)のスコアがほぼ同じであるところ。Skylake-EのDDR4メモリコントローラはHaswell-Eの2チャネル分と大差ない性能を持つということかもしれない。なお,対i7-5960X(QC)だとi7-6700Kは約58%となるが,これはチャネル数が倍ということを考えれば妥当だろう。

 続いて

グラフ9

は,メモリのアクセス遅延を計測する「Cache and Memory Latency」の結果だ。

 前段で指摘したとおり,SkylakeのL2キャッシュはHaswellのそれと異なる可能性が高いわけだが,ここのスコアを見る限り,L2キャッシュに収まる「1MB Range」まで,遅延状況に目立った違いはないようだ。さらに「4MB Range」まではi7-6700Kとi7-4790Kに大きなスコア差は見られない。

 スコアに変化が生じるのは,L3キャッシュに収まる上限となる「8MB Range」とそれ以上の容量帯で,「8MB Range」の実スコアは,i7-4790Kの21.7nsに対してi7-6700Kが14.4nsと,有意に遅延が小さい。リングバスやキャッシュメモリに改良が入った可能性を,ここでも見て取れるわけである。

 個人的には,遅延の大きなDDR4を採用していることから,「16MB Range」ではi7-6700Kの遅延状況が対i7-4790Kで不利になるのではないかと推測していたが,結果はその逆で,i7-6700Kのほうが優れたスコアを示している点にも注目しておきたい。バースト転送速度で,DDR4メモリが結果的に有利だったということなのだろうか。

 なお,キャッシュが20MBと大きい代わりに4チャネルのメモリコントローラを持つ7-5960Xは,そのキャッシュサイズが効く「16MB Range」を除き,デュアルチャネル,クアッドチャネルともに遅延はやや大きめだ。4チャネル構成という,規模の大きいメモリ周りが,レイテンシでは不利に働いているということなのかもしれない。

 「Cache/Memory Bandwidth」は,キャッシュおよびメモリの帯域幅を容量帯ごとに見るテストなのだが,i7-6700Kとi7-4790KのL1・L2・L3キャッシュ容量が同一であることから,今回は,各キャッシュメモリの容量に収まるブロックサイズの平均スコアを抜き出して

グラフ10

にまとめてみた。このほうが性能差は分かりやすいだろう。

 i7-6700Kとi7-4790Kの違いを見ていくと,L1データキャッシュの帯域幅「L1D (1st Level) Data Cache」で約15%の違いが生じ,L2キャッシュ「L2 (2nd Level) Data/Unified Cache」では約52%,共有L3キャッシュ「L3 (3rd Level) Data/Unified Cache」では約55%ものスコア差が生じているのが分かる。L2・L3では1.5倍以上なのだから,「圧倒的」と評していいだろう。

 とくにL3キャッシュのスコアは,i7-5960X(DC)およびi7-5960X(QC)よりも約14%高いという,強烈なものだ。

 メモリ周りの検証,最後は,複数スレッドで間で参照しているメモリ上のデータ更新速度を調べる「Memory Transaction Throuput」だ。

 その結果は

グラフ11

のとおりだが,ここではTSX命令に対応したi7-6700Kの圧勝である。対i7-4790Kで約4.1倍というのは圧巻というほかないだろう。

 i7-5960Xも,TSX命令が無効なので,ここではi7-6700Kにはまったく及ばない。付け加えると,i7-5960Xは動作クロックが低いこともあり,i7-4790Kにも及ばない結果になっている。

 TSX命令を使うと,クリティカルセクションを待つ無駄が減らせるので(関連記事),当然といえば当然の結果だが,それにしても圧倒的である。

 以上,Skylakeのメモリ周りでは,DDR4メモリを採用する最大のメリットである帯域幅の向上があり,かつ,DDR4でネックとなりがちな遅延も大して悪化してないとまとめられるだろう。また,ここに至ると,L2およびL3キャッシュ周りにも,純然たる拡張なのか,リングバスがらみなのかといった詳細は不明ながらも,相当な規模の改善が入ったのはまず間違いないと言い切れるようになる。

謎が多いi7-6700KのiGPUは,テストを経てさらに謎が深まる

 iGPUの基本性能もSandra 2015 SP2を使ってチェックしておこう。


Skylake-Kの概要紹介記事

でもお伝えしているとおり,Skylake-KのiGPUであるHDG 530の詳細はほとんど何も明らかになっていないに等しいが,テストで何か見えてくるかもしれない。

 なお,動作クロックは,HDG 530が最大1150MHz,i7-4790Kに統合される「Intel HD Graphics 4600」が1250MHzで,HDG 530のほうが100MHz低い。今回のテストにおいて,iGPUの動作クロックはデフォルトのままにしてあるので,両者の間にある100MHz,パーセンテージにして8%という違いも考慮しながら,スコアをチェックしていきたいと思う。

 というわけでグラフ12,13はシェーダの基本的な演算性能を見る「GP Processing」の結果である。ここでも,スコアの桁数に応じてグラフを2つに分けてあるのだが,まず,総合スコアにあたる「Aggregate Shader Performance」では,i7-6700Kがi7-4790Kに対して約24%高いスコアを示した。

 個別のスコアだと,倍精度浮動小数点数の演算を行う「Double-Float Shaders Emulated」で約18%,単精度浮動小数点数のネイティブ演算を行う「Single-Float Shaders Native」で約31%,16bitの半精度浮動小数点数演算を行う「Quad-Float Shaders Emulated」で約39%といった具合に,精度が低い浮動小数点演算のスコアが高くなる傾向が見て取れる。DirectX 11以降でサポートされた半精度浮動小数点数の演算に対し,シェーダユニットが改良された可能性はありそうだ。

 GPUを使ってAES 256暗号化とSHA2-256ハッシュを計算するため,いずれも整数演算が主体となる「GP Cryptographic」のテスト結果が

グラフ14

で,ここでは,総合スコアにあたる「Cryptographic Bandwidth」で,i7-6700Kがi7-4790Kを圧倒した。スコア差はなんと2倍以上となっている。

 Intel製iGPUにおける演算ユニット「Execution Unit」では以前から整数演算がサポートされていたのだが,この圧倒的な違いを見る限り,Execution Unitに何らかの手が入った可能性はあるだろう。

 一方,それほど大きな違いが生じなかったテストもある。それが

グラフ15

に結果をまとめた「GP Scientific Analysis」だ。

 総合スコアにあたる「Aggregate Scientific Performance」で,i7-6700Kのスコアは対i7-4790Kで約16%増し。足を引っ張っているのは行列演算の「General Matrix Multiply (GEMM) 」で,ここで両者のスコア差は約8%に留まっている。

 SandraがOpenGLを使って示す演算コアの数は,HDG 530が「24基」,Intel HD Graphics 4600が「20基」なので,OpenGLから認識される数字で比較する限り,iGPUの規模には20%の違いがある。Execution Unitの数と動作クロックでは説明が付きにくい結果が,ここまでのテスト結果では出ているといえるだろう。

 なお,IntelのiGPUでは,複数のExecution Unitを束ねて「Slice」(スライス)と呼ばれる“ミニGPU”を構成し,そのミニGPUを複数束ねる仕様になっている。仮にExecution Unit数が24基で正しいとすると,12基で1つのSliceが構成されている可能性がある。

 さて,さらに謎が深まるのがiGPUのメモリ周りである。GPUのメモリバス帯域幅をチェックする「GP Bandwidth」のテスト結果をまとめたものが

グラフ16

だが,総合スコアにあたる「Aggregate Memory Performance」で,i7-6700Kがi7-4790Kの約94%と,低いスコアになっているのだ。

 テスト結果には,iGPU動作クロックの違いがほぼそのまま出ているという可能性はあるのだが,それにしても,メモリバス帯域幅が小さくなっているののに,演算性能はi7-6700Kのほうがi7-4790Kよりかなり高いというのは,かなり奇妙な感じがする。

 先のスクリーンショットで示したとおり,GP Processingのログで示されたiGPUのL2キャッシュ容量は,HDG 530が768kBで,HDG 4600が512kB。GPUキャッシュは1.5倍に増量されていることになる。となると,GPUがデータへアクセスするときの遅延はi7-6700Kで大きくなっているのではないかと想像する人もいるだろうが,果たして

グラフ17

で,GPUの遅延状況を見る「GP Latency」のテスト結果を見てみると,全領域にわたって,i7-6700Kの遅延は200nsを超えているのが分かる。i7-4790Kとは遅延傾向も明らかに異なるので,もしかすると,HDG 530では,キャッシュ階層も変わっている可能性がありそうだ。

 最後に,「Intel Quick Sync Video」(以下,QSV)を用いた動画トランスコードの性能も見ておこう。

グラフ18

は「Media Transcode」テストの結果をまとめたものだが,総合スコアにあたる「Transcoding Bandwidth」でi7-6700Kとi7-4790Kのスコア差は約3%と,ほとんど変わらない結果になった。

 Skylake-KのQSVでは,動画形式としてH.265がサポートされ,4K解像度にも対応するという違いがあるので,Skylake世代では,性能差ではなく機能差で差別化されることになるのではなかろうか。

 以上の結果から,Skylake-KのiGPUではExecution Unitそのものに手が入っている可能性が高いと,筆者は推測している。OpenCLでレポートされる演算ユニット数や動作クロックの違いからは説明がつきにくいスコア傾向が得られるからだ。

 また,GPUのキャッシュ周りにも手が入っている可能性は高そうである。シェーダユニットが持つ演算性能の違いは,キャッシュ周りの改善によってもたらされているのではなかろうか。Intelからの情報が乏しいだけに,片っ端から推測になってしまうのは申し訳ないが,iGPUでもSkylakeとHaswellの間には興味深い違いがあると述べることはできるように思う。

PCHの帯域幅拡大を確認。ただし……


別記事

でも指摘しているとおり,Skylake-Kで組み合わされるZ170チップセットでは,CPUとPCH間のインターコネクトが「DMI 3.0」となって帯域幅が拡大し,PCH側でもPCI Express(以下,PCIe)3.0をサポートできるようになったのが,大きなトピックの1つとなる。

 残念ながら,原稿執筆時点では,PCIe 3.0に対応するU.2フォームファクタのSSDを簡単には入手できない。また,本稿でテストに用いているZ170A GAMING M7にはPCIe 3.0 x4接続のM.2スロットが2基用意されているものの,M.2フォームファクタでPCIe 3.0接続のSSDも現時点では入手性が極めて低い。

 というわけなので,今回は,とりあえず用意できたKingston Technology製のM.2フォームファクタ採用SSDである「HyperX Predator M.2 PCIe G2 x4 SSD SHPM2280P2H/480G」(以下,SHPM2280P2H/480G)を用いて,CPU直下のPCIe x16スロットに接続したとき(以下グラフ中は「CPU-PCIe x16」)と,PCH経由のM.2スロットに差したとき(以下グラフ中は「PCH-M.2」)とで,性能の違いがどう出るかを確認してみることにした。

 SHPM2280P2H/480GはPCIe 2.0 x4接続のSSDなので,i7-6700+Z170チップセットという構成になるテスト環境のスペックを100%活かせるわけではないが,傾向の違いくらいは見て取れるだろう。

 なお,今回比較対象のシステムで使っているZ97A GAMING 7にもオンボードのM.2スロットは用意されているが,こちらはPCIe 2.0 x2接続であり,SHPM2280P2/480Gにとってのボトルネックとなる。Z97チップセット搭載マザーボードの場合,オンボードのM.2スロットがx4接続の製品が極めて少ないため,「オンボードのM.2スロットがx4接続になったメリット」を確認するテストということにもなるはずだ。

 テストに用いるのは「CrystalDiskMark」(Version 5.0.2)。今回は,テストデータサイズを1GiB,テストスレッド数を1,テスト回数を5にセットしたうえで,テストを5回繰り返し,ベストスコアをピックアップしたいと思う。平均を取らなかったのは,CrystalDiskMark自体がベストスコアをピックアップする仕様になっているためだ。

 さっそく,結果を見ていこう。グラフ19は「Queue Depth=32」における逐次アクセスの結果をまとめたものとなる。

 i7-6700Kの場合,CPU直下のPCIe x16スロットに接続したときと,PCH側のM.2スロットに接続したときとで,「Sequential Read」「Sequential Write」とも,スコア差はほとんど生じていない。i7-4790Kの場合,PCHの先につながらうM.2スロットがx2接続となるため,Sequential Readでスコアがほぼ半分になってしまったのとは対照的である。


グラフ20

は「Queue Depth=32」でのランダムアクセスにおける結果をまとめたものだが,ここでは,傾向がやや変わる。i7-6700K+Z170でも,「Random Write」において,CPU直下のPCIe x16スロットに接続した場合に対し,PCHの先にあるM.2スロットに接続した場合のスコアが,約58%にまで低下したのだ。ランダム書き込みだと,PCHのオーバーヘッドが顕在化しやすいということなのだろう。

 「Queue Depth=1」とした逐次アクセス,ランダムアクセスもほぼ似た傾向で(

グラフ21,22

),Z170チップセットでは,ランダム書き込みにおいてPCHのオーバーヘッドが出やすい傾向を確認できる。

 以上から,

PCHの帯域幅が増えるといっても,SSDの利用において,PCHのオーバーヘッドから完全に逃れられているわけではない

ことを確認できる。どんなに広帯域幅化したといっても,PCIeだけでなくUSBやSerial ATAなどとPCIe 3.0 x4を“奪い合っている”わけで,CPUと直結になるPCIeスロットのほうが依然として優勢なのだ。

 SkylakeにおいてCPU側のPCIeレーン数が拡充されなかったのはやはり残念で,拡張カードてんこ盛りでいくのであれば,Haswell-E+X99プラットフォームのほうが魅力的ということにもなるだろう。

 最後に,消費電力も確認しておきたい。ゲームアプリケーション実行時の消費電力は別記事を参照してもらうとして,本稿ではGPUとiCPUそれぞれに個別の負荷をかけた状況とかけていない状況を,ログの取得が可能なワットチェッカー「Watts up? PRO」を使って比較してみる。

 ここで負荷をかけるのに使うツールはSandra 2015 SP2で,Processor Arithmeticの実行中,最も高い消費電力値が記録された時点を「CPU高負荷時」,GP Processingの実行中,やはり最も高い消費電力値が記録された時点を「CPU高負荷時」とすることにした。CPUの消費電力測定にあたっては,Turbo Boostを無効化し,i7-6700Kとi7-4790Kの動作クロックを4GHzで揃えた状態「CPU高負荷時(@4GHz)」と,Turbo Boostを有効化した状態「CPU高負荷時」の両方でテストを行う。

 さらに,コントロールパネルの「電力設定」を使い,無操作時にもディスプレイが無効化されない状態に設定したうえで30分放置した時点の消費電力をアイドル時」とすることにし,結果をまとめたものが

グラフ23

だ。

 ここで注目したいのは,i7-6700KのCPU高負荷時(@4GHz)とCPU高負荷時とで,37Wもの違いが生じていることだろう。i7-6700Kの動作クロックは定格4GHz,最大4.2GHzで,わずか200MHzしか違いがないのだが,それで37Wというのは,ちょっと大きすぎる。

 もちろん,消費電力は個体差があるので,筆者が手にしたi7-6700Kが特別に消費電力が大きい可能性はある。だが,「

i7-6700Kの最大クロックが4.2GHzに抑えられているのは,クロックが上がると消費電力が急増するからではないか

」と考えると,理屈に合うのも確かである。

 なお,iGPU高負荷時の消費電力は,i7-6700Kのほうがi7-4790Kより低かった。マザーボードもメモリモジュールも異なるので,この数Wの違いがすべてiGPUによってもたらされたと考えるのは早計だろうが,i7-6700Kで,消費電力あたりのiGPU性能がi7-4790Kより上がっている可能性は高いといえるだろう。

クロックあたりの性能が確実に向上しているSkylake。Skylake-Kの弱点は消費電力か?

 Skylake世代CPUであるi7-6700Kの特性をざっくりと見てきたが,

同じ動作クロックで比較したとき,Haswell世代と比べてまずまずの性能向上がある

とはまとめていいように思う。AVX命令セットやFMAの性能が上がり,さらにTSX命令が追加されたことで,新世代CPUらしく仕上がったといった感じだろうか。

 ……にも関わらず,アプリケーションレベルの性能でi7-4790Kに対して大きなスコア差をつけられていないわけだが,その理由は,i7-6700Kで最大クロックが4.2GHzに抑えられた影響が大きいのではないかと考えている。AVXやFMAといった新しい命令セットを多用するアプリケーションでは同一クロックで1.2〜1.3倍程度の性能向上を得られそうだが,そうしたアプリケーションが多いわけではないからだ。

 従来型の命令セットを使うアプリケーションでは,せいぜいメモリ周りやキャッシュ周りの改良が“効く”程度で,しかも最大クロックが200MHz低いため,ほとんど違いが出ないということが考えられる。

 最大クロックが抑え気味なっている原因としてあり得るのは消費電力だろう。TDP(Thermal Design Power,熱設計消費電力)の関係で最大クロックを上げられなかったのであれば,それがSkylake-Kの弱点になるのかもしれない。

Intel,Skylake-Kこと「Core i7-6700K」「Core i5-6600K」を発表。多くの仕様が謎に包まれたまま,Skylake時代が始まる

「Core i7-6700K」「Core i5-6600K」レビュー。Skylake世代の第1弾となる倍率ロックフリーモデルは,ゲームプレイにメリットをもたらすか


Intel日本語公式Webサイト

Intel ARK(Intel製品スペック一覧ページ)