ICDロゴ

EMS (Expanded Memory Specification)

【イー・エム・エス】

最終更新日: 2001/08/28

 不足したメモリ領域を増やすために考案されたメモリ拡張規格。

  1981年にIBMが発表したIBM PCでは、Intelの8088プロセッサ(8086プロセッサの外部データ・バス幅を8bitにしたもの)を使用しており、シリアル/パラレル・ポートやグラフィックス・カードなどを拡張カードの形式で追加するシステムになっていた。

 8088の物理的なアドレス空間は1Mbytesあるので、IBM PCでは、00000〜9FFFFh(640Kbytes)がメインメモリ用領域として予約され、そこから上の領域はUMA(Upper Memory Areaと呼ばれ、拡張カードやシステムBIOS ROM用領域として予約されている(出荷時に実装しているメモリ量は、最低で16Kbytes。後はオプションの拡張カードを使って追加する)。このようなメモリ・マップになっているため、一般的には、メインメモリは640Kbytesに制限されている(これはあくまでもIBM-PCアーキテクチャにおける制限であり、MS-DOS自体にはこのような制約はない。システムによっては、1Mbytes近いメインメモリ領域を持つMS-DOSマシンもあった)。

 IBM PCが普及し、表計算やデータベースなどのビジネス向けアプリケーションが使用されるようになると、さすがにメインメモリ空間が640Kbytesでは狭くなってきた。この空間にMS-DOSやデバイス・ドライバ、ネットワーク・システムなどの付加的なシステム・コード、アプリケーション本体、そしてユーザー・データまですべて格納しなければならないからだ。

 このような事態を打開するために考案されたのがEMSである。EMSは、PCのメインメモリとは別に用意した巨大なメモリ(Expanded Memory)を、PCのメモリ空間上に設けた64Kbytesの窓から、間接的にアクセスするためのメカニズムである。Expanded Memoryを16Kbytesの「ページ」という単位に細かく分割し、それを64Kbytesの窓に同時に最大4枚までマップする(対応させる)。マップされたメモリは、メインメモリと同じように高速にアクセスできるが、5ページ以上のページを使いたくなった場合は、いずれかのマッピングを解除して、別のページをマップし直す必要がある(後に、64Kbytes以上の窓が使えるように規格が拡張された)。EMSでは、ページをパタパタと切り替えながら使用しなければならないので、プログラミングはやや面倒であるが、それでも手軽に広大な(といっても最大32Mbytesであるが)メモリが利用できるようになったので、各アプリケーションでのEMS対応も広く進んだ。

 EMSメモリは、当初はハードウェアの拡張カードの形式で利用されたが、後には80386の仮想8086モードを使った、ソフトウェア的な方式で実現されるようになった。

Copyright (C) 2000-2007 Digital Advantage Corp.

アイティメディアの提供サービス

キャリアアップ