第1章 PCのアドレス・マップと

割り込みコントローラ(1)

アドレス・マップ

 IBM PC/AT互換機はオープンな規格であるといわれています.しかし,こと日本にいる限りにおいては「簡単なI/Oアドレスや,そこに接続されているデバイス資料の入手はかなり面倒である…」というのが実状ではないでしょうか.

 本章ではAT互換機の基本的なアドレス・マッピングと割り込みコントローラについて説明します.

アドレス・マップ

メモリ・マップ

 PCのメモリ・マップは表1のようになっています.よく見ると初代PCのCPUである,8088がプロテクト・モードをもたず,メモリ空間が1Mバイトまでしかなかったことや,PC/ATのCPUが80286であり,そのメモリ空間も16Mバイトまでであったという痕跡が見てとれます.

(表1)

PCのメモリ・マップと内容およびアクセス先

(a)メモリ・マップ

 

(表1)PCのメモリ・マップと内容およびアクセス先

(b)内容とアクセス先

アドレス  内 容  アクセス先
0000_0000h〜0000_02FFh  BIOS割り込みテーブル メイン・メモリ
  0000_0300h〜  0000_03FFh BIOSスタック領域    メイン・メモリ
  0000_0400h〜  0000_04FFh  BIOSデータ領域     メイン・メモリ
  0000_0500h〜  0009_FFFFh  コンベンショナル・メモリ領域

(640Kバイト)

   メイン・メモリ
  000A_0000h〜  000B_FFFFh

  000B_0000h〜  000B_7FFFh 

  000B_8000h〜  000B_FFFFh 

ビデオ・メモリ(EGA,VGA)

ビデオ・メモリ(MDA,CGAカラー,VGAモノクロ)

ビデオ・メモリ(CGA,EGAカラー,VGAカラー)

PCI,ISA
  000C_0000h〜  000C_7FFFh ビデオBIOS−ROM(EGA/VGA) PCI,ISA
  000C_8000h〜  000C_FFFFh 拡張BIOS  PCI,ISA
  000D_0000h〜  000D_FFFFh      拡張BIOS PCI,ISA
  000E_0000h〜  000E_FFFFh  システムBIOS PCI,ISA
  000F_0000h〜  000F_FFFFh システムBIOS PCI,ISA,

(メイン・メモリ)

  0010_0000h〜  00EF_FFFFh  メイン・メモリ/PCI/ISAメモリ空間 メイン・メモリ,

PCI,ISA

  00F0_0000h〜  00FF_FFFFh メイン・メモリ/PCI/ISAメモリ空間 メイン・メモリ,

PCI,ISA

  0100_0000h〜  FFFF_FFFFh  メイン・メモリ/PCIメモリ空間 メイン・メモリ,

PCIメモリ空間

 0000_0000h〜000A_0000hまでの640Kバイトが俗にいうコンベンショナル・メモリ領域と呼ばれる部分ですが,この後ろにビデオ・メモリやBIOS-ROMなどがあり,先頭1Mバイトの終わりである000F_FFFFhでいったん完結します.これが8088/8086時代の名残りです.

 さらに16MバイトまでがPCIやISAで使用可能な空間です.ISAの空間が16Mバイトまでというのは,80286のメモリ空間の制約の名残りといえるでしょう.

 現在のPCではメモリを64Mバイトや128Mバイト程度積むのは当たり前ですから,この領域はふつうは全部メイン・メモリ空間になっており,PCIやISA用の領域としては使えません.

 PCIバス・ボードは,さらに上のアドレスが使えますが,ISAバス・ボードではそれはできないので,通常は拡張BIOS領域などをやりくりして使うことになります.ただ,一部のISAカードのなかには,どうしてもISA上にある程度広いメモり空間を確保しなくてはならないということから,チップ・セットによっては設定によって1Mバイト程度をISA領域として使用可能にしているものもあります.この方式の正式な名称はないようですが,「ISAホール」と呼ぶことが多いようです.

 ただ,ISAホールのあることをOS側がきちんと認識しないと,ISA領域までメイン・メモリだと思われたり,ISAホール部分までしかメイン・メモリが実装されていない…と判定する場合もあるので,要注意です.


Copyright 2000 桑野 雅彦

新刊のご案内


Copyright 1997-2001 CQ Publishing Co.,Ltd.