Linux 7.1、37年間続いたi486サポートに幕を下ろす
1989年に登場し、Linuxの歴史と共に歩んできたIntel i486プロセッサが、ついにカーネルから姿を消そうとしている。37年間の互換性維持に、終止符が打たれる。
1989年に登場し、Linuxの歴史と共に歩んできたIntel i486プロセッサが、ついにカーネルから姿を消そうとしている。37年間の互換性維持に、終止符が打たれる。
i486サポート削除のパッチがtip/tip.gitに投入
Linuxカーネルの開発ブランチに、Intel i486 CPUのサポートを段階的に廃止するパッチが投入された。ベテランカーネル開発者のインゴ・モルナーが作成したこのパッチは、tip/tip.gitリポジトリの「x86/platform」ブランチに今週マージされ、今月後半に予定されるLinux 7.1のマージウィンドウで提出される見込みだ。
削除対象は3つのKconfigビルドオプションだ。FPU(浮動小数点演算ユニット)を持たない486クラスCPU向けのCONFIG_M486SX、FPU内蔵の486クラスCPU向けのCONFIG_M486、そしてAMD Elanプロセッサ向けのCONFIG_MELANが消える。
これはまだ第一段階にすぎない。今回のパッチでi486カーネルイメージのビルドができなくなり、その後のカーネルリリースで実際のi486 CPUサポートコードが除去される計画だ。
リーナス・トーバルズは最近、i486サポートの維持について「この手の問題に開発の手間を1秒でもかける理由はどこにもない」と述べている。技術的に正しい判断だと思う。
4年越しの決断──2022年の提案から2026年の実行へ
この決断には前史がある。トーバルズが最初にi486サポートの廃止を提案したのは2022年のことだ。「2012年にi386サポートを廃止した。2022年にi486も廃止する時期ではないか」と問いかけたが、当時は反対意見もあり見送られた。
2025年4月、モルナーがトーバルズの発言を引用する形で15パッチのRFCシリーズを投稿。32ビットx86システムのハードウェアベースラインをTSC(タイムスタンプカウンター)とCMPXCHG8B命令のサポートを持つCPU――つまり初代Pentium以降――に引き上げることを提案した。
このRFCでは80ファイルにわたる約1万4,100行のコード削除が見積もられていた。だが、一気に全廃する方針はすんなりとは通らなかった。
そして2026年4月、ついに実行に移された。今回のアプローチは段階的だ。まずKconfigオプションを削除し、苦情がなければ後続のカーネルシリーズで互換コードを本格的に除去する。
モルナーはパッチノートで「x86アーキテクチャには、ごくわずかな人しか使っていない古代の32ビットCPUをサポートするための、複雑なハードウェアエミュレーション機構がある。この互換グルーコードが問題を引き起こすことさえあり、その解決に費やされる時間は他のことに使えるはずだ」と記している。
なぜ「互換グルーコード」が問題だったのか
i486サポートの維持が厄介だった理由は、単なるレガシーコードの存在ではない。i486世代のCPUにはハードウェアFPUを持たないモデルが多数存在した。486SXやCyrix/IBM系の互換チップがそれだ。カーネルはこれらのためにソフトウェアFPUエミュレーションライブラリ(math-emu/)を保持し続けてきた。
さらに厄介なのがCMPXCHG8B命令の問題だ。これは8バイトのアトミックな比較・交換を行う命令で、SMPロックなどカーネルの中核機構に深く関わる。i486にはこの命令がなく、カーネルはcli/sti(割り込み禁止/許可)によるエミュレーションを使って回避していた。
トーバルズ自身が2022年に指摘した通り、この互換コードは「今まさにバグだらけで壊れている」状態だった。テストする人がいないから、壊れていても誰も気づかない。気づかないから直す人もいない。典型的な技術的負債のスパイラルだ。
影響を受けるのは誰か
現実的に言えば、ほぼ誰も影響を受けない。
i486は1989年に登場し、Intelが最後の出荷を行ったのは2007年9月だ。生産終了から19年、発売からは37年が経過している。既知のLinuxディストリビューションでi486サポートを出荷しているベンダーは存在しない。
しかし「誰もいない」は正確ではない。レトロコンピューティング愛好家、組み込みシステムの一部、そしてFPGAベースのao486コアを動かすMiSTerユーザーがわずかに存在する。ただし、彼らにはLTSカーネルという選択肢が残っている。
Phoronixのフォーラムでは、あるユーザーがBoeing 777の初期型サービスノードに486SXが使われていたことを指摘している。ただしこれは産業用UNIXであり、Linuxではない。レトロハードウェアの愛好家たちからも「寂しいが理解できる」という反応が大勢を占め、37年前のCPUに執着する声はほとんど上がっていない。
前例としてのi386廃止
2012年のLinux 3.8でi386サポートが廃止された際も同じモルナーが「Nuke 386-DX/SX support」というプルリクエストを提出し、トーバルズは「ノスタルジーはない。せいせいする」と応じた。あのときは24ファイル、425行の削除だった。今回はその規模を大きく上回る。
i386廃止からi486廃止まで14年。次のターゲットは何か。コミュニティではi686より前のCPUサポート、さらにはBIOSブートパスのUEFI一本化なども議論されている。カーネルの「最低ライン」は少しずつ、しかし確実に上がり続けている。
37年分のノスタルジーと、その先
i486は単なる古いCPUではない。オンチップFPUの統合、8KBのL1キャッシュ、パイプライン化された実行ユニット。現代のCPU設計に連なる技術の多くが、このチップで初めて実現された。Linuxカーネル自体が最初に動いたのはi386だが、i486は多くの初期Linux開発者にとって「実用的なLinuxマシン」の原点だった。
Phoronixフォーラムのあるユーザーは「Linux開発がi486で始まったなら、トーバルズにとってほろ苦い決断ではないか」と書いた。別のユーザーが即座に訂正した。「それは386だ。数年前に廃止済み」。
カーネルのソースコードからi486の文字が消えても、37年前にこのチップが確立したオンチップFPUとL1キャッシュの設計は、今日出荷されるすべてのx86プロセッサに残っている。
参照元
関連記事
- Intel 8086の「遅すぎる掛け算」を2.5倍速にしたISAカードの話
- Intel Vulkanドライバに5年越しの最適化が着弾、LinuxのDX12ゲーム性能が向上へ
- 悪意あるUSBを検出するLinuxカーネルドライバが登場
- Nova LakeはIPC優位、クロックはZen 6が制す
- Debianに年齢確認法の波──SPIが法的助言に着手
- Linux 7.0でPostgreSQL性能半減、修正困難か
- Nova Lake-Sの42コアが44コアに増量、Intelが設計を修正
- Gentooのエイプリルフールがガチだった件──36年越しのカーネルが動く
- Core Ultra 7 270K Plus即完売、歪んだ国内初値
- Intel封印の12Pコア、市販マザボでWindows起動に成功