i5-2430M CPUを搭載したAsus U31SDノートブックを使用しています。Asusのサイトでは、最大RAMは8 GBですが、Intelは、私のCPUは16 GBをサポートしていると言っています。Ubuntuでこのシステムで使用できる最大RAMはいくつですか?
i5-2430M CPUを搭載したAsus U31SDノートブックを使用しています。Asusのサイトでは、最大RAMは8 GBですが、Intelは、私のCPUは16 GBをサポートしていると言っています。Ubuntuでこのシステムで使用できる最大RAMはいくつですか?
回答:
実際の制限は、ハードウェア(マザーボードのメモリサポートとそのスロットの量)とUbuntuのバージョン(32ビット、32ビット+ PAE、x32ABI、64ビット)の間にあります
最大4GBをサポートするマザーボードをお持ちの場合、4ビットのハードウェア制限があるため、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はすぐに読んで動作するはずです。設定は必要ありません。32 GBの4 GB RAMがあり、16 GBまたはRAMをインストールすると、Ubuntuは32ビットから32ビットPAEに自動的に変更されます。今年の初めに4 GBから16 GBに移行したので、これを保証できます。
32/64のメモリに関するUbuntuの非常に良い説明へのリンクは次のとおりです。https : //help.ubuntu.com/community/32bit_and_64bit#Memory
更新 -一部のマザーボードには、サポートされる最大メモリを有効化、修正、または強化するBIOS更新があることを追加するのを忘れていました。たとえば、過去の一部のIntelマザーボードでは、サポートされている最大数での動作に問題がありました。BIOSアップデートによりこれが修正されました。BIOSの問題のため、他のマザーボードは4GBをサポートしていましたが、アップグレード後は4GB以上をサポートしていました。
また、CPUとマザーボードでサポートされる最大メモリを比較すると、保持できる最大値はそれらの最小値です。たとえば、次のとおりです。
ケース1
CPUサポートされる最大メモリ-16GB
マザーボードサポートされる最大メモリ-8GB
サポートされる最大メモリ-8GB(CPUとマザーボード間の最小値であるため)
CASE 2
CPUサポートされる最大メモリ- 16ギガバイト
マザーボードサポートされる最大メモリ- 32ギガバイト
あなたのサポートされる最大メモリ- 16ギガバイト(CPUとマザーボードの間で最も低い値であるため)
ケース3
CPUサポートされる最大メモリ-16GB
マザーボードサポートされる最大メモリ-64GB
サポートされる最大メモリ-16GB(CPUとマザーボード間の最小値であるため)
CPUとこのメモリ制限の関係の背後にある理由は、最新のコアCPUを搭載したIntelによる技術的な変更によるものです。
したがって、あなたの場合、8GBをサポートするマザーボードと16GBをサポートするCPUがあります。つまり、使用できる最大容量は8GBであり、マザーボードのスロットの量に応じて使用できます。そのAsusには2つのスロットがあります。つまり、最大8GBを完了するために2つの4GBのRAMを使用できます。
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以降、Ubuntuのすべての32ビットバージョンにはデフォルトで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が現実的です。
これは、CPUではなくマザーボードの制限です。CPUは最大16GBをサポートできる場合がありますが、マザーボードが8GBしか使用できない場合はそれが制限です。
Ubuntuでは、32ビットを実行している場合、制限は4GBであり、64ビットを実行している場合、はるかに高くなります(確かに思い出せませんが、16GBをはるかに超えています)。
ただし、ハードウェアによって常に制限されます。マザーボードの制限とCPUの制限を常に比較し、PCの制限として最も低い値を取る必要があります。
ポインターのサイズを決定する多くの質問がありました。基本的に、これはプロセッサアーキテクチャであると言えます。
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を提供する方法によって異なります。
こちらもご覧ください:
通常の場合、ポインタはシステム内のメモリの単位よりも多くのアドレスを保持するのに十分な大きさです。これにより、十分なメモリがインストールされていない(使用可能なメモリの範囲を超えている)か、アーキテクチャがそのようなアドレスをサポートしていないため、プログラムがメモリの単位に対応しないアドレスにアクセスしようとする可能性が生じます。最初のケースは、Intel x86アーキテクチャなどの特定のプラットフォームでは、セグメンテーションフォールト(セグメンテーション違反)と呼ばれる場合があります。2番目のケースは、ポインターが64ビット長でアドレスが48ビットまでしか拡張されていないAMD64の現在の実装で可能です。そこで、ポインターは特定の規則(標準アドレス)に準拠する必要があるため、非標準ポインターが逆参照されると、プロセッサーは一般保護違反を発生させます。
一方、一部のシステムには、アドレスよりも多くのメモリ単位があります。この場合、メモリのセグメンテーションやページングなどのより複雑なスキームを使用して、メモリの異なる部分を異なる時間に使用します。x86アーキテクチャの最後の化身は、PAEページングメカニズムを介して32ビットのリニアアドレス空間にマッピングされた最大36ビットの物理メモリアドレスをサポートします。したがって、一度にアクセスできるメモリの合計は1/16だけです。同じコンピューターファミリの別の例として、80286プロセッサの16ビット保護モードがありました。これは、16 MiBの物理メモリのみをサポートしますが、最大1 GiBの仮想メモリにアクセスできますが、16ビットアドレスとセグメントの組み合わせレジスタにより、1つのデータ構造で64 KiBを超えるアクセスが面倒になりました。
一貫性のあるインターフェイスを提供するために、一部のアーキテクチャはメモリマップドI / Oを提供します。これにより、一部のアドレスはメモリの単位を参照でき、他のアドレスはコンピュータ内の他のデバイスのデバイスレジスタを参照できます。他の種類のオブジェクトのアドレスと同じ目的のいくつかを果たす、ファイルオフセット、配列インデックス、リモートオブジェクト参照などの類似の概念があります。
(詳細はこちら)