Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】Why Was 640KB Once Said to Be Enough for Everyone?

2025年09月19日に「Medium」が公開したITニュース「Why Was 640KB Once Said to Be Enough for Everyone?」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

かつてパソコンのメモリ640KBが十分とされたのは、当時のOSやハードウェア設計に技術的な制約があったためだ。その歴史的経緯をシステムエンジニアを目指す初心者向けに分かりやすく解説する。

ITニュース解説

「640KBあれば、誰にとっても十分なはずだ」。この言葉は、マイクロソフトの共同創業者であるビル・ゲイツが言ったとされる有名な言葉だが、実際にはゲイツ自身が否定している。しかし、この言葉がなぜこれほどまでに広まり、そしてなぜ技術史の象徴的な逸話となったのかを理解することは、初期のパーソナルコンピュータ(PC)の設計思想と、その後の技術進化の過程を知る上で非常に重要だ。

この言葉が生まれた背景には、1981年に登場した初代IBM PCのアーキテクチャが深く関係している。当時のIBM PCは、Intel 8088というマイクロプロセッサを搭載していた。この8088プロセッサは、物理的に1MB(メガバイト)のアドレス空間しか扱えなかった。アドレス空間とは、プロセッサがメモリ上のデータを探すために利用できる「住所」の範囲のことだ。つまり、初代IBM PCは、最大で1MB分のメモリしか直接認識できなかったのである。

この1MBのアドレス空間は、大きく二つの領域に分けられた。一つは「コンベンショナルメモリ」と呼ばれる領域で、0KBから640KBまでの範囲だ。この領域は、オペレーティングシステム(当時のMS-DOS)や、ユーザーが利用するアプリケーションプログラム、そしてそのデータが置かれる場所として割り当てられた。プロセッサが最も頻繁にアクセスし、プログラムが自由に使える主要なメモリ領域だった。

もう一つは、「アッパーメモリ領域(UMA: Upper Memory Area)」と呼ばれる領域で、640KBから1MBまでの範囲だ。この領域は、主にハードウェアデバイスが利用するための予約領域として設定された。例えば、ビデオカードが表示する画像データを一時的に保存するビデオRAM、PCの基本的な入出力処理を司るBIOS(Basic Input/Output System)のプログラムを格納するROM(Read Only Memory)、その他、ネットワークカードなどの拡張カードが持つプログラムやデータのための領域などがここに割り当てられた。

なぜ、アプリケーションが自由に使えるコンベンショナルメモリが640KBという中途半端な値で区切られたのか。当時のエンジニアたちは、PCの利用目的やアプリケーションの規模を考慮し、640KBで十分だろうと判断した。当時のPCは、今のように画像や動画を大量に扱うような用途はほとんどなく、文書作成(ワードプロセッサ)や表計算(スプレッドシート)、シンプルなゲームなどが主な用途だった。これらのプログラムは比較的コンパクトで、限られたメモリ空間でも十分に動作すると考えられていたのだ。また、MS-DOS自体も非常に軽量なOSであり、多くのメモリを消費しなかった。アッパーメモリ領域をデバイスに割り当てる必要があったため、自然とアプリケーションが自由に使える領域は640KBに落ち着いた、というのが実情に近い。

しかし、PCの進化はエンジニアたちの予想をはるかに超える速さで進んだ。グラフィカルユーザーインターフェース(GUI)の登場、より複雑なアプリケーションの出現、マルチタスク機能の要求など、PCに求められる機能は爆発的に増加した。その結果、わずか数年で640KBのコンベンショナルメモリは、あっという間に手狭になった。多くのアプリケーションが640KBの壁にぶつかり、これ以上のメモリを必要とするようになったのだ。

この「640KBの壁」を乗り越えるために、様々な技術が開発された。その代表的なものが「EMS(Expanded Memory Specification)」と「XMS(Extended Memory Specification)」だ。

EMSは、Lotus、Intel、Microsoftの3社によって開発された技術で、特に初期のメモリ不足を解消するために広く使われた。EMSの考え方は、1MBのアドレス空間という制約を物理的に超えることはできないが、プログラムが論理的にアクセスできるメモリを増やすというものだった。具体的には、メモリコントローラと呼ばれる特殊なハードウェアを利用し、物理的に搭載された追加のメモリの一部を、アッパーメモリ領域内の特定の「ページフレーム」と呼ばれる窓に一時的にマッピング(割り当て)する仕組みだった。プログラムはこのページフレームを通じて、切り替えることで大量のメモリにアクセスできた。例えるなら、一度に開ける窓の数は決まっているが、窓の外にはたくさんの部屋(メモリ)があり、窓から見える部屋を次々に切り替えることで、全体の部屋を覗けるようにする、といったイメージだ。

一方、XMSは、Intel 80286以降のプロセッサが持つ「プロテクトモード」という新しい動作モードを利用して、1MB以上のメモリにアクセスするための技術だ。80286プロセッサは、リアルモード(8088/8086互換の1MB制限モード)とプロテクトモードという二つの動作モードを持っていた。プロテクトモードでは、プロセッサは1MBを超える最大16MB(80286の場合)のアドレス空間に直接アクセスすることができた。XMSは、このプロテクトモードを利用して、1MBを超えるメモリを「拡張メモリ(Extended Memory)」として管理し、アプリケーションに提供する仕組みだった。しかし、当時のMS-DOSはリアルモードで動作していたため、拡張メモリを直接利用することはできなかった。そこで、DOS自体は拡張メモリにアクセスできないが、プログラムが一時的にプロテクトモードに切り替えて拡張メモリを利用し、またリアルモードに戻ってDOSのサービスを利用する、といった複雑な手法が用いられた。また、1MBを超えるメモリのうち、最初の64KBは「ハイメモリ領域(HMA: High Memory Area)」と呼ばれ、特別な方法でリアルモードのDOSからアクセスすることが可能になり、DOSの一部をこの領域にロードすることで、コンベンショナルメモリをさらに広く使えるようになった。

これらの技術は、当時のハードウェアとソフトウェアの制約の中で、いかにしてメモリを効率的に利用し、より高度なアプリケーションを動作させるかというエンジニアたちの創意工夫の結晶だった。しかし、これらのメモリ管理は非常に複雑で、初心者にとっては理解が難しいものだった。

現代のPCと比較すると、この進化は驚くべきものがある。現在のPCは、ギガバイト(GB)単位のメモリを搭載することが当たり前であり、64ビットのプロセッサとオペレーティングシステムは、理論上では膨大なアドレス空間を扱うことができる。数GBのRAMは標準であり、数テラバイト(TB)のメモリを搭載するサーバーも珍しくない。

「640KBで十分」という言葉は、結果的には現実の技術進化とユーザーの要求を見誤った言葉となったが、当時の技術的制約の中では真剣にそう考えられていたことを示している。このエピソードは、技術の予測がいかに難しいか、そしてシステム設計において将来の拡張性や変化をいかに考慮する必要があるかという、重要な教訓を私たちに与えている。システムエンジニアを目指す者にとって、過去の制約とそれを乗り越えるための知恵を学ぶことは、現代そして未来のシステムを設計する上で貴重な洞察となるだろう。

関連コンテンツ