HMA

読み:エイチエムエイ
外語:HMA: High Memory Area
品詞:名詞

80286以降のIntelマイクロプロセッサのバグにより誕生した65,520バイトのメモリ領域の名称。XMSで定義される領域の一つ。

80286以上で、MS-DOSではHIMEM.SYSか、同等の機能を有するドライバを使用することで利用できる。

リアルモード

80x86リアルモードのアドレスの範囲は0000:0000〜FFFF:FFFF(実アドレス000000h〜10FFEFh)までである。

しかし、8086にはアドレスバスが19本しかないため、実際は物理的な仕様から0FFFFFhまでしか使用できない。

そのため、FFFF:0010〜FFFF:FFFF(実アドレス100000h〜10FFEFh)にアクセスすると、0000:0000〜0000:FFEF(実アドレス000000h〜00FFEFh)のメモリの内容が見えていた。

80286

やがて、80286が登場した。

80286は、アドレスバスが24ビットに拡張された。しかし、この件について対策を講じなかったために、100000h〜10FFEFhのメモリ内容がそのまま見えてしまったのである。これにより80286以降ではHMAという新しいメモリ規格が生まれてしまった。つまりHMAは偶然の産物だったのである。

Intel自身はバグとしてこの問題を修正しようとした。

しかし、リアルモードで動作し常に貧困なメモリに苦しんでいたMS-DOSでは約64Kiバイトのメモリが新たに使えるようになることは非常に大きなことであり、Microsoft側からの要望もあって、仕様として残されることになった。