コンピューティングの世界では、 3 GB の壁という用語は、x86マイクロプロセッサ上で実行される一部の32 ビット オペレーティング システムの制限を指します。この制限により、オペレーティング システムは 4 GiB ( 4 × 1024バイト)のメイン メモリをすべて使用できなくなります。[1]正確な壁はマザーボードや I/O デバイスの構成、特にビデオ RAMのサイズによって異なりますが、2.75 GB から 3.5 GB の範囲になります。[2]この壁は、64 ビット プロセッサと64 ビット オペレーティング システムでは存在しません。また、特定の x86 ハードウェアと、LinuxやWindows ServerおよびmacOSの特定のバージョンなど、x86 上で物理アドレス拡張(PAE) モードを使用して4 GiB を超える RAM にアクセスできるオペレーティング システムでは存在しません。
「障壁」の実際の位置がどのようなものであっても、それを直接課すオペレーティング システム ソフトウェアのコードやハードウェア アーキテクチャの制限はありません。むしろ、「障壁」は、両者のいくつかの側面間の相互作用の結果です。
物理アドレスの制限
多くの32ビットコンピュータは32の物理アドレスビットを持ち、したがってメモリは4GiB(2の32 ワード)に制限されます。[3] [4] Pentium Proより前のx86プロセッサは32以下の物理アドレスビットを持っていましたが、1995年に最初に販売されたPentium Pro以降のほとんどのx86プロセッサは物理アドレス拡張(PAE)メカニズムを持っています。[5] : 445 これにより、最大64GiB(2の36ワード)のメモリをアドレス指定できます。 PAEは保護モードアドレス変換スキームの修正版であり、仮想アドレスまたはリニアアドレスを、PAEなしで利用可能な32ビットアドレスの代わりに36ビット物理アドレスに変換できます。 [6] CPUピン配置も同様に、マザーボードに36ビットの物理アドレスラインを提供します。 [7]
PAEカーネルを搭載したLinuxのあらゆるバージョン、 Windows ServerおよびmacOSの一部のバージョンを含む多くのx86オペレーティングシステムは、PAEを使用してx86システム上で最大64GiBのメモリをアドレス指定できます。[8] [9] [10]
最大 64 GiB のメモリを使用する能力を制限し、PAE を実装するプロセッサであっても、特定の状況下で「3 GB の壁」につながる可能性がある他の要因があります。これらについては、次のセクションで説明します。
チップセットとその他のマザーボードの問題
前述のように、Pentium Pro以降のほとんどのx86プロセッサは最大64GiBの物理アドレスを生成できますが、4GiBを超えるRAMをCPUがアドレス指定できるようにするには、マザーボードの残りの部分が関与する必要があります。x86プロセッサで4GiBを超えるRAMを許可するチップセットとマザーボードは存在しますが、過去には、ハイエンドサーバー市場以外を対象とするチップセットとマザーボードのほとんどは、4GiBのRAMにしかアクセスできませんでした。[ 11]
ただし、これは、4 GiB を超える RAM にアクセスできるプラットフォームで一部の x86 バージョンの Microsoft Windows を実行している場合でも表示される「3 GB の壁」を説明するには不十分です。
メモリマップI/Oと無効化されたRAM
現代のパーソナルコンピュータは、オリジナルのPCI バスの特性などに依存する一連の標準規格に基づいて構築されています。オリジナルの PCI バスは、32 ビットの物理アドレスと 32 ビット幅のデータ転送を実装していました。PCI (およびPCI ExpressとAGP ) デバイスは、ホスト制御インターフェイスの少なくとも一部 (すべてではないにしても) を、一連のメモリマップド I/Oロケーション (MMIO) を介して提供します。これらの MMIO ロケーションが現れるアドレス空間は、RAM が使用するアドレス空間と同じであり、RAM は 4 GiB ポイントより上に存在してアドレス指定できますが、I/O デバイスによってデコードされるこれらの MMIO ロケーションはそうではありません。これらは、PCI バス仕様によって 0xFFFFFFFF (2 32 − 1) 以下のアドレスに制限されています。4 GiB 以上の RAM がインストールされ、RAM が 0 から始まる連続したアドレス範囲を占有している場合、MMIO ロケーションの一部が RAM アドレスと重複します。大容量のビデオメモリを搭載したマシンでは、MMIOの場所が32ビットアドレス空間の1.8 GBを占めることがわかっています。[12] RAMアドレスと重複する可能性のある他の場所には、 APIC、SMRAM、iGPUの場所が含まれます。
BIOSとチップセットは、これらのアドレス競合を検出し、その場所のRAMへのアクセスを無効にする役割を果たします。[13] PCIバス上でバスアドレス範囲が決定される方法により、この無効化は比較的大きな粒度で行われることが多く、その結果、比較的大量のRAMが無効になります。[14]
アドレスの再マッピング
4 GiB を超える RAM をアドレス指定できる x86 チップセットでは、通常、メモリの再マッピングも可能になっています (一部の BIOS セットアップ画面では「メモリ ホールの再マッピング」と呼ばれています)。この方式では、BIOS がメモリ アドレスの競合を検出し、干渉している RAM を事実上再配置して、プロセッサが MMIO と競合しない新しい物理アドレスでアドレス指定できるようにします。[引用が必要] Intel 側では、この機能はかつてはサーバー チップセットに限定されていましたが、 Intel 955X や 965 などの新しいデスクトップ チップセットにも搭載されています (チップセット データシートの「メモリの再利用」を参照[15] )。AMD 側では、AMD K8以降のプロセッサの組み込みメモリ コントローラには最初からこの機能が搭載されていました。[引用が必要]
新しい物理アドレスは 4 GiB を超えるため、この RAM をアドレス指定するには、オペレーティング システムが 2 32より大きい物理アドレスを使用できる必要があります。[16]この機能は PAE によって提供されます。オペレーティング システムが合計4 GiB を超える RAM をサポートする必要は必ずしもありません。RAM の合計が 4 GiB しかない場合もあります。その一部が4 GiB 以上の範囲のアドレスで CPU に表示されるだけです。 [16]
この形式の 3 GB の壁は、1 世代のMacBookに影響を及ぼし、[17] 1 年間続きました (Core2Duo (Merom) – 2006 年 11 月から 2007 年 10 月)。前世代は 2 GiB に制限されていましたが、後続の世代 (2007 年 11 月 – 2009 年 10 月) では PAE とメモリホールの再マッピングを使用して 4 GiB が許可され、その後の世代 (2009 年後半以降) では 64 ビット プロセッサが使用されているため、4 GiB を超えるアドレス指定が可能です。
Windows バージョンの依存関係
Windows XP以降の「非サーバー」または「クライアント」のx86 SKUは、CPUがNXビットを実装している場合、デフォルトでPAEモードでx86プロセッサを操作します。ただし、これらのオペレーティングシステムでは、4GiBアドレス境界を超える物理メモリのアドレス指定は許可されません。これはアーキテクチャ上の制限ではなく、テスト中に発見されたデバイスドライバーの互換性の問題を回避するためにMicrosoftが課した制限です。[18]
したがって、x86 Windows「クライアント」オペレーティング システムでの「3 GB バリア」は、わずかに異なる 2 つのシナリオで発生する可能性があります。どちらの場合も、4 GiB ポイント付近の RAM がメモリ マップされた I/O スペースと競合します。BIOS は競合する RAM を単純に無効にするか、競合する RAM を 4 GiB ポイントより上の物理アドレスに再マップします ( [引用が必要])。ただし、x86 Windows クライアント エディションは、PAE を有効にして実行されている場合でも、それより高い物理アドレスの使用を拒否します。したがって、競合する RAM は、再マップされているかどうかに関係なく、オペレーティング システムでは使用できません。
参照
- RAM制限
- 640 KB の壁
- 64ビット
- PSE-36 — x86 プロセッサ上の PAE の代替で、物理メモリのアドレス指定機能を 32 ビットから 36 ビットに拡張します。
- PCI ホール
- 保護リング
- RAMドライブ- 再マップされたRAMの用途
- 仮想メモリ— プロセスが利用できるメモリを管理する
- ユーザー空間とカーネル空間は別の制限を課す
参考文献
- ^ Microsoft Corporation (2022-06-27). 「Windows リリースのメモリ制限」。グラフィック カードやその他のデバイスがメモリ制限に与える影響。2024-11-13取得。
デバイスは、PAE 非対応の Windows リリースとの互換性を確保するために、4 GB 未満のメモリをマップする必要があります。したがって、システムに 4 GB の RAM がある場合、その一部は BIOS によって無効にされるか、4 GB を超えて再マップされます。メモリが再マップされると、X64 Windows はこのメモリを使用できます。Windows の X86 クライアント バージョンは、4 GB を超える物理メモリをサポートしていないため、これらの再マップされた領域にアクセスできません。
- ^ Russinovich, Mark (2008 年 7 月 21 日). 「Windows の限界に挑戦: 物理メモリ」. Microsoft TechNet . Microsoft . 2019 年 8 月 8 日時点のオリジナルよりアーカイブ。2022年12 月 14 日閲覧。
- ^ Murray, Matthew (2009-10-27). 「Windows 7: 64 ビットの問題」 PCMag . 2017-08-07取得。32
ビット システムでは、4 GB の RAM (2
32
アドレス)
しか利用できません。 - ^ Patrizio, Andy (2002-07-22). 「AMD が 64 ビットの疑問に答える」Wired。 2008-12-16 にオリジナルからアーカイブ。2017-08-07に取得。
Intel の Pentium III/IV や AMD の Athlon などの 32 ビット プロセッサには、CPU あたり 4 GB のメモリ制限があります。 それ以上のメモリは対応できません。
- ^ Shanley, Tom (1998). Pentium Pro および Pentium II システムアーキテクチャ. PC システムアーキテクチャシリーズ (第 2 版). Addison-Wesley . p. 445. ISBN 0-201-30973-4。
- ^ 「第 1 巻: 仕様」(PDF)。Pentium Pro ファミリー開発者マニュアル。Intel Corporation。1996年 1 月。p. 3-15。2018年 12 月12日閲覧。Pentium
Pro プロセッサの物理アドレス空間は 2
36
バイトまたは 64 ギガバイト (64 Gbyte) です。
- ^ 「第 1 巻: 仕様」(PDF)。Pentium Pro ファミリー開発者マニュアル。Intel Corporation。1996年 1 月。p. 15-5。2018年 12 月12 日閲覧。ピン
番号: C1、信号名: A35#
- ^ Microsoft Corporation. 「Windows リリースのメモリ制限」。物理メモリの制限: Windows Server 2008。2017年 8 月 7 日取得。Windows
Server 2008 Enterprise; 32 ビット Windows の制限: 64 GB
- ^ 「PAE を有効にする」。Ubuntu ドキュメント。2010-05-19。2010-06-07に取得。
物理アドレス拡張は、32 ビット オペレーティング システムで最大 64 GB のメモリを使用できるようにするテクノロジです...PAE は現在、ほとんどのコンピューターでサポートされており、Ubuntu でまだ有効になっていない場合は、簡単に有効にすることができます。
- ^ 「9. Linux カーネル」。Fedoraリリース ノート。2010-05-18。2010-01-10 にオリジナルからアーカイブ。2010-06-07に取得。Fedora
8 には、次のカーネル ビルドが含まれています。... 4GB を超える RAM を搭載した 32 ビット x86 システム、または NX (No eXecute) 機能を備えた CPU で使用するためのカーネル PAE。
- ^ Intel Corporation (2005 年 2 月)。「Intel チップセット 4 GB システム メモリ サポート」(PDF)。Pentium Pro ファミリー デベロッパーズ マニュアル。p. 7。2007 年 3 月 6 日のオリジナル(PDF)からアーカイブ。2017 年 8 月7 日に取得。モバイル
、デスクトップ、ワークステーション、およびエントリー レベル サーバー用の単一プロセッサ ベースのシステムでは、チップセットの最大メモリが 4 GB に制限される場合があります。今日のデュアル プロセッサ Intel サーバー チップセットおよびワークステーションでは、最大システム メモリ サイズは 16 GB 以上になります。
- ^ Russinovich, Mark Eugene (2008-07-21). 「Windows の限界に挑む: 物理メモリ」。2019-08-08 にオリジナルからアーカイブ。2017-08-07に取得。Windows
XP SP2 では、データ実行防止 (DEP) に必要なため、非実行メモリを実装するハードウェアで物理アドレス拡張 (PAE) のサポートがデフォルトで有効になりましたが、これにより 4GB を超えるメモリのサポートも有効になりました。
- ^ Intel Corporation (2005 年 2 月)。「Intel チップセット 4 GB システム メモリ サポート」(PDF)。2007 年 3 月 6 日にオリジナル(PDF)からアーカイブ。2017年 8 月 7 日に取得。4
GB 以上の物理メモリ サイズを搭載したプラットフォームでは、PCI 仕様要件やその他のメモリ マップされた IO リソースにより、オンボード システム リソース要件では、搭載されているすべての物理メモリをオペレーティング システムが活用できない可能性があります。物理メモリの一部が他のサブシステム専用のメモリ領域と重複し、オペレーティング システムで使用できなくなる場合があります。
- ^ Intel Corporation (2005 年 2 月)。「Intel チップセット 4 GB システム メモリ サポート」(PDF)。Pentium Pro ファミリー デベロッパーズ マニュアル。p. 8。2007 年 3 月 6 日のオリジナル(PDF)からアーカイブ。2017 年 8 月 7 日に取得。
- ^ 「Intel 965 Express チップセット ファミリ」(PDF)。Intel。2006 年 7 月。3.4.2 メモリの再利用。
- ^ ab Intel Corporation (2005 年 2 月)。「Intel チップセット 4 GB システム メモリ サポート」(PDF)。Pentium Pro ファミリー デベロッパーズ マニュアル。p. 13、14。2007 年 3 月 6 日のオリジナル(PDF)からアーカイブ。2017 年 8 月 7 日に取得。
再マッピングを使用するには、オペレーティング システムが 4 GB を超えるメモリ範囲をアドレス指定できる必要があります。
- ^ 「Intel Mac RAM を理解する」。2010 年 3 月 2 日時点のオリジナルよりアーカイブ。2010 年 3 月 11 日閲覧。
- ^ Russinovich, Mark Eugene (2008-07-21). 「Windows の限界に挑む: 物理メモリ」。2019-08-08 にオリジナルからアーカイブ。2017-08-07に取得。Windows
XP SP2 では、データ実行防止 (DEP) に必要なため、非実行メモリを実装するハードウェアで物理アドレス拡張 (PAE) のサポートがデフォルトで有効になりましたが、これにより 4GB を超えるメモリのサポートも有効になりました。[…] 問題のあるクライアント ドライバー エコシステムにより、クライアント SKU は 4GB を超える物理メモリを理論的には処理できるにもかかわらず、それを無視するようになりました。[…] 4GB は、32 ビット クライアント SKU のライセンス制限です。
外部リンク
- Windows 7 32 ビットで 4 GB RAM をフル活用する方法 (Windows 7 の Gavotte RAMDisk)
- 32 ビット システムで 4 GiB の RAM を忘れて先に進むべき理由
