元半導体設計屋 筑秋 景のシリコン解体新書

2桁台のIPC向上を果たしたIntelの新Pコア「Lion Cove」

 今回は、Intelの新世代Pコアであるコードネーム「Lion Cove」について説明する。

次世代Pコアにおける3つの野心的な目標

 IntelはLion Coveの開発を始めた時、3つの野心的な目標を定義した。1つ目の目標はクライアントSoCの性能と面積効率を大きく飛躍させること。2つ目の目標は、1回限りのパフォーマンス向上やIPCの達成だけでなく、次世代のPコアでさらに拡張できるようにするため、マイクロアーキテクチャの課題を根本的に解決すること。3つ目はPコアの設計方法を近代化し、今後のイノベーションのペースを加速させることだ。

 では、Lion CoveがPコアの電力効率と性能特性を改善するため、具体的にどのようなことを行なったかを見ていこう。

ハイブリッドコンピューティングとハイパースレッディング

 まず、ハイパースレッディングについてだ。Intelは20年以上前にハイパースレッディングを導入した。当時の主力製品には物理コアが1つしかなく、ハードウェアを2倍にすることなく2つ目のスレッドを実行できたことは、かなり革命的なことだった。

 コア数を増加させたとしても、当時は固有のソフトウェア並列処理やOSのスレッドスケジュール機能が十分に対応できていなかったため、ハイパースレッディングは全体的なコンピューティングスループットを向上させる効率的な方法だったのだ。

 最新世代のPコアでのハイパースレッディングでは、同じコア面積のフットプリントで20%のCdyn(動的消費電力)に対して、30%のIPCまたはスループットの向上という効果をもたらしている。

 スレッド密度が優先されるデータセンターでの利用では、ハイパースレッディングが引き続き注目される。しかし、EコアをPコアと同一SoC上に実装するハイブリッドコンピューティング製品においては、Eコアによってハイパースレッディングよりも効率的に高いパフォーマンスでマルチスレッドアクセラレーションを提供するというパラダイムシフトが起こった。

 最新OSはすでにPコア、Eコアのスケジューリングに対応しており、パフォーマンスが重要なシナリオでは、スレッドは最初にPコアにスケジュールされ、次にEコアにスケジュールされる。そして、すべての物理コアでスレッドが実行された場合のみ、Pコアでハイパースレッディングが利用される。

 一方、効率やバッテリ寿命が重要なシナリオでは、スレッドは最初にEコアで、次にPコアでスケジュールされる。ここでも、すべての物理コアが実装された場合にのみ、ハイパースレッディングが利用される。

 Lunar Lakeでは、大幅にパフォーマンスと効率の高いPコアバージョンを開発するよう求められた結果、ハイパースレッディングを再検討することになったという。クライアントCPUのアーキテクトはハイパースレッディングが効率の面では必ずしも最適解ではないという考察を持っていたようだ。ハイパースレッディング機能の実装にはコストもかかるからだ。

 具体的にはアーキテクチャ的な状態を複製し、パイプラインに調停ポイントを追加する必要がある。そして、さまざまな公平性メカニズムや専用のセキュリティハードウェアも必要になるからだ。

 その結果、ピークのシングルスレッド性能、ワットあたりの性能、面積あたりの性能が求められる場合でのハイパースレッディングを削除したシングルスレッド最適化コアと、従来のハイパースレッディング対応コアと比較を行なったという。

 そして、ハイパースレッディング固有の論理回路を削除した上で、さまざまなコア構造をシングルスレッドでの使用に最適化することで、基盤となるパイプラインとマイクロアーキテクチャを維持した。これらによる結果は、Cdynは15%削減、面積は10%削減しながら、同等のシングルスレッドIPCを実現した。これは電力あたりの性能が15%向上し、電力あたりでの面積あたりの性能が30%向上したことを意味する。

 このシングルスレッド最適化コアでハイパースレッディングを有効にした場合は、電力あたりの性能で5%以上、電力あたりでの面積あたりの性能は15%以上向上した。この結果からはハイパースレッディングは面積あたりの性能でまだ優位性があるので、Pコアのみに実装する非ハイブリッドシステムでは理にかなっているといえる。

 Lunar Lake用Lion Coveから削除されたハイパースレッディングは、外部から見える機能としては最も大きいが、除外された機能はこれだけではない。つまり、製品に直接貢献しないトランジスタ、冗長な回路を設計から取り除くことで設計の最適化を行なったということだ。これもタイル方式の大きな利点なのかもしれない。

さらに進む熱設計と電力管理

 半導体微細化技術の進化でCPUの面積を縮小しつつパフォーマンスを上げることができるが、熱密度の課題は増大していくことになる。小さい面積でより多くのトランジスタが動作するため、面積当たりの発熱が大きくなっていくからだ。

 これにより今まで以上にすべての場所でCPU温度を監視し、過熱の可能性がある場合すぐに対応する必要が生じる。これは通常は、周波数をスロットルするか、電圧を下げたりすることによって行なわれていた。

 従来、コアの熱管理ハードウェアの制御ループは、出荷前にラボで調整され、その設定はすべての製品とセグメントに対して静的に設定されていた。つまり、ある想定された条件下での最適値をあらかじめ設定している。

 当然のことながら、極端な条件下でも安定した動作を確保するために、安全領域のマージンを確保することでリスクが小さくなる設定にする必要があった。しかし、設定が静的であるため、極端ではない条件下ではパフォーマンスの足かせになっていた。

 そこで、Lion Coveは、ネットワークベースの動的調整管理機能というかなり進んだ熱管理アプローチを採用した。この管理機能は、リアルタイムの動作条件、実行中のワークロード、実際のプラットフォームの熱ソリューション、周囲温度に適応し、より厳密な周波数収束(周波数が到達すべき最適値)を可能にする適切な時間的閾値を設定する。

 これにより、コアは従来の静的な方法よりも高い周波数で動作することができ、より高く持続的なパフォーマンスを実現できる。安全領域・マージンの領域を狭くしてその分を性能向上に向けることができるようになったわけだ。

 これまで、Intelのコアは100MHz間隔で周波数をスケーリングしていた。多くの場合、これではコアのパワーバジェット(供給可能な電力)が十分に活用されていなかったという。

 そこでLion Coveでは、16MHz間隔のより細かい周波数間隔を導入し、この問題を解決した。きめ細かい調整が可能になり、与えられたパワーバジェットに対してより多くのパフォーマンスを引き出すことができるようになった。

 例として、コアを3.08GHzで動作させることを理論的に可能にするパワーバジェットが与えられた場合、従来の100MHzの周波数間隔のクロック方式では、最大許容周波数は3GHzとなる。3.1GHzにジャンプすることはできないからだ。これではパワーバジェットは十分に活用されていないことになる。

 一方、Lion Coveは3.067GHzで周波数を設定でき、パワーバジェットをより有効に活用することで、パフォーマンスを約2%向上させることができる。使用可能なパワーバジェットを可能な限り活用するということになる。

Lion Coveコアのマイクロアーキテクチャの進化

 次に、Lion Coveコアのマイクロアーキテクチャの進化を見てみよう。CPUのフロントエンド部分は、x86命令をフェッチし、マイクロオペレーション(uop)にデコードする役割を担っている。コアを最適に動作させるためには、アウトオブオーダ実行部分に効率的にuopを供給する必要がある。具体的にはフェッチとデコードの帯域幅はアウトオブオーダエンジンが吸収できる帯域幅を超える必要があるということになる。

 ここでのフェッチとデコードは、命令を生成するための適切なコードブロックを決定するための正確な分岐予測から始まる。Lion Coveは、分岐予測スキームを根本的に変更し、分岐予測の精度を犠牲にすることなく、予測ブロックの幅を前世代よりも最大8倍まで大幅に広げた。

 これには2つの利点がある。第一に、分岐予測ユニット(BPU)が先に実行され、コード行を命令キャッシュにプリフェッチできるため、命令キャッシュのミスが軽減される。これを実現するために、BPUの先回り能力を活用すべく、L2への命令キャッシュ要求帯域幅を3倍に増加した。

 第二に、より広い予測ブロックにより、命令フェッチ帯域幅を増加させることができ、命令フェッチ帯域幅はサイクルあたり64バイトから128バイトに倍増した。また、デコード帯域幅もサイクルあたり6命令から8命令に増加している。

 これらの命令は、uopキューに送られ、uopキャッシュにも読み込まれる。コードラインは頻繁に再利用されるため、uopキャッシュは、フェッチとデコードパイプラインの回路を再度使うことなく、以前にデコードされたuopをアウトオブオーダエンジンに効率的かつ低レイテンシ、高帯域幅で供給することができる。

 Lion Coveでは、uopキャッシュは4,000から5,250uopに増え、その読み取り帯域幅はサイクルあたり8から12uopに増加した。uopキューは144から192エントリに増え、より長く、またはより大きなコードループを電力効率の良い方法で処理できるようになった。

アウトオブオーダエンジンを整数とベクトルの2つのドメインに分割

 アウトオブオーダエンジンは、並列処理を最大化し、IPCを向上させる方法でマイクロ命令のスケジューリングを行なう役割を担っている。前世代のPコアは、すべてのuopタイプのデータ準備を決定し、それらをすべての実行ポートにスケジュールまたはディスパッチする単一でのスケジューリング方式を採用していた。この方式はスケーリングが非常に困難であり、ハードウェアのオーバーヘッドが大きくなっていた。

 Lion Coveでは、アウトオブオーダエンジンを整数演算とベクトル演算の2つのドメインに分割することでこの問題を解決している。これらの2つのドメインで、最適化されたuop帯域幅に対応する独立したリネーミング構造と、最適化され移植性を考慮した独立したスケジューラを持つ。これらの各ドメインは互いに独立して拡張することができ、一方のドメインのみを使用するワークロードにおいて電力を節約することが可能になった。

 Lion Coveは、割り当てリネーム帯域幅をサイクルあたり6から8uopに増加させる。以前はサイクルあたり8uopであったリタイアを12uopに拡張した。アウトオブオーダ深度、つまり命令ウィンドウは、512から576uopに増加し、物理レジスタファイルとロードストアバッファは適切に拡大された。uop実行側では、Lion Coveは実行ポートの総数を12から18に増やした。

 整数側では、6つの整数ALUが、3つのシフトユニットと3つの64bit乗算器によって補完され、3サイクルのレイテンシと1サイクルのスループットで動作する。そしてサイクルあたり3つの分岐を並列に解決できる。

 ベクトル演算ユニット側では、Lion Coveは4つの256bit SIMD ALU、2つの256bit FMA(4サイクルレイテンシ)、および単精度と倍精度演算の両方において、以前の世代よりも大幅にレイテンシとスループットが改善された2つの256bit浮動小数点除算器を搭載している。AES、SHA、SM3/4暗号アクセラレーションハードウェアは、ベクトルスタック内に配置されている。

メモリサブシステムの再設計

 キャッシュ設計のポイントは、特定の面積と電力予算内で、帯域幅、レイテンシ、容量のバランスを取り性能の最適化ポイントを見つけることにある。

 Lion Coveは、コアのメモリサブシステムを大幅に再設計し、持続的な高いデータ転送速度(高帯域幅)と低い遅延時間(低レイテンシ)を実現した。そして将来のアップグレードや変更に対応できるように拡張性と柔軟性を伴った設計になっている。

 L1データキャッシュは完全に再設計され、以前の5サイクルから4サイクルのレイテンシでフル稼働できるようになった。Lion Coveでは、L1/L2キャッシュ間に192KBの中間キャッシュを挿入することで、新しい3レベルのキャッシュ階層を導入した。

 これには2つの主な利点がある。1つ目は、コアが認識する平均的なロードトゥユースレイテンシ(プロセッサがメモリからデータを読み込んでから、そのデータを実際に使用するまでにかかる時間)が低下し、IPCが向上する。2つ目は、L2キャッシュの容量を増やし、より多くのデータセットをコア内に保持できる。Lion CoveのL2キャッシュは、Lunar Lakeで2.5MB 、Arrow Lakeで3MBに増えている。

 また、他のいくつかのL2コントローラの最適化や、L1フィルバッファ(L1キャッシュにデータをロードする際に、一時的にデータを保持する領域)が24に、L2ミスキュー(L2キャッシュでキャッシュミスが発生した場合に、その要求を一時的に保持するキュー)が80に増加したことで、Lion Coveは外部帯域幅が大幅に向上している。これはパフォーマンスの高いAIワークロードを実行する上で重要な要素だ。

 また、古いストアの影響下でのロード実行を改善するために、Lion Coveは第3のストアアドレス生成ユニット(メモリシステムにおけるストア操作の効率化と、特に複数のストア操作が同時に行なわれる状況下でのデータの一貫性確保を目的とした機能)を追加。新しいアルゴリズムを使って、メモリの競合を安全に回避し、データの転送方法も改善した。これにより、新しいデータ読み込みが、古いデータ書き込みとデータキャッシュから必要な情報を集めて処理できるようになった。

 こういった改善により、Lion Coveは幅広いワークロードにおいて、2桁台のIPC向上を実現している。

大きな進化を遂げた論理回路設計

 最後に、Lion Coveが大きな変革を遂げた論理回路設計について説明しよう。これは、今後のPコアの将来に影響を与えるだろう。

 これまで、Pコアを設計するために使用されていた独自のツール、フロー、および方法論は、Lion Cove世代では業界標準のソリューションに置き換えられ、Lion Cove独自のニーズにあわせてベンダーやパートナーによって適応、強化されたという。

 Lion Cove世代で、従来の数万セルからなる小さなFub(機能ブロック)で構成され、手動で描かれた回路が支配的だった設計から、数十万から数百万セルの合成ベースのパーティションへと移行した。これは、Lion Cove RTLコードベースの大規模なリファクタリング(動作は同じで改善すること)と設計コラテラル(設計に必要な情報や資料)の合理化によって実現した。

 設計における不要な物理的境界を減らすことで、効率が上がり、スペースの利用が最適化される。また、論理回路や機能を統合することで、余分な工程が減り、最終的な検証時間が短縮される。

 これにより、各世代の新しいPコアの開発では多くの機能を追加することができ、イノベーションの速度が上がる。新しい開発環境では、基本となるスーパーセットPコアIPから特定のSoC製品を迅速に作るための調整ポイントを設計に組み込むことができる。

 実際、Lunar Lakeに搭載されるLion CoveとArrow Lakeに搭載されるものは、いくつかの点で異なるが、性能を犠牲にすることなく進化させたという。Lion Coveのマイクロアーキテクチャのブレイクスルーとデザインイノベーションは、今後のさらなるイノベーションのためにいろいろと下準備がなされているということだ。