大原雄介の半導体業界こぼれ話

仕様書からIntel今後のコアをちょっと想像する

 久しぶりに仕様の話を。Intelは現在、サーバー向け「Xeon 6」として「Granite Rapids」と「Sierra Forest」を、クライアントPC向け「Core Ultraシリーズ2」として「Lunar Lake」と「Arrow Lake」をそれぞれリリースしている。で、今後の製品としてIntel 18Aを使うサーバー向けの「Clearwater Forest」と、クライアント向けの「Panther Lake」をそれぞれ用意しているのは既に既報の通り。

 問題はこれらのコアが何か?を、仕様からちょっと推察してみよう、という試みである。

Intelが公開しているマニュアルから読み解く

 Intelは現在、「Intel Architecture Instruction Set Extensions Programming Reference」というマニュアルを定期的(概ね3カ月に1回)リリースしている。最新のバージョンは056で、上のサイトからは、047以降がダウンロード可能である。

 このマニュアルは名前の通り、各プロセッサで追加された拡張命令をまとめて示したものであり、冒頭にその一覧(図1)が示されている。ちなみにテーブルは時々ガサっと落ちたりする。たとえばバージョン053のテーブルが図2で、バージョン054以降には含まれていない。

【図1】赤枠部がそれ。これはバージョン056のもの。ちなみにテーブルは次のページに続く
【図2】Direct Stores/AVX512_BF16/CET/Enqueues Stores/CLDEMOTE/PTWRITE/User Wait/Architectural LBRs/HLAT/SERIALIZEは054以降にはない

 ただこれはリビジョン履歴の方に明記があって、これらの命令は「Intel64 and IA-32 Architectures Software Developer's Manuals」の方に移行した格好だ。ちなみに「AVX512_VP2INTERSECT」に関しては「Tiger Lake (not currently supported in any other processors)」(Tiger Lakeだけで利用可能で、ほかのプロセッサでは一切サポートされない)が続いているので、今回は落とした。

 さてそんな拡張命令一覧を、表形式でバージョンごとにまとめたのが下の表だ。バージョン054とバージョン055が一緒なのは、バージョン055が054の間違い修正(リビジョン一覧の中で、差分を示すバーの位置が間違っていたなど)で、新しい話が何も入っていないためである。ここで

・赤字:このバージョンで追加されたプロセッサ
・青字:このバージョンを最後に落とされたプロセッサ

である。

【表1】Intel Architecture Instruction Set Extensions Programming Reference変遷
v049(2023年6月)v050(2023年9月)v051(2023年12月)v052(2024年3月)v053(2024年6月)v054/v055(2024年10月)v056(2024年12月)
Advanced Matrix Extensions (AMX) Includes CPUID Leaf 1EH, “TMUL Information Main Leaf,” & CPUID bits AMX-BF16, AMX-TILE, and AMX-INT8.Sapphire Rapids←←←←←←
User Interrupts (UINTR)Sapphire Rapids, Sierra Forest,
Grand Ridge, Arrow Lake,
Lunar Lake
←←←←←←
Trust Domain Extensions (TDX)Future Processors Emerald Rapids←←←←←
Linear Address Masking (LAM)Sierra Forest, Grand Ridge,
Arrow Lake, Lunar Lake
←←←←Sierra Forest, Grand Ridge,
Arrow Lake, Lunar Lake,
Diamond Rapids
←
IPI VirtualizationSapphire Rapids, Sierra Forest,
Grand Ridge, Arrow Lake,
Lunar Lake
←←←←←←
RAO-INT Grand Ridge Future processors←←←←←
PREFETCHIT0/1Granite RapidsGranite Rapids,
Clearwater Forest,
Panther Lake
←←Granite Rapids,
Clearwater Forest,
Panther Lake
Granite Rapids,
Clearwater Forest
←
AMX-FP16Granite Rapids←←←←←←
CMPCCXADDSierra Forest, Grand Ridge,
Arrow Lake, Lunar Lake
←←←←Sierra Forest, Grand Ridge,
Arrow Lake, Lunar Lake,
Diamond Rapids
←
AVX-IFMASierra Forest, Grand Ridge,
Arrow Lake, Lunar Lake
←←←←Sierra Forest, Grand Ridge,
Arrow Lake, Lunar Lake,
Diamond Rapids
←
AVX-NE-CONVERTSierra Forest, Grand Ridge,
Arrow Lake, Lunar Lake
←←←←Sierra Forest, Grand Ridge,
Arrow Lake, Lunar Lake,
Diamond Rapids
←
AVX-VNNI-INT8Sierra Forest, Grand Ridge,
Arrow Lake, Lunar Lake
←←←←Sierra Forest, Grand Ridge,
Arrow Lake, Lunar Lake,
Diamond Rapids
←
RDMSRLIST/WRMSRLIST/WRMSRNSSierra Forest, Grand RidgeSierra Forest, Grand Ridge,
Panther Lake
←←←Sierra Forest, Grand Ridge,
Arrow Lake, Lunar Lake,
Diamond Rapids
←
Linear Address Space Separation (LASS)Sierra Forest, Grand Ridge,
Arrow Lake, Lunar Lake
←←←←Sierra Forest, Grand Ridge,
Arrow Lake, Lunar Lake,
@@em||rDiamond Rapids@@
←
Virtualization of the IA32_SPEC_CTRL MSR: Specify Bits Cannot be Modified by Guest Software/Virtualization of guest accesses to IA32_SPEC_CTRLSapphire Rapids, Sierra Forest,
Grand Ridge
Sapphire Rapids, Sierra Forest,
Grand Ridge,
Panther Lake
←←←Sierra Forest, Grand Ridge,
Arrow Lake, Lunar Lake,
Diamond Rapids
←
UC-Lock Disable via CPUID EnumerationSierra Forest, Grand Ridge←←←←←←
LBR Event LoggingSierra Forest, Grand Ridge
Arrow Lake S, Lunar Lake
←←←←Sierra Forest, Grand Ridge,
Arrow Lake, Lunar Lake,
Diamond Rapids
←
AMX-COMPLEXGranite Rapids D←←←←Granite Rapids D,
Diamond Rapids
←
AVX-VNNI-INT16Arrow Lake S, Lunar LakeArrow Lake S, Lunar Lake,
Clearwater Forest
←←←Arrow Lake S, Lunar Lake,
Clearwater Forest,
Diamond Rapids
←
SHA512Arrow Lake S, Lunar LakeArrow Lake S, Lunar Lake,
Clearwater Forest
←←←Arrow Lake S, Lunar Lake,
Clearwater Forest,
Diamond Rapids
←
SM3Arrow Lake S, Lunar LakeArrow Lake S, Lunar Lake,
Clearwater Forest
←←←Arrow Lake S, Lunar Lake,
Clearwater Forest,
Diamond Rapids
←
SM4 (VEX)Arrow Lake S, Lunar LakeArrow Lake S, Lunar Lake,
Clearwater Forest
←←←Arrow Lake S, Lunar Lake,
Clearwater Forest,
Diamond Rapids
←
SM4 (EVEX)N/A←←←←Diamond Rapids←
UIRET flexibly updates UIFSierra Forest, Grand Ridge,
Arrow Lake, Lunar Lake
Sierra Forest, Grand Ridge,
Arrow Lake, Lunar Lake
←←←Sierra Forest, Grand Ridge,
Arrow Lake, Lunar Lake,
Diamond Rapids
←
Total Storage Encryption (TSE) and the PBNDKB instructionLunar Lake←←←← Future processors←
Advanced Vector Extensions 10 Version 1 (AVX10.1)N/A Granite Rapids←←←←←
USER_MSR/URDMSR and UWRMSR instructionsN/A Clearwater Forest←←←Clearwater Forest
Diamond Rapids
←
Flexible Return and Event Delivery (FRED) and the LKGS instructionN/A Panther LakePanther Lake,
Clearwater Forest
←←Panther Lake,
Clearwater Forest,
Diamond Rapids
←
NMI-Source ReportingN/A← Panther Lake
Clearwater Forest
←←Panther Lake,
Clearwater Forest,
Diamond Rapids
←
User-Timer Events and InterruptsN/A←N/A Clearwater Forest←←←
APIC-Timer VirtualizationN/A←N/A Clearwater Forest←←←
Management of IA32_SPEC_CTRL by VMX transitionsN/A←←←← Clearwater Forest,
Diamond Rapids
←
Intel Processor Trace Trigger TracingN/A←← Clearwater Forest←←←
Monitorless MWAITN/A←← Clearwater Forest←←←
Advanced Performance Extensions (APX)N/A←← Future processors← Diamond Rapids←
Advanced Vector Extensions 10 Version 2 (AVX10.2)N/A←←←← Diamond Rapids←
Architectural PEBSN/A←←←← Clearwater Forest,
Diamond Rapids
Panther Lake,
Clearwater Forest,
Diamond Rapids
Immediate encodings for RDMSR and WRMSRNSN/A←←←← Clearwater Forest←
MOVRS and the PREFETCHST2 instructionN/A←←←← Diamond Rapids←
AMX-MOVRSN/A←←←← Diamond Rapids←
AMX-AVX512N/A←←←← Diamond Rapids←
AMX-FP8N/A←←←← Diamond Rapids←
AMX-TF32N/A←←←← Diamond Rapids←
AMX-TRANSPOSEN/A←←←← Diamond Rapids←
RDT Region Aware Memory Bandwidth AllocationN/A←←←← Diamond Rapids←

 一番分かりやすいのが「RAO-INT」。ADD/AND/OR/XORにAtomic操作を組み合わせたAADD/AAND/AOR/AXORの4つが定義されているのだが、2022年9月のバージョン046で初めてアナウンスされた。

 この命令をサポートするのはGrand Ridgeになるハズだったのだが、2023年9月のバージョン050でこれが“Future processors(将来のプロセッサ)”に切り替わった。要するにGrand Ridgeでの実装が取りやめになったわけだ。命令そのものはなくなっていないので、将来いつか実装される日が来るかもしれないが、今のところ具体的な実装予定はないことになっている。

 落とされたもう1つの例が、2024年10月のバージョン054で、Panther Lakeでのサポートがなくなった「PREFETCHIT0/1」である。これは特定のヒントに応じて、コードをプロセッサに近いメモリ(要するにキャッシュ)に移動させる命令であり、要するに命令プリフェッチである。

 もともとこの命令は2022年9月のバージョン046でGranite Rapids向けに実装されることが明らかになり、そして2023年9月のバージョン050でClearwater ForestおよびPanther Lakeでのサポートが追加されていたのが、バージョン054でPanther Lakeだけが落とされることになった。なんというか、非常に恣意的なものを感じる。

 そもそもPanther Lakeがこのリストに追加されたのが2023年9月のバージョン050なのであるが、この時Panther Lakeがサポートする拡張命令として追加されたのが「RDMSRLIST(Read List of Model Specific Registers)」/「WRMSRLIST(Write List of Model Specific Registers)」/「WRMSRNS(Non-Serializing Write to Model Specific Register)」とI「A32_SPEC_CTRL MSR」の仮想化、それと「FRED」である(FREDは以前紹介したので今回説明は割愛する)。

 この中でRDMSRLIST/WRMSRLIST/WRMSRNSに関して言えば、これはMSR(Model Specific Registers:特定機種ごとの専用レジスタ)の操作だし、IA32_SPEC_CTRL MSRの仮想化というのは投機実効を管理するIA32_SPEC_CTRLというレジスタがサイドチャネル攻撃の標的になりやすいということで、この対策である。

 ちなみに2023年12月のv051では「NMI-Source Reporting」という機能も追加されたが、これはFREDの一部であり、FREDの仕様によればRevision 6.0(2023年12月)に追加されている。要するにFREDの改定に合わせてArchitecture Instruction Set Extensions Programming Referenceの方にも反映されたという格好だ。

Panther LakeとDiamond Rapidsの違和感

 さてこの表を改めて見直してみると、ちょっと違和感がある。1つはPanther Lakeの位置付けであり、もう1つはDiamond Rapidsの定義時期である。

 順番が逆になるが、Diamond Rapidsの名前が広く世の中に知られるようになったのは、2022年1月にThe Next Platformが「In The Absence Of A Xeon Roadmap, Intel Makes Us Draw One」という記事で表を出してからだと記憶している。

 この時にはDiamond RapidsはGranite Rapidsの後継としてTSMC N5ないしIntel 3を利用し、2025年に登場という話であった。コアアーキテクチャは「Lion Cove」で、最大144コアという構成。つまりDiamond Rapidsというコード名は、2022年には既に存在しており(まだ企画段階)、ところがそこから内部構造が二転三転して、結果として2024年10月に最終的に内部的に仕様が決まった、という意味ではないかと筆者は考える。

 ちょっと視点を変えて、プロセッサ別に対応している拡張命令一覧をまとめたのが表2である。これを見て思うところは、「やっぱPanther Coveって、Panther Lake用だったんじゃね?」という話である。いきなり話が結論まで吹っ飛んでいるので、分からない読者が多数だと思うので、順を追って話したい。

【表2】プロセッサ別対応拡張命令一覧
ClientsP-Core XeonE-Core Xeon
Instruction ExtensionsArrow LakeArrow Lake SLunar LakePanther LakeSapphire RapidsEmerald RapidsGranite RapidsGranite Rapids DDiamond RapidsSierra ForestGrand RidgeClearwater Forest
Advanced Matrix Extensions (AMX) Includes CPUID Leaf 1EH, “TMUL Information Main Leaf,” & CPUID bits AMX-BF16, AMX-TILE, and AMX-INT8.----○○○-○---
User Interrupts (UINTR)○○○-○○○○○○○○
Trust Domain Extensions (TDX)-----○○○○---
Linear Address Masking (LAM)○○○--○○○○○○○
IPI Virtualization○○○-○○○○○○○○
RAO-INT------------
PREFETCHIT0/1------○○○--○
AMX-FP16------○○○---
CMPCCXADD○○○-----○○○○
AVX-IFMA○○○-----○○○○
AVX-NE-CONVERT○○○-----○○○○
AVX-VNNI-INT8○○○-----○○○○
RDMSRLIST/WRMSRLIST/WRMSRNS○○○○----○○○○
Linear Address Space Separation (LASS)○○○-----○○○○
Virtualization of the IA32_SPEC_CTRL MSR: Specify Bits Cannot be Modified by Guest Software/ Virtualization of guest accesses to IA32_SPEC_CTRL○○○○----○○○○
UC-Lock Disable via CPUID Enumeration---------○○○
LBR Event Logging-○○-----○○○○
AMX-COMPLEX-------○○---
AVX-VNNI-INT16-○○-----○--○
SHA512-○○-----○--○
SM3-○○-----○--○
SM4 (VEX)-○○-----○--○
SM4 (EVEX)--------○---
UIRET flexibly updates UIF○○○-----○○○-
Total Storage Encryption (TSE) and the PBNDKB instruction------------
Advanced Vector Extensions 10 Version 1 (AVX10.1)------○○○---
USER_MSR/URDMSR and UWRMSR instructions--------○--○
Flexible Return and Event Delivery (FRED) and the LKGS instruction---○----○--○
NMI-Source Reporting---○----○--○
User-Timer Events and Interrupts-----------○
APIC-Timer Virtualization-----------○
Management of IA32_SPEC_CTRL by VMX transitions--------○--○
Intel Processor Trace Trigger Tracing-----------○
Monitorless MWAIT-----------○
Advanced Performance Extensions (APX)--------○---
Advanced Vector Extensions 10 Version 2 (AVX10.2)--------○---
Architectural PEBS---○----○--○
Immediate encodings for RDMSR and WRMSRNS-----------○
MOVRS and the PREFETCHST2 instruction--------○---
AMX-MOVRS--------○---
AMX-AVX512--------○---
AMX-FP8--------○---
AMX-TF32--------○---
AMX-TRANSPOSE--------○---
RDT Region Aware Memory Bandwidth Allocation--------○---

 ちょっと表2をおいておき、表3に移りたい。これはIntelの主要なコアアーキテクチャ(Pコアのみ)と、それを搭載するプロセッサの関係をまとめたものである。ちなみにこちらはIntelが公式に示したもの“ではない”ので注意されたい。

【表3】主要コアアーキテクチャとプロセッサの関係

 左が2022年頃に言われていたロードマップ、右が最近言われているロードマップである。Raptor Coveの世代までは変化がないというか、2022年には既にRaptor Lakeベースの第13世代Coreが発売されていたから、これは当たり前である。問題はこれに続く話である。この当時、Diamond RapidsはLion Coveベースで構築される予定になっており、一方Panther Lake向けにPanther Coveが開発されていた。というか、この時にはまだ「Cougar Cove」はPanther Lakeの後に予定されていたマイクロアーキテクチャで、「Nova Lake」向けだったと記憶している。

 ところが今では、Panther LakeはCougar Coveになり、Panther CoveはDiamond Rapidsに採用されることになったらしい。そしてNova LakeにはCoyote Coveが採用されるとの噂である。何があったのか?という話であるが、ここからは筆者の推測である。

スケジュールが大きくずれ込んだDiamond Rapids

 まず、Diamond Rapidsは完全に仕切り直しになった。そもそもSapphire Rapidsがスケジュール通りに出なかったのが最大の問題であり、この結果、続くEmerald Rapids/Granite Rapidsも当初のスケジュールから遅れることになった。

 元々Sapphire RapidsはAMDの「Milan」、つまりZen 3ベースEPYC対抗となるはずだったが、スケジュールの遅れから「Genoa」、つまりZen 4ベースEPYCとぶつかることになった。Emerald Rapidsは物理的な構造はともかく、内容は“Sapphire Rapids Refresh”であって、Genoaとのギャップを埋めるのは難しかった。

 これに続くGranite Rapidsがやっと昨年(2024年)出荷を開始したが、こちらは本来Genoaと戦うべき製品だったもので、一方AMDはZen 5ベースの「Turin」の市場投入を開始している。要するに引き続き1世代分のギャップがまだ埋まっていない。

 Diamond Rapidsは筆者が知る限り最低でも1回(多分実際には2回)仕切り直しになっているが、仕切り直しが入るたびに遅れるわけで、これを埋めるためにもコアの大幅な性能向上が必要と判断したのではないかと思う。結果、Diamond RapidsのコアはLion CoveをスキップしてPanther Coveに切り替わった。これが恐らく2024年10月のタイミングである。

 一方でクライアント側は、こちらはこちらで大混乱していた。1つは「4Y5N」の崩壊である。4Y5N、つまり5 nodes in 4 years(4年のうちに5つのノードを投入する)は2022年2月の投資家向け会議で言い始めた用語で、この時には

5N4Yの戦略。写真は2024 IEEE VLSI Symposiumのもの
  • Intel 7:2021年から量産スタート
  • Intel 4:2022年後半に量産スタート予定
  • Intel 3:2023年後半に量産スタート予定
  • Intel 20A:2024年前半に量産スタート予定
  • Intel 18A:2024年後半に量産スタート予定

という話であった。ちなみにクライアントのロードマップで言えば

  • Meteor Lake:Intel 4 2023年~2024年
  • Arrow Lake:Intel 20A/TSMC N3B 2023年~2024年
  • Lunar Lake:Intel 18A/External 2024年~

がこの時に示されている。ところがこの後、プロセス投入の遅れとロードマップの変更が入った。まずプロセスで言えば

  • Intel 4:2023年に量産スタート
  • Intel 3:2024年に量産スタート
  • Intel 20A:キャンセル
  • Intel 18A:2025年に量産スタート予定

ということになり、またクライアントCPUは

  • Meteor Lake:Intel 4 2023年12月
  • Lunar Lake:TSMC N3B 2024年9月
  • Arrow Lake:TSMC N3B 2024年10月

という具合になった。なぜIntel 20Aがダメだったのかの理由は不明だが、歩留まりが上がらないか、性能が上がらないか、あるいはその両方というあたりではないかと思うが、とにかくLunar LakeもArrow Lakeも、CPUタイルはTSMC N3Bを利用することになった。

 しかもCopilot+ PC対応CPUを用意する必要に迫られたことで、本来はArrow Lakeの後に投入するはずだったLunar LakeをArrow Lakeの前に投入するというオマケつきである。この結果として、Intelのクライアント向けのロードマップには

  • Intel 20AないしIntel 18Aを利用する製品が当分出てこない
  • Lunar Lakeの前倒しによって、特にモバイル向けの製品がしばらく間が空いてしまうことになる

という問題が生じた。特にIntel 18Aを利用する製品がないことは、Intelの製造部門であるIntel Foundryにとって致命的である。

Panther Lakeコアアーキテクチャは一体何なのか

 そもそもMeteor Lake以降の製品は、Intel Foundryの技術力のアピールという裏のテーマも持ち合わせている。Foverosを利用した3Dパッケージは、Intelのパッケージング技術が現実に利用できることを示した貴重な存在でもあり、なのでIntel 20Aがなくなった穴を早急に埋める必要がある。

 本来ならば、Panther LakeはLunar Lakeの後継として2026年以降に投入されても不思議ではなかったのが、Lunar Lakeの前倒しの影響もあって予定より早期に、しかもIntel 18Aを利用しての製造を余儀なくされた。

 ここでコアの話に再び戻る。Intelは本来、Panther LakeにPanther Coveを入れるつもりだったのだと筆者は考える。しかしながら予定が押してしまった関係で、Panther Coveで導入予定だった機能を全部実装する時間が取れなくなった。

 そこで、基本的な構造はPanther Coveと同じながら、サーバー向けに必要とされる機能は全部省いたサブセットを切り出し、これをCougar Coveの名前でPanther Lakeに実装。一方フルセットのPanther Coveは、Diamond Rapidsに実装することになり、元々Cougar Coveの名前で開発していた次世代のマイクロアーキテクチャは、「Coyote Cove」というコード名に変わったのではないか、というのが筆者の推察である。

 FREDやNMI-Source Reporting、Architectural PEBSなど、Panther LakeとDiamond Lakeしかサポートしていない拡張命令があるあたり、この2つは根っこが同じマイクロアーキテクチャであるように思われるのだが、その一方でArrow LakeやLunar Lakeなどでもサポートされている命令(UINTRとかLAM、IPI Virtualizationなど)が軒並みPanther Lakeで未サポートというあたり、Cougar CoveのMicroarchitectureにはなにか歪というか、バランスが取れていない感じが強い。しかし、Intel 18Aでの量産に間に合わせるためにサブセットを作ってリリースしたとすれば、それも頷ける。

 えらい手間がかかったが、久々にArchitecture Instruction Set Extensions Programming Referenceを見比べてみたら、何となくPanther Lakeの素性が透けて見えて来たのは面白かった。