web-dev-qa-db-ja.com

AMD64の使用時に3 GBを超えるRAMが認識されないのはなぜですか?

Ubuntu 10.10 AMD64(Maverick Meerkat)が3GB以上のRAMに対応しないのはなぜですか?

私のマシンは、Toshiba P205-S6287 Intel Centrino Duo 64ビットプロセッサおよび667µMHzで4µGB RAMです。

詳細仕様 によると、ノートブックは64ビットCore 2 Duo T5300プロセッサーを実行し、945GM Expressチップセットを搭載しています。

8
Diego

これは、ラップトップのMobile Intel 945GM Expressによるものです。

同じチップセットを使用するThinkpad T60を所有しています。 Core2Duo 64ビットCPU向けのIntelからの最初のノースブリッジの1つでした。彼らはそれを設計することに失敗しました。

チップセットは理論的には4GBのRAMにしか対応できませんが、他のハードウェア(I/Oメモリ)にも対応する必要があります。そのために1GBの上位メモリ範囲を予約します。メインボードとノースブリッジはCPUへの32ビット物理アドレスバスのみを提供するため、Linuxカーネルでの64ビット論理メモリアドレスのサポートは役に立ちません。回避策はありません。
http://forums.lenovo.com/t5/T61-and-prior-T-series-ThinkPad/Thinkpad-s-and-N100-sw-945PM-chipset-can-t -address-gt-3G-Ram/mp/27

メモリバンクスイッチングの考案には、理論上のオプションがあります。しかし、カーネルはそれをサポートしていませんし、x86アーキテクチャでは意味がありません。 945GMのi810メモリコントローラは、おそらくそれが意味をなさないほど面倒です。

16
mario

いくつかの理由が考えられます。

1つは、実際には、AMD64ビルドを実行していないということです。もう1つは、マザーボードやBIOSが壊れていて、正しい量のRAMを報告していないことです。

もう1つは、ビデオメモリとその他のハードウェアリソースがメモリの3〜4 GBの領域を占有し、マザーボード/ BIOSがシャドウRAMを上位アドレスに引き上げることができないためです。アクセスしました。

dmesg出力を確認する必要があるかどうかを判断します。

1
psusi

私の短い答えは:おそらくBIOSデザイナーがずさんだったからです。

長いアンカーは次のとおりです。

4GBのRAMがインストールされていますが、Intel 945GMチップセットで利用可能な4GBの使用可能なRAMがあるとは期待できません。これはチップセットの制限です。これは、チップセットの仕様から知ることができます。

http://www.intel.com/content/www/us/en/intelligent-systems/navy-pier/mobile-945-express-chipset-datasheet.html

セクション9.2からの引用: "TheMemoryCコントローラーHubsは4 GBの最大DRAMアドレスデコードスペースを提供します。MCHはAPICまたはPCI Expressを再マッピングしませんメモリスペース。これは、システムに搭載されている物理メモリの量が4 GBに達すると、まだアドレス指定できないためシステムで使用できない物理メモリが存在することを意味します。 "

BIOSは、いくつかのリソース、つまりBIOS自体、PCIおよびPCI Expressメモリマップスペース、内部グラフィックス、APICメモリスペース、およびI/Oアクセス用の他のメモリウィンドウのアドレス範囲を予約する必要があります。これらのアドレス範囲はすべて4GBのアドレス空間内にある必要があり、システムメモリで使用できなくなったアドレス範囲を占有します。これらのリソースは、物理RAMメモリスペースを「盗む」と言えます。

つまり、4GBをインストールしている場合、3GBを超えるシステムメモリが利用できると期待できます

システムで使用できる物理メモリの量は、BIOS設計者がこれらのアドレス範囲を調整するためにどれだけの労力を費やすかによって異なります。たとえば、BIOSは各リソースに必要な最小量を割り当てることができます。または、システムのPCI Expressデバイスの使用状況に応じて、PCI Expressのアドレス割り当てを無効にしたり制限したりできます。

システムのBIOS設計者は、4GBをインストールした場合でも、使用可能なRAMの上限を静的な最大3GBに設定している可能性があります。このアプローチにより、BIOSデザイナーに1GBの静的アドレスウィンドウが提供されるため、リソースにアドレス範囲を割り当てるBIOSデザイナーのタスクが簡素化され、他のアドレス範囲と競合しなくなります。

1
Daniel K.

psusiは正しい。

私はここに同じ状況があります:

彼らはそれを「64ビットCPU」と呼びますが、多くの場合、4GB以上のメモリをアドレスすることはできません。

ほとんどの古いマザーボードにはアドレス用に32ビットしかなく、このプールからグラフィックカードもアドレスを取得する必要があります。

= 4 GB-グラフィックスカードメモリ(1 GB)= 3 GB。

何かのファームウェアにパッチを当てたり、アップグレードしたりすることでこれを修正する可能性がないことを恐れています。

詳細に興味がある場合は、以下をお勧めします:物理アドレス拡張

0
aatdark