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

 80286以降のIntelマイクロプロセッサーバグにより誕生した65,520バイトのメモリー領域の名称。XMSで定義される領域の一つ。
 80286以上で、MS-DOSではHIMEM.SYSか、同等の機能を有するドライバーを使用することで利用できる。
目次

概要

リアルモード
 x86リアルモードのアドレスの範囲は0000:0000〜FFFF:FFFF(実アドレス000000h〜10FFEFh)までである。
 しかし、8086はアドレスバスが20ビットしかないため、実際は物理的な仕様から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側からの要望もあって、仕様として残されることになった。

再検索