Linuxカーネルの生みの親であるLinus Torvalds氏が、AMD64/x86-64アーキテクチャの機能レベル分類システムを「完全な破綻したガラクタ」と強く批判し、この仕組みのLinuxカーネルへの導入を明確に拒否する姿勢を示した。
批判の焦点となったx86-64レベル分類システム
問題となっているx86-64マイクロアーキテクチャレベルは、2020年にRed HatのFlorian Weimer氏によって導入された分類システムである。当初は「Level A, B, C」として提案され、後に「Level D」が追加された。この仕組みの本来の目的は、ハードウェアとOS/ソフトウェア間の互換性と相乗効果を、より良いコンパイル最適化を通じて改善することにあった。
各レベルの詳細な特徴は以下の通りである:
x86-64-v2(旧Level A)
- Streaming SIMD Extensions 4.2(SSE4.2)までのベクトル命令をサポート
- Supplemental Streaming SIMD Extensions 3(SSSE3)を含む
- データ分析やビット操作に有用なPOPCNT命令
- 並行アルゴリズムで使用される2ワード比較交換命令CMPXCHG16B
- AMD BulldozerやIntel Nehalem世代以降のCPUが該当
x86-64-v3(旧Level B)
- AVXおよびAVX2ベクトル命令セットを追加
- ビッグエンディアンデータアクセス用のMOVBE命令
- 追加のビット操作命令群
- Intel HaswellやAMD Excavator世代以降のCPUが対象
x86-64-v4(旧Level C/D)
- AVX-512の一部のバリアントを包含
- v3の全機能を前提とした上位互換
この分類システムの主な課題は、CPUアーキテクチャの進化が必ずしも直線的ではない現実に対応できない点にある。例えば、Intel社は第11世代のRocket Lake CPUでAVX-512を導入したものの、その後の世代で同機能を削除している。このような「機能の追加と削除」のダイナミクスは、線形的な進化を前提とした現行の分類システムでは適切に表現できない。
さらに、この分類システムはglibcから派生した非公式な仕組みであり、業界全体での標準化プロセスを経ていない点も、Torvalds氏が指摘する重要な問題の一つとなっている。技術の標準化において、十分な検討と合意形成を経ないまま導入された仕組みが、後にエコシステム全体に複雑性をもたらす事例は少なくない。
Torvalds氏による具体的な問題提起
LinuxカーネルのビルドシステムであるKConfigに関する議論の中で、Torvalds氏は現行のx86-64マイクロアーキテクチャレベル分類に対して、複数の本質的な問題を痛烈に指摘した。
まず根本的な問題として、現行の分類システムが採用している線形的な進化モデルへの批判がある。Torvalds氏は「マイクロアーキテクチャの特徴を表現する実用的なモデルは確かに存在しており、それはCPUIDビットである」と指摘している。CPUIDビットによる表現は、個々の機能の有無を直接的に示すことができ、現実のハードウェア実装をより正確に反映できる。これに対し、v2、v3、v4という単純な番号付けは、CPUアーキテクチャの発展が直線的な進化を遂げているという誤った前提に基づいていると批判している。
次に、この「単純化」が実際には複雑性を増大させている点を具体例で説明している。従来であれば「このCPUはcmpxchgb16命令をサポートしているか?」という直接的な問いかけで済んでいた確認作業が、新しい分類システムでは「v3とは一体何を意味するのか?」という抽象的な解釈を必要とする問題に変質してしまうと指摘する。これは、本来の目的であった単純化が、逆効果をもたらしている典型的な例といえる。
さらにTorvalds氏は、この分類システムが「完全に非公式なもの」であり、「glibcのアーティファクト」に過ぎないと批判している。標準化プロセスを経ていない非公式な仕組みを、Linuxカーネルという基幹システムに導入することへの強い警戒感を示している。「このような愚かな考えをカーネルに導入することは絶対にない」という強い表現からも、彼の危機感の深さが伝わってくる。
この問題提起の背景には、実際のハードウェア開発の現場で起きている現象がある。例えばIntelは第11世代CoreプロセッサでAVX-512を導入しながら、その後の世代で同機能を削除している。このような実例は、CPUの機能セットが必ずしも累積的に増加していくわけではないという、Torvalds氏の指摘を裏付けるものとなっている。特に、今後登場が予定されているAVX10において、256ビットと512ビットの両オプションが存在することも、線形的な進化モデルの限界を示す具体例として挙げられている。
Xenospectrum’s Take
Torvalds氏の批判は、Intel Core第11世代でAVX-512を導入し、その後の世代で撤去したIntelの事例に象徴されるように、現実のCPUアーキテクチャの進化が必ずしも直線的ではないという洞察に基づいている。また、彼がx86エコシステム諮問グループのメンバーである点を考慮すると、この発言は単なる個人的な見解を超えて、業界全体のアーキテクチャ設計思想に影響を与える可能性が高い。
現在のソフトウェアエコシステムにおいて、過度な抽象化や「簡略化」が却って複雑性を増大させる事例は少なくない。Torvalds氏の指摘は、技術的負債を生まないための警鐘として受け止めるべきであろう。
Source
コメント