Asus U31SD ノートブックに i5-2430M CPUを搭載しています。 Asusのサイトでは、最大RAMは8GBであると言われていますが、Intelは私のCPUは16GBをサポートしていると述べています。 Ubuntuでこのシステムで使用できる最大のRAMとは何ですか?
実際の制限は、ハードウェア(マザーボードのメモリサポートとそのスロットの量)とUbuntuのバージョン(32ビット、32ビット+ PAE、x32ABI、64ビット)の間にあります。
最大4GBをサポートするマザーボードがある場合、4GBのハードウェア制限があるため、32ビット、32ビットPAE、または64ビットのいずれを使用してもかまいません。
しかし、より多くのメモリをサポートするマザーボードを購入した場合、Ubuntuのバージョンを試してみることができます。これは、次の最大サポートメモリを備えています。
Ubuntu 32ビット-4GB RAM
Ubuntu 32ビット+ PAE(物理アドレス拡張)-64GB RAM
Ubuntu x32ABI-4GB RAM(これは、64ビットハードウェアで実行される64ビット拡張で変更された32ビットアーキテクチャ用です。まだ利用可能です。)
Ubuntu 64ビット-たくさん! (実際には2 ^ 64)しかし、ハードウェアの制限と実際のコンピューターのため、制限は約1TB(1024GB RAM)です。
したがって、4GBを超えるRAMを使用している場合は、メモリ制限に関する質問を使用する必要があります。この場合、本当に大きなメモリサイズをサポートする32ビットPAEまたは64ビットが必要になります。
また、たとえば現在4GBを使用していて、16GBのRAMを購入した場合、Ubuntuを再インストールしたり、変更を加えたりする必要はありません。思い出を変えるだけで、Ubuntuはすぐに読んで動作するはずです。設定は必要ありません。 4 GBの32ビットRAMがあり、16GBまたはRAMをインストールすると、Ubuntuは32ビットから32ビットPAEに自動的に変更されます。今年の初めに4 GBから16 GBに移行したので、これを保証できます。
32/64のメモリに関するUbuntuの非常に良い説明へのリンクは次のとおりです。 https://help.ubuntu.com/community/32bit_and_64bit#Memory
UPDATE-一部のマザーボードには、サポートされる最大メモリを有効化、修正、または強化するBIOSアップデートがあることを忘れていました。たとえば、過去の一部のIntelマザーボードでは、サポートされている最大数での動作に問題がありました。 BIOSアップデートによりこれが修正されました。 BIOSの問題のため、他のマザーボードは4GBをサポートしていましたが、アップグレード後は4GB以上をサポートしていました。
また、CPUとマザーボードでサポートされている最大メモリを比較すると、保持できる最大値はそれらの最小値です。たとえば、次のとおりです。
ケース1
CPU最大サポートメモリ-16GB
マザーボードの最大サポートメモリ-8GB
最大サポートメモリ-8GB(CPUとマザーボードの間の最小値であるため)
ケース2
CPU最大サポートメモリ-16GB
マザーボードの最大サポートメモリ-32GB
サポートされている最大メモリ-16GB(CPUとマザーボード間の最小値であるため)
ケース3
CPU最大サポートメモリ-16GB
マザーボードの最大サポートメモリ-64GB
サポートされている最大メモリ-16GB(CPUとマザーボード間の最小値であるため)
このメモリ制限とCPUの関係の背後にある理由は、最新のコアCPUを搭載したIntelによる技術的な変更によるものです。
したがって、あなたの場合、8GBをサポートするマザーボードと16GBをサポートするCPUがあります。つまり、使用できる最大容量は8GBで、マザーボードのスロットの量に応じて使用できます。そのAsusには2つのスロットがあります。つまり、2つの4GBのRAMを使用して最大8GBを完了することができます。
X32abiに関する詳細情報:
KernelNewbies- http://kernelnewbies.org/Linux_3.4#head-039c9d273884c9639937c10d68b4a3214869eb4b
LWN- https://lwn.net/Articles/456731/ (わかりやすい説明のためにコメントを読むことをお勧めしますメモリ制限について)
Google- http://sites.google.com/site/x32abi/
最後に、Ubuntu 12.04以降、すべての32ビットバージョンのUbuntuにはデフォルトでPAEが有効になっているため、すべての32ビットが最大64 GBのRAMをサポートします。 12.04+を使用していて、使用するアーキテクチャを知りたい場合は、いくつかの推奨事項に従う限り、それらのいずれかを使用できることがわかります。
512 MBのRAM以下の場合、32ビットを使用することを強くお勧めします
RAMが4 GB未満で512 MBを超える場合は、32ビットを使用することをお勧めします(ただし、64ビットを使用できます)
4 GBのRAMがある場合、32ビットを使用することをお勧めします(ただし、64ビットを使用できます)
4 GBまたはRAMと64 GBのRAMがある場合は、32ビットまたは64ビットを使用できますが、64ビットを使用することをお勧めします。
64 GBを超えるRAMがある場合は、64ビットを使用する必要があります
32ビットの場合、理論上の制限は2 ^ 32 = 4096 MBですが、PAE(物理アドレス拡張)のUbuntu 12.04からはデフォルトで2 ^ 36 = 64 GBの制限でオンになります。
64ビットの場合、理論的には2 ^ 64 = 16 777 216 TB(はい、テラバイト)です。実際には、RAMの量は2 ^ 48、つまり256 TBのRAMに制限されています。
通常のラップトップでは理論的な制限に実際に到達できないため、実際の制限はノートブックのメモリスロットの量(通常1〜2)とチップセットによるサポートです。 8 GBモジュールに多額のお金を払っても構わない場合、8〜16 GBが現実的です。
U31SDに追加する8GBを追加購入しました。合計12GBです。 Asusの仕様ページには8GBが制限であると書かれていますが、これは正常に機能します。 memtest86を渡し、64ビットUbuntuに表示されます。
最新のBIOSアップデートがインストールされていますが、それが違いを生むかどうかはわかりません。
参考までに、Sudo dmidecode -t 16
の出力はMaximum Capacity: 16 GB
を示します。
これは、CPUではなくマザーボードの制限です。 CPUは最大16GBをサポートできる可能性がありますが、マザーボードが8GBしか使用できない場合はそれが制限です。
Ubuntuでは、32ビットを実行している場合、制限は4GBであり、64ビットを実行している場合、はるかに高くなります(確かに思い出せませんが、16GBをはるかに超えています)。
ただし、ハードウェアによって常に制限されます。マザーボードの制限とCPUの制限を常に比較し、PCの制限として最も低い値を取る必要があります。
特定の場合、8GBはマザーボードがそれ以上のRAMをサポートしていないことが原因です。
ただし、Ubuntu自体は32ビットで最大4GB、32ビットで64GBをサポートします PAE 、64ビットで128GB(理論的には64ビットでは上限がはるかに高くなります)。
ポインターのサイズを決定する多くの質問がありました。基本的に、これはプロセッサアーキテクチャであると言えます。
x86 -> 4 bytes pointer -> can address 4,294,967,296 locations = 4GB (it is the limit)
x64 -> 8 bytes pointer -> can address 1.84467440737e+19 locations (it is the limit, big, eh)
8GBのRAMをアドレスするには、8,589,934,592マッピングが必要であり、サイズ4バイトのポインターはすべての可能な値をアドレスできません。そのため、x86アーキテクチャで4GB RAMを超えることはできません。
RAMの量は、アーキテクチャ(32ビットまたは64ビット)によって制限されません。アーキテクチャは、OSとその上で実行されているプログラムによって、一度にどれだけのメモリをアドレスできるかを決定します。 32ビットマシン、つまり32ビット幅のメモリバスを備えたマシンでは、OSとプログラムは4 GBのメモリしか「見る」ことができません。しかし、それはRAMが4 GBしかないことを意味するものではありません。製造元から提供されている場合は、16 GBまたは4x4 GBのRAMを搭載できます。その場合、さらに2つの「隠された」アドレス行があり、これらの2行のレベルを決定するハードコードされたロジックがあるため、利用可能な4 GB RAM-00 01 10 11のいずれかを選択します。これらの「非表示」アドレスビットはソフトウェアレイヤーでは使用されないため、これらのレイヤーでは4バイトポインターのみを使用できます。これらの「隠された」アドレス行の数は、RAMをどれだけ拡張できるかによって決まります。
これはほんの一例です。ベンダー、追加RAMを提供する方法によって異なります。
こちらもご覧ください:
通常の場合、ポインタはシステム内のメモリの単位よりも多くのアドレスを保持するのに十分な大きさです。これにより、十分なメモリがインストールされていない(つまり、使用可能なメモリの範囲を超えている)か、アーキテクチャがそのようなアドレスをサポートしていないため、プログラムがメモリの単位に対応しないアドレスにアクセスしようとする可能性が生じます。最初のケースは、Intel x86アーキテクチャなどの特定のプラットフォームでは、セグメンテーションフォールト(セグメンテーション違反)と呼ばれる場合があります。 2番目のケースは、ポインターが64ビット長でアドレスが48ビットまでしか拡張されていないAMD64の現在の実装で可能です。そこで、ポインターは特定の規則(標準アドレス)に準拠する必要があるため、非標準ポインターが逆参照されると、プロセッサーは一般保護違反を発生させます。
一方、一部のシステムには、アドレスよりも多くのメモリ単位があります。この場合、メモリのセグメンテーションやページングなどのより複雑なスキームを使用して、メモリの異なる部分を異なる時間に使用します。 x86アーキテクチャの最後の化身は、PAEページングメカニズムを介して32ビットのリニアアドレス空間にマップされた最大36ビットの物理メモリアドレスをサポートします。したがって、一度にアクセスできるのは可能なメモリの1/16だけです。同じコンピューターファミリの別の例は、80286プロセッサの16ビット保護モードで、16 MiBの物理メモリしかサポートしていませんが、最大1 GiBの仮想メモリにアクセスできますが、 16ビットのアドレスおよびセグメントレジスタにより、1つのデータ構造で64 KiBを超えるアクセスが煩雑になりました。 ANSIポインター演算のいくつかの制限は、このプロセッサファミリのセグメント化されたメモリモデルによるものである可能性があります。[引用が必要]
一貫性のあるインターフェイスを提供するために、一部のアーキテクチャはメモリマップドI/Oを提供します。これにより、一部のアドレスはメモリの単位を参照し、他のアドレスはコンピュータ内の他のデバイスのデバイスレジスタを参照できます。ファイルオフセット、配列インデックス、リモートオブジェクト参照など、他の種類のオブジェクトのアドレスと同じ目的のいくつかに類似した概念があります。
(詳細 ここ )