Comments
Description
Transcript
従来のPC/AT用BIOSを 置き換えるUEFI仕様の概要
第 2 特集 x86 最新活用技法 IBM PC/AT 誕生から 30 年のしがらみを捨て去る 従来の PC/AT 用 BIOS を 置き換える UEFI 仕様の概要 藤原 尚伸,高橋 泰博 UEFI 仕様の BIOS は,32 ビット以上の CPU に対応して開発された.UEFI を利用すると,大容量ハード・ディ スクの対応や,クロス・プラットホームであること,事前処理を最小限にできる,BIOS の設定領域の拡大,といっ たメリットがある.本稿では,UEFI の概要を解説し,例として 64 ビット CPU での処理の流れを紹介する. ターフェースもあるが).OS 起動時もこのモードで動作し 1.BIOS の概要と問題点 ます. リアル・モードで使用可能なアドレス領域は 1M バイト x86 の PC/AT 互換 BIOS は,その基本構造を大きく変え です.BIOS は原則 1M バイト以下のこの空間(図 1)で OS ず に 互 換 性 を 維 持 し な が ら, 新 し い CPU や デ バ イ ス に対してランタイム・インターフェースを提供します.そ (VGA,CD-ROM,PCI,USB など) ,PnP や ACPI といっ のためコード・サイズをできるだけ小さくできるよう,C た新しい仕様に対応してきました.CPU は 16 ビットから などの高級言語ではなく,主にアセンブリ言語を用いて作 64 ビットまで拡張されましたが,BIOS のインターフェー 成されてきました.これは,BIOS に対して構造化やオブ スは,基本的には 8086 のころから存在する 16 ビットのリ ジェクト指向などのプログラミング手法を適用する妨げと アル・モードのままです(PCI BIOS など 32 ビット・イン なり,BIOS そのものの拡張性の足かせとなっていました. そこで UEFI 仕様で BIOS のフレームワーク自体を再定義 する取り組みがされました. 4Gバイト ファームウェア領域 (フラッシュ ROM) メモリ・マップド I/O 4Gバイト ファームウェア領域(フラッシュ ROM) RAM(BIOSでは未使用) メモリ・マップド I/O UEFIランタイム・サービス用 Bootサービス用(OS起動時に開放) 1Mバイト RAM(EFIで管理,利用される) BIOS (64Kバイト∼128Kバイト) UMB (128Kバイト∼192Kバイト) (オプションROM領域として利用) VRAM(128Kバイト) 0 RAM(640Kバイト) (BIOSで利用可能) 1Mバイト VRAM(128Kバイト) 図 1 従来の BIOS のメモリ利用例 従来の BIOS は,アドレス領域が 1M バイトしかなかった 8086 のころからの構造を 互換性維持のために引き継いでいる.1M バイトの狭い領域で新しいデバイスや機 能のサポートを行うため,領域の使用を節約する努力が必要. 互換性の問題により,1M バイトより上の領域を積極的に利用できず,ほとんどが 未使用である.一番上のファームウェア領域には BIOS が格納されているフラッシュ ROM のイメージが見える.BIOS はここから 1M バイト以下の BIOS 領域にコードを コピーして実行する. 100 KEYWORD UEFI,BIOS,互換性,DXE ドライバ 未使用(256Kバイト) 0 RAM(640Kバイト) (未使用) 図 2 UEFI のメモリ利用例 1M バイト以上のアドレス領域を主に利用し,領域不足に悩まされない.UEFI とし てアドレス 1M バイト以下の領域は利用されないが,CSM で従来の BIOS との互換 性維持の目的で利用される. Nov. 2011