UEFIの歴史の雑なまとめとItaniumの思い出
前回の記事を書いたら、ありがたいことに色々な情報を教えてもらうことができました。「まず情報を出すと情報を得られる」"give & take" の典型ですね。
UEFIの雑なまとめ
IntelとHPが共同で開発していた次世代64bit CPUのItanium向けのブートローダーとしてMicrosoftを巻き込んで開発されたのがEFI。
EFIはアーキテクチャには依存しないように設計されていた。
EFI v1.x はIntelに所有権があったが、Unified EFI Forumにそれを移管し、v2.x にするとともにUEFIと改名した。
UEFIはx86_64, aarch64などで採用され、MIPS, RISC-Vもそれに続くと思われている。
だいたいWikipediaに書いてある。
@oruminさん 「UEFI の reference のアプリケーション開発 SDK である EDK2 は設定ファイルのクセや型定義、ツールチェーンの指定などそこかしこに MS の流儀が見てとれて、なんなら EDK1 のほうのドキュメントでは Windows 2000 や Windows XP 上で Visual C++ のコンパイラを使う前提で書かれています」
というこのなので、前回の記事の通り、MS-DOS時代からの痕跡が残っています。
UEFIであっても条件コンパイルが
#ifdef CONFIG_EFI
などと書かれているのはUEFIの前身がEFIだったから。
余談: 壮大に失敗したItanium
Itanium (/aɪˈteɪniəm/ eye-TAY-nee-əm)
私は実際に見聞きした範囲で、この時代の空気感を伝えておこうと思います。
20世紀末、コードネーム "Merced" として発表されたIntelによる次世代64bit CPU(IA64)は誰しもが成功を疑っていませんでした。MicrosoftのWindowsシリーズを始め、全ての商用UNIXが対応を表明していました。そしてワークステーション[1]のメーカーも後継機ではIA64に移行することを表明していました。それにより、ワークステーションにCPUを供給していた半導体メーカーはとてもケンカにならないと早々に撤退を決めてしまっていたほどです。
究極の64bit CPUとして登場したDECのAlphaもそのあおりを受けてフェードアウトすることになりました。
JavaOneというSunの主催した技術者のカンファレンスでHPの人がこのCPUについて説明していたことを私はよく覚えています。CPU内のレジスタとしてソフトウェアから見えるレジスタ以外にたくさんのその複製を仮想レジスタとして持っていて、投機的実行ということで、ブランチ命令があるとその両方を仮想レジスタを使って先に実行してしまい、ブランチの結果がわかった後で要らなかった方を捨てると言っていました。バケモノだなと思いました。
IA64の時代が来るとみんなが思っていたのですが、実際に登場したItaniumの性能は膨らみすぎた幻想を打ち砕くものでした。特にx86互換モードでの速度が遅いということが、移行を妨げるものになりました。
その後の歴史はみなさんの知っての通りで、AMDの開発した64bit拡張が主流となり[2]、Intelもそれを採用しIA64は製造終了となりました。
Discussion