...

従来のPC/AT用BIOSを 置き換えるUEFI仕様の概要

by user

on
Category: Documents
23

views

Report

Comments

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
Fly UP