PC98

コンベンショナルメモリー


PC-9801を使う様子

コンベンショナルメモリーとは?

98固有の話ではないけれど、PC-9801シリーズでDOSを使っていた人なら必ず聞いたことがあるコンベンショナルメモリー。
電源をオンにしたとき、640KB + 2048KBとか出ていた時の640KBの部分ですね。

なぜ現代では名前も聞かない、このメモリー領域が他のメモリー領域と分けられていたのでしょうか?
それは、PC-9801が搭載していたx86系CPUのリアルモードとプロテクトモードが関係しています。

Intelのi386やi486そしてPentiumの祖先であるx86アーキテクチャの始祖には8086というCPUがあり、これと互換するモードがリアルモードです。
MS-DOSは、このリアルモードで動作するように設計されていました。
8086の古いアーキテクチャと互換するリアルモードではメモリー空間の最大アドレス認識は1MBまでとなっていて、そのうちの640KBがユーザーの利用できるコンベンショナルメモリーという領域になっていました。
リアルモードでは、どんなにメモリーチップを潤沢に積んだパソコンでも640KB以上を認識できなかったのです。

メモリマップ図解

逆にプロテクトモードはCPUの全機能が本気を出せるモードであり、100MB以上のメモリーを認識したり、プログラム同士がメモリー内容を破壊しないように監視してプロテクトする機能などが追加されていました。
現在、私たちが使うWindowsやLinuxはすべてプロテクトモードで動作するOSです。

では、なぜ最初からリアルモードを切り捨て、プロテクトモードだけにしなかったのでしょうか?
それは、パソコンの電源投入からデバイスが認識されOSが起動するまでの基底にある回路やBIOSがリアルモードで動くことを前提としていて、そのシステムをリアルモードから切り離し、UEFIに移行するには実に30年近い歳月を要したからです。
当然、80年代~90年代のPC-9801やPC-9821の全盛期には実現できませんでした。

またマイクロソフトがプロテクトモードに対応したウインドウズOSをリリースするまで、PC-9801のOSはリアルモードのMS-DOSがシェアを占め続けました。
そのためPC-9801のMS-DOSソフトウェア開発は大前提として、この640KBの壁と戦うことになったのです。