コンピュータ システムにインストールされるランダム アクセス メモリ(RAM) の最大容量は、ハードウェア、ソフトウェア、および経済的な要因によって制限されます。ハードウェアのアドレス バスビット数は、プロセッサ パッケージまたはシステムの設計によって制限される場合があります。アドレス空間の一部は、RAM、周辺機器、および読み取り専用メモリ間で共有される場合があります。外部 RAM のないマイクロコントローラの場合、RAM アレイのサイズは集積回路のダイのサイズによって制限されます。パッケージ システムでは、システムに必要な機能に十分な RAM のみが提供される場合があり、製造後にメモリを追加することはできません。
使用可能な物理 RAM にソフトウェアによる制限がある場合があります。オペレーティング システムは 、特定の量のメモリのみを割り当てるように設計されており、上位アドレス ビットは I/O やスーパーバイザ モードなどの指定、またはその他のセキュリティ情報を示すために予約されています。または、オペレーティング システムは、アドレス指定可能なメモリに対して固定の制限がある内部データ構造に依存している場合があります。
大量販売のパーソナル コンピュータの場合、大量販売のソフトウェアを実行するために必要な量以上のメモリ ソケット、アドレス ライン、またはその他のハードウェアを提供しても、製造元にとって金銭的なメリットがない可能性があります。メモリ デバイスがプロセッサに比べて比較的高価だった場合、コストの理由から、システムに付属する RAM はハードウェアのアドレス容量よりはるかに少ないことがよくありました。
場合によっては、特別な技術を使用して RAM の制限を克服できます。バンク スイッチングを使用すると、プログラム制御下で、必要に応じて RAM メモリのブロックをプロセッサのアドレス空間に切り替えることができます。オペレーティング システムは、仮想メモリを使用して実行中のプログラムを定期的に管理します。仮想メモリでは、個々のプログラムは、メモリ領域をディスク ストレージと交換することでシミュレートされている大規模なメモリ空間にアクセスできるかのように動作します。
CPU アドレス制限
パフォーマンス上の理由から、アドレス バスのすべての並列アドレス ラインは同時に有効である必要があります。そうでない場合、メモリへのアクセスが遅延し、パフォーマンスが大幅に低下します。集積回路パッケージでは、メモリ バスを提供するために使用できるピンの数に制限がある場合があります。異なるサイズの IC パッケージで、異なるバージョンの CPU アーキテクチャを設計して、パッケージ サイズを縮小する代わりにピン数とアドレス空間を削減することができます。アドレス ピンと他の機能の間でトレードオフが行われる場合があり、アーキテクチャが本質的に大容量であっても、物理的に使用できるメモリが制限されます。一方、セグメント化またはバンク スイッチング設計では、内部メモリ アドレス レジスタで使用できるよりも多くのメモリ アドレス空間が提供されます。
集積回路メモリのコストが下がるにつれて、より大きな物理メモリ空間を持つシステムを設計することが可能になりました。
アドレスピンが16個未満
統合 I/O とオンチップ メモリを備えたマイクロコントローラデバイスでは、外部デバイスに使用できるアドレス バスがないか、または小さい場合があります。たとえば、2 キロバイトのアドレス空間を備えたマイクロコントローラ ファミリには、外部 ROM 用に 11 行のアドレス バスを備えたバリアントが存在する場合があります。これは、I/O ピンをアドレス バス ピンとして再割り当てすることで実現できます。統合 ROM を備えた一部の汎用プロセッサでは、16 ビットのアドレス空間を内部 ROM と外部 15 ビット メモリ バスに分割しています。
一部のマイクロプロセッサには 16 個未満のアドレス ピンがありました。たとえば、MOS Technology 6507 (6502 のピン数を減らしたバージョン) はAtari 2600で使用され、13 ラインのアドレス バスに制限されていました。
16 アドレス ビット、16 アドレス ピン
ほとんどの 8 ビット汎用マイクロプロセッサは 16 ビットのアドレス空間を持ち、16 本のアドレス ラインを生成します。例としては、Intel 8080、Intel 8085、Zilog Z80、Motorola 6800、Microchip PIC18などがあります。これらのプロセッサには、8 ビット データと 16 ビット アドレス指定を備えた 8 ビット CPU があります。これらの CPU のメモリは、バイト レベルでアドレス指定可能です。これにより、メモリのアドレス指定可能な制限は、2 16 × 1 バイト = 65,536 バイト、つまり 64 キロバイトになります。
16 アドレス ビット、20 アドレス ピン: 8086、8088、80186、80188
Intel 8086および派生製品( 8088、80186、80188など) は、人気のx86プラットフォームの基礎を形成し、IA16 アーキテクチャの最初のレベルです。これらは、 20ビットのアドレス指定を備えた 16 ビット CPU でした。これらの CPU のメモリは、バイト レベルでアドレス指定可能でした。これらのプロセッサは、2 20バイト (1 メガバイト) をアドレス指定できました。
16 ビット アドレス、24 アドレス ピン: 80286
Intel 80286 CPU は 24 ビットのアドレス指定方式を採用していました。各メモリ位置はバイト単位でアドレス指定可能でした。このため、アドレス指定可能な合計空間は 2 24 × 1 バイト = 16,777,216 バイト、つまり 16 メガバイトになります。286 以降はリアル モードでも動作可能でしたが、これにより 8086 プロセッサのアドレス指定制限が課せられました。286 は仮想メモリをサポートしていました。
32 ビット アドレス、24 アドレス ピン
Intel 80386SX は386DX の経済的なバージョンでした。386DX の 32 ビット アドレス指定方式とは対照的に、24 ビット アドレス指定方式を採用していました。286 と同様に、386SX は最大 16 メガバイトのメモリしかアドレス指定できません。
Motorola 68000 には 24 ビットのアドレス空間があり、最大 16 メガバイトのメモリにアクセスできました。
32 ビット アドレス、32 アドレス ピン
386DX は 32 ビットのアドレス指定が可能で、最大 4 ギガバイト (4096 メガバイト) のメモリをアドレス指定できます。
1984 年にリリースされたMotorola 68020 は32 ビットのアドレス空間を持ち、最大 4 GB のアドレス指定可能なメモリ制限がありました。Motorola 68000 シリーズの後続のチップはすべてこの制限を継承しました。
32 ビット アドレス、36 アドレス ピン: Pentium Pro (別名 P6)
Pentium ProおよびすべてのPentium 4には 36 ビットのアドレス指定があり、合計で 64 ギガバイトのアドレス指定可能空間が得られますが、オペレーティング システムが物理アドレス拡張をサポートしている必要があります。
64 ビット コンピューティング
ARM、Intel、AMD などの最新の 64 ビット プロセッサは、通常、 RAM アドレスとして 64 ビット未満しかサポートされません。一般的に、40 ~ 52 の物理アドレス ビットを実装します[1] [2] [3] [4] (1 TB ~ 4 PB の RAM をサポート)。ここで説明した以前のアーキテクチャと同様に、これらの一部は、テクノロジの向上に応じて、より高いRAMアドレス制限をサポートするように設計されています。Intel64 と AMD64 の両方で、52 ビットの物理アドレス制限がアーキテクチャ仕様で定義されています (4 PB)。
オペレーティング システムの RAM 制限
CP/M と 8080 のアドレス制限
マイクロコンピュータ用の最初の主要なオペレーティングシステムはCP/Mでした。このオペレーティングシステムは、プログラミング言語PL/Mと組み合わせてゲイリー・キルドールが作成したAltair 8800のようなマイクロコンピュータと互換性があり、インテルに拒否された後、キルドールの会社Digital Researchによってコンピュータメーカーにライセンスされました。これらのコンピュータで使用されたIntel 8080 は、16 ビットのアドレス空間を持つ8 ビットプロセッサであり、最大 64 KB のメモリにアクセスできました。このため、CP/M で使用される .COM 実行可能ファイルは、16 ビットマイクロプロセッサ用の DOS オペレーティングシステムで使用されるものと同様に、最大サイズが 64 KB です。
IBM PC と 8088 のアドレス制限
オリジナルの IBM PC では、基本的な RAM 制限は 640 KB です。これは、アドレス指定可能な合計メモリ空間 1024 KB (1 MB) のうち、上位 384 KB (上位メモリ領域(UMA)) にハードウェア アドレス指定空間を確保するためです。640k の壁を克服する方法として、286 以降の x86 プロセッサで使用できる特殊なアドレス指定モードを使用する方法がよく知られています。合計 1 MB のアドレス空間は、8088 CPU に課せられた 20 ビットのアドレス空間制限の結果です。
カラー ビデオ バッファ スペースを使用すると、一部のサードパーティ ユーティリティは、640k の従来のメモリ領域の先頭にメモリを追加して、ハードウェア アダプタが使用するベース アドレスまでメモリを拡張できます。これにより、最終的に MDA ベース アドレスまで RAM をバックフィルできます。
ハードウェア拡張機能により、8086 CPU がページング メモリを通じてアドレス指定できるメモリよりも多くのメモリにアクセスできるようになりました。このメモリは拡張メモリと呼ばれていました。業界のデファクトスタンダードは、Lotus、Intel、Microsoft で構成される LIM コンソーシアムによって開発されました。この標準は、拡張メモリ仕様(EMS) でした。拡張メモリ ハードウェアのメモリ ページには、UMA スペースの空き領域に配置されたアドレス指定ウィンドウを通じてアクセスでき、他のメモリにアクセスする必要がある場合は、そのアドレス指定ウィンドウを他のページと交換することでアクセスできました。EMS は 16 MB のスペースをサポートしていました。
286 CPU アーキテクチャの奇妙な機能を利用して、x86 アーキテクチャの 20 ビット アドレス指定の 1 MB 制限を超える最初の 64 KB として、 高メモリ領域(HMA) にアクセスできるようになりました。
286 CPU アーキテクチャの 24 ビット メモリ アドレス指定機能を使用すると、合計 16 MB のアドレス空間にアクセスできました。1 MB の制限を超えるメモリは、拡張メモリと呼ばれていました。ただし、640 KB から 1 MB までの領域は、IBM PC 互換機のハードウェア アドレス指定用に予約されていました。20 ビット アドレスに制限されている DOS やその他のリアル モード プログラムは、拡張メモリ上の EMS エミュレーション、または拡張メモリの EMS アナログを介してのみ、この空間にアクセスできました。Microsoft は、Extended Memory Specific (XMS) と呼ばれる標準を開発しました。HMA を超えるメモリにアクセスするには、 286 CPU の 保護モードを使用する必要がありました。
i386 CPU アーキテクチャの開発により、アドレス空間は 32 ビット アドレス指定に移行し、4 GB の制限になりました。この CPU では、DOS/4GW、MiniGW/16、MiniGW などのDOS エクステンダを使用する DOS プログラムから 16 MB のメモリ領域にアクセスできます。当初は、 VCPIと呼ばれる事実上の業界標準のインタラクション メモリが開発されました。その後、Microsoft 標準がこれに取って代わり、DPMIと呼ばれるようになりました。これらの標準では、EMS や XMS で使用されるページング スキームの代わりに、16 MB の空間に直接アクセスできます。
16 ビット OS/2 RAM 制限
16 ビット OS/2 は、オペレーティング システムに組み込まれた予約領域により、15 MB に制限されていました。16 MB の 24 ビット アドレス空間の上位 1 MB は、非メモリ用に予約されていました (16 MB から 15 MB)。
32 ビット x86 RAM 制限
32 ビットx86プロセッサの非 PAE モードでは、使用可能なRAM が4 GB 未満に制限される場合があります。メモリとアドレス空間の制限は、プラットフォームとオペレーティング システムによって異なります。32 ビット プラットフォームの物理メモリの制限は、物理アドレス拡張(PAE) の存在と使用によっても異なります。PAE により、32 ビット システムは 4 GB を超える物理メモリを使用できます。
PAE および 64 ビット システムでは、x86 プロセッサの完全なアドレス空間までアドレス指定できる場合があります。
参照
参考文献
- ^ 「AMD64 プログラマーズマニュアル 第 2 巻: システムプログラミング」(PDF)。Advanced Micro Devices。2016 年 12 月。120 ページ。
- ^ 「Intel 64 および IA-32 アーキテクチャ ソフトウェア開発者マニュアル 第 3A 巻: システム プログラミング ガイド、パート 1」(PDF)。Intel。2016 年 9 月。p. 4-2。
- ^ 「ARM アーキテクチャ リファレンス マニュアル ARMv8、ARMv8-A アーキテクチャ プロファイル用」。pp. D4-1723、D4-1724、D4-1731。
- ^ https://developer.arm.com/documentation/den0001/c/ ARM メモリマップの原則
外部リンク
- MSDN 記事: Windows リリースのメモリ制限
- Windows Vista のシステム情報ダイアログボックスで報告されるシステムメモリは、4 GB の RAM がインストールされている場合、予想よりも少ないです。この問題について説明します。
- Windows Vista SP1には、インストールされているシステムメモリ(RAM)のレポートが含まれています - RAMの制限に関する詳細
