従来の記憶を効果的に理解する方法
正直なところ、コンピューター内の様々なメモリの種類を説明するのはかなり複雑です。ROM、RAM、DRAM、SRAM、NAND、NORフラッシュなど、実に多くの種類があります。そして正直なところ、これらのほとんどは現在では特定のニッチな用途でしか使われていません。「古い」種類のメモリ、例えばコンベンショナルメモリの多くは、今ではほとんど使われなくなっていますが、それらがコンピューターの歴史の中でどのように位置づけられているかを見るのは興味深いものです。例えば、かつてBIOSやファームウェアの保存に重要な役割を果たしていたROMは、より安価で書き換え可能なフラッシュメモリにほぼ取って代わられました。通常はNORフラッシュを指しますが、現在ではNANDフラッシュも一般的です。しかし、時には「コンベンショナルメモリ」という言葉が今でも使われていますが、これは主に歴史的な用語であり、初心者を混乱させるものです。
PCの簡単な歴史講座
PCは、必ずしも今日のように洗練されたマシンではありませんでした。当時のPCは、かさばり、高価で、性能もかなり低かったのです。基本的に、大企業や組織でしか買えず、ソフトウェアの世界は混乱していました。簡単にダウンロードできるものも、ブラウザもありませんでした(インターネットなんてまだ存在していませんでしたからね)。もちろん、かわいい猫の画像などありませんでした。初期のコンピューターは主にコマンドラインで動作し、特定のタスクに特化した設計しか得意としていませんでした。価格が大きな障壁となり、一般の人が簡単に手にできるものではありませんでした。
その後、IBM PCが登場しました。これはある意味、ゲームチェンジャーでした。インターネットや猫を生み出したわけではありませんが、コンピューターをほぼすべての人に使えるものにしました。汎用マシンで、超安価というわけではありませんでしたが、広く普及するには十分な価格でした。そのおかげで、「PC」という用語が定着しました。今では少し廃れつつありますが。もちろん、人気が上がるにつれて、制限や互換性の問題など、よくある問題も発生しました。しかし、長年かけて多くの問題は解決されてきましたが、レガシーシステムには依然としていくつかの不具合が残っています。
インテル8086
このCPUは、初期のPCの根幹を成す存在でした。真の汎用CPUとしては世界初でしたが、いくつか問題もありました。1MBのメモリしか扱えず、それ以上は扱えなかったのです。しかも、これはRAMだけではありません。メモリにマッピングされているものすべて、つまりBIOS、グラフィック、周辺機器など、あらゆるものが対象でした。そのうち最初の640KBは「コンベンショナルメモリ」と呼ばれるRAM専用で、残りの384KBはその他のシステム用に割り当てられていました。そのため、特にメモリサイズの表記方法(1000と1024の違いなど)が大きな混乱を招きました。こうした歴史的な背景から、ハードドライブの容量は、10進数と2進数の接頭辞の違いによって、広告で宣伝されている容量と多少異なるように見えることがあります。
初期のPCは限界に挑戦することが好きで、メモリセグメンテーションと呼ばれる手法でこれらの制限を回避していました。しかし、現代のシステムでは仮想メモリアドレスが使用され、物理メモリをマッピングするだけで済むため、プログラムはもはやこれらの制限に対処する必要がありません。それでも、これらの古い制限が今日に至るまで私たちのハードウェアに対する見方に影響を与えているというのは、少々不思議なことです。
遺産
時が経つにつれ、様々な工夫や技術の進歩により、PCはより多くのメモリを扱えるようになりましたが、根本的な問題は8086 CPUのアドレス空間の限界でした。今日のオペレーティングシステムは仮想メモリを使用しています。これは、実際の物理メモリレイアウトをソフトウェアから隠蔽することを意味します。これにより、はるかに柔軟な処理が可能になります。アプリケーションは実際のメモリアドレスに直接アクセスする代わりに、OSが変換する仮想アドレスを取得します。そのため、「コンベンショナルメモリ」という従来の概念はほぼ消滅し、実際の物理制限に関係なく、メモリ全体にアクセスできるように見えるシステムに取って代わられました。
実際のところ、古いメモリ制限についてはほとんど耳にしなくなったのはそのためですが、この歴史を理解しておくことは、非常に古いシステムのトラブルシューティングや、レガシー ソフトウェアの実行を試みるときにも役立ちます。
まとめ
基本的に「コンベンショナルメモリ」とは、初期のPCにおいて、Intel 8086 CPUの限界によって制限された1MiBのアドレス空間のうち、最初の640~680KiBに過ぎませんでした。この部分はシステムRAMとして機能し、残りはBIOS、グラフィックメモリ、周辺機器に使用されていました。しかし、現代のコンピューターは64ビットアーキテクチャと仮想メモリを採用し、理論上は最大16EiBにも及ぶ、はるかに多くのメモリにアクセスできるようになったため、この用語は完全に時代遅れとなっています。物理メモリアドレスは抽象化され、固定セグメントや制限という概念自体がほぼ消滅しました。
なぜこれが議論の的になるのかは分かりませんが、少なくとも根本原因を理解すれば、トラブルシューティングやレガシーソフトウェアの扱いが少し楽になります。Windowsやハードウェアメーカーは、物事を必要以上に複雑にするのが好きなので、当然のことです。