第357回
“big.LITTLE”デザインを採用したAlder Lake-Sの実力は?
CINEBENCH最強の座を奪還!Core i9-12900K、Core i7-12700K、Core i5-12600K速報レビュー
ベンチマーク前に押さえたい技術的トピックまとめ
PコアとEコアの仕様をチェック
第12世代Coreは前世代から大きく刷新され、変化した部分が非常に多い。ベンチマークのスコアーを見る前に押さえておきたい第12世代Coreの技術的トピックのうち、重要なものを列挙してみた。
【1】EコアとPコアの使い分けは自動で行われる
第12世代Coreが持つPコアとEコアの使い分けは完全に自動で行われる。CPU内のITDがコアの状況を細かくモニタリングし、OS側にスレッドをどのコアに振り分けるべきかを助言する。アプリ側は性能が必要な処理と性能があまり必要とされない処理ごとに別々のスレッドのグループ(プール)を用意しておく。前者はPコアへ、後者はEコアに優先的に割り当てられるというわけだ。後者の性能が必要とされない処理とはバックグラウンドでのファイルの読み書きやサウンドの処理、動画の再生処理などが挙げられる。
Pコアがすべて埋まっている状態で新たなスレッドが追加されれば、Eコアに追い出される処理も出てくる。特に浮動小数点ベクトル演算やAVX2 VNNIといった計算量が高い処理については優先度が高く設定されており、ITDはこれらのスレッドに関しては普通のスレッドよりもPコアへ優先的に配置するよう助言する。つまり、PコアからEコアへ“追い出される”処理が出てくるのだ。優先度の高い処理が終了すれば、再びPコアへ戻される。
こうしてPコアに優先度の低いスレッドを割り当てないようにすることで、性能を左右するようなスレッドがほかのスレッドに邪魔されず実行しやすくなる。例えば、ゲームのレンダリング処理のスレッドが重要度の低いスレッドに邪魔されなくなれば、より安定したフレームレートを出せるようになる、といったイメージだ。
実際のゲームでのCPUの使われ方はそのタイトルの設計に強く依存するが、「Apex Legends」の場合はPコアの物理コア側にのみ負荷がかかり、ハイパースレッディング(以下、HT)で増えた論理コア側の負荷は0%になる。これまでのCPUだと論理コア側にも数%程度の負荷が乗ってくるが、第12世代Coreではこのような処理はすべてEコアにまとめられる。ゆえに、Pコアの手がより空くようになるため、ゲームの処理効率が良くなり、何か別の処理が突発で入っても空いているPコアが吸収してくれる可能性が高くなる。
ITDとOSの連携こそが第12世代Coreのパワーの核心部分といえるが、これを最も効率良く発揮できるOSはWindows 11であるとインテルは主張している。Windows 10でもITDは動作するし、PコアとEコアも使い分けられるが、時にはEコアへ行くべき処理がPコアへ行くかもしれない。
その差異がどの程度かまではまだ検証できていないが、第12世代Coreの性能をすべて出し切りたければ、Windows 11環境が現状最高の選択のようだ。もちろん、アプリ側もスレッドの重要度を加味した設計にすることで、第12世代Coreにより最適化させられる、というのがインテルの主張だ。
また、PコアとEコアは、各々BIOS経由でコア単位で無効化できる。Eコアはゼロにすることも可能だが、Pコアは最低1基は残しておかねばならない。Eコアを無効化すればそのぶんの電力をPコアに回せるため、単一アプリでのパフォーマンスが向上する可能性はあるが、マルチスレッド性能やその時のレスポンス性が落ちる可能性がある。これはユーザーの裁量次第になるだろう。
【2】タスクマネージャーではPコア→Eコアの順で列挙される
Windowsのタスクマネージャー上では、左上から右下へかけてまずPコアが列挙され、その後にEコアが並ぶ。PコアはHTに対応しているのでマス2個でコア1基、これに対してEコアはHT非対応なのでマス1個がコア1基に対応する。
【3】手動による関連付け(Hard Affinity)は非推奨
優先度の高いスレッドがPコアを使い、低いスレッドをEコアに割り振ることは基本的にOSが決定する。これはコンテキストスイッチのコストやスレッドの予想実行時間などを元に導き出す。しかし、強制的にPコアで動作させたい場合、アプリによってはタスクマネージャーで「関連付け」(Processor Affinity)を設定することもできる。
ただし、このような“Hard Affinity”をインテルは推奨していない。Hard Affinityを実施すると、OSはITDのサジェストをすべて無視し、結果としてOSのスケジューリング能力を制限してしまうため、と主張している。だが、アプリの設計次第ではPコアが適切に使用されない場合もある。
例えば、今回検証した範囲では、動画エンコードアプリ「HandBrake v1.4.2」でエンコードのスレッドが“ほぼ”Eコアのみに割り当てられてしまう現象に遭遇した。「Media Encoder 2021」や「DaVinci Resolve Studio」などではPコアも普通に使われるため、HandBrakeの設計によるものであることは間違いない。
こうした際にどうしてもHandBrakeの処理性能を稼ぎたい場合は、HandBrakeのエンコード用プロセス(HandBrake.Worker.exe)の優先度をタスクマネージャーでデフォルトの“通常以下”から“通常以上”に変更してやることで、PコアもEコアもすべて使ってエンコードするようになる。
週刊アスキーの最新情報を購読しよう
本記事はアフィリエイトプログラムによる収益を得ている場合があります