64ビットマシンは一度にどれくらいのメモリをアドレスできますか?


32

メモリがバイトアドレス指定可能な場合、そうすべきではありません

2^64 / (2^10 * 2^10 * 2^10) = 2^34 GB

一般的なGoogle検索では、最大8GBまたは16GBと表示されます。

それはどうですか?また、オペレーティングシステムにどのように依存しますか?


私の作業マシンには12 GBあり、すべてに加えて1 GBのビデオRAM、すべてのハードウェア、すべての仮想メモリに問題なく対応できるので、明らかに8 GBは壁を越えています。

Neweggは、1台のコンピューター向けの32GBのRAMパッケージを販売しています。32ビットは3.2GBをサポートし、128ビットは数百万テラバイトをサポートするため、64ビットは32ビットの2倍をはるかに超えていると思います。
tkbx

回答:


53

複数のインターリーブ要因があります。

まず、2 64バイト(16エキバイト)の物理RAMを搭載したシステムを組み立てることはできません。

第二に、アーキテクチャが64ビットポインターを使用するからといって、それらのポインターのすべてのビットが実際に使用されることを意味するわけではありません。特に、現在のx86-64 CPU(別名AMD64およびIntelの現在の64ビットチップ)は、実際には48ビットアドレス行(AMD64)および42ビットアドレス行(Intel)を使用しています(http://en.wikipedia.org/wikiを参照)/ X86_64#Virtual_address_space_details)、理論的には256テラバイトの物理RAMを許可します。

第二に、マザーボードには、物理​​的および論理的にサポートできるRAMの量に独自の制限があります。物理的には、RAMに使用できるスロットは非常に多くなります。「論理的」制限については、なぜx86-64(CPU自体に長い間移行されてきたメモリコントローラー)がまだこれが当てはまるのか、完全にはわかりませんが、実際はそうなっています。おそらく、設計と製造で数ドルを節約するために、住所線の角が切られていると思われます。

第三に、オペレーティングシステムには、効率的にサポートできるRAMの量に関して内部制限がある場合があります。これは、実際には、実際には存在しないメモリの使用状況を追跡するために過度に大きなデータ構造が必要になるのを防ぐためです。最後に確認したように、Linuxはx86-64上のプロセスごとに128TBの仮想アドレス空間を許可し、理論的には64TBの物理RAMをサポートできます。

第4に、一部のオペレーティングシステム(Windowsなど)は、RAMが必要な場合にユーザーがより高価なバージョンにアップグレードするための戦術として使用できるRAMの量を人為的に制限します(Windows 7 Starterは2GB、Home Basicは8、Home Premiumに制限されています) 16に、Professional以上は192GBで、Windows Serverリリースにははるかに高い制限があります)。


1
+1典型的である物理アドレス線を言及するため<< 64ビットアーキテクチャ上のアドレスレジスタのビット数
ポールR

3
42ビットのアドレス行のソース(匿名編集によって追加)をいただければ幸いです。それまでは、個人的にその情報を信頼できるとは考えていません。
ボブ

21
絶対とは絶対言うな。私が聞いた最後のムーアの法則はまだ有効であるため、16エクサバイトのRAMを搭載したシステムは、私たちの寿命内に現れる可能性があります。その後、我々はすべて128ビットのオペレーティングシステムに移動する必要があります...
マイケル・ハンプトン

物理アドレスは、TLB内の物理アドレスに提供されるビット数(および物理アドレスタグ付けのキャッシュタグのサイズ)およびページテーブルエントリ内の物理アドレスに使用可能なビット(そのように定義されている場合) 4KiBページで52ビットの物理アドレス空間をサポートするx86-64のようなアーキテクチャ)。後者はより強固な(実装ベースではなくアーキテクチャ上の)制限ですが、アーキテクチャも変更できます。
ポールA.クレイトン

2
@MichaelHampton-NecroReply、しかし抵抗できませんでした:) 2年ごとの倍増(最近の傾向よりも速い)は、16GBから16EBに達するまでに60年かかります。それまでに、シリコントランジスタに関する「法律」に関連性があるとは思わない;)
MatBailie

9

MS Windowsを使用する場合、最大メモリはオペレーティングシステムによって制限されます。

Windows 7の場合、最大値は次のとおりです。

  • スターター:2GB
  • ホームベーシック:8GB
  • ホームプレミアム:16GB
  • プロフェッショナル:192GB
  • エンタープライズ:192GB
  • 究極:192GB

Windows Server 2008の範囲は、エントリーレベルの8GBから、最上位の2TBまでです。

完全なリストについては、http://msdn.microsoft.com/en-us/library/aa366778%28VS.85%29.aspxを参照してください

これらの制限は、主にマーケティング上の理由によるものです。安価なバージョンを制限することにより、ハイエンドバージョンを(比較的)魅力的にします。

最近のLinuxビルドは約32TBのRAMで動作すると思いますが、すべてのハードウェアがそれをサポートできるわけではありません。


4
これらは技術的な制限ではありません。これらは、ビジネス上の理由で導入された人為的な制限です。
カスペルド

8

64ビットマシンは、最大2 64個のアドレス可能ユニットをアドレスできる必要があります(過去数十年にわたって設計されたアーキテクチャでは、アドレス可能ユニットは常にバイト(別名オクテット)です)。「ギガバイト」を2 30のアドレス可能ユニットとして定義する場合、はい、2 34ギガバイトは同じカウントを表す別の方法になります。

これらのばかげた小さな結果を生成したGoogle検索は何ですか?たぶん、あなたが見つけたページは、特定のモデルの合理的に安価なボックスで購入できるRAMの量について話していました-非常に高価ではないボックスでも、はるかに多くのRAM(もちろん、すべてアドレス可能)を持つことができます。

オペレーティングシステムは、アドレス可能なメモリの量を最も確実に制限できます(たとえば、ページテーブルのサイズを制限することで、おそらく、OSを再コンパイルまたは再構成することで設定できる構成可能な最大値に制限することができます-困難です)OSの特定のグループに焦点を合わせずに、より具体的にしてください。


2 ^ 30のアドレス可能ユニットが1 GBなのはなぜですか?各アドレス単位には1ビットが格納されるため、2 ^ 30アドレス単位には0.134217728ギガバイトに相当するビット数が格納されます。私は何が欠けていますか?
ダーシャンショーダリー

1
@DarshanChaudhary 2 ^ 30は、個別のアドレスの数です。各アドレスは、1ビットではなく、1バイトのメモリを識別します。
デビッドモールズ

3

必要なだけRAMを搭載できますが、それはすべてオペレーティングシステムと実行しているアプリケーションに依存します-他の誰かが述べたように。

ハードディスクのような他のハードウェアにも集中する空腹のCPU集中型アプリケーションを実行している場合は、完全に別のマシンで2番目のCPUを真剣に検討するのが最善です。たとえば、データベースアプリケーションとメールサーバーの両方を別々のマシンで実行します。

あなたがどれだけのメモリを持っているかは問題ではありません-今日の市場では、システム全体が停止します。単一のCPUでは、期待どおりにマルチタスクを処理できません。

メモリが大量に搭載された単一のマシンの場合、インストールされているメモリの量に関係なく、同じシステム上で複数のアプリケーションを実行している方が優れていますが、それほど素晴らしいものではありません。これが、大企業が64ビットアーキテクチャを使用してより多くのメモリに対処するだけでなく、2つ以上のサーバーで全体の負荷を分散する理由でもあります。

パフォーマンスについて本当に真剣に考えているなら、間違いなく64ビットになりますが、2番目のサーバーとの負荷分散も検討してください。

私はその道を進んでいます-単一のマシンを最大のRAMで構成します。しかし、複数のアプリケーションを実行する場合、犬のように実行されます。これは、CPU自体が処理できないためです。

私のアドバイスは、メモリを節約し、2台目のサーバーを購入してから、2つのサーバーの負荷を分散することです。それははるかにシンプルなプラスです-一度それを把握すると、より多くの処理能力と速度が必要なときに簡単に拡張できます。

また、64ビットアーキテクチャマシンは32ビットソフトウェアに対応できますが、32ビットマシンでは、オペレーティングシステムを含む32ビット以下のアプリケーションのみに制限されます。

市場全体がハードウェアとソフトウェアの両方で64ビットになっているので、長期的には64ビットにすることをお勧めしますが、がっかりすることになるので、メモリのバケット負荷で1台のマシンにすべてを詰め込むという考えを忘れてください。

「ロードバランシング」が何であるかわからない場合は、Googleで検索してください。


2

エクサバイトの「EB」以上のものが必要になると思います。

この32ビットプロセッサを見ると、2 32 B = 4 GBを使用できますが、最大で3 GBが必要です。

つまり、64ビットプロセッサは2 64 B = 16 EBを使用できますが、逆にロックされたアドレスがどのように使用されるかはわかりません。したがって、64ビットプロセッサは1 EB以上を消費すると言えます。この仕様は、PCが使用しているOSやそのモデルに依存しません。


1
実際には、64ビットプロセッサには通常、256テラバイトのメモリに十分な48ビットのアドレス空間があります。
465544

エクサバイトではなく、エクスビバイトを意味すると思います。
マルティノー

1

IntelまたはAMD CPUを例にとると、物理メモリと仮想メモリの両方にいくつかの制限があります。他の人々は、ハードウェアのピン配置とマザーボードの制限について話しましたが、内部の制限もあります。

MMUのターミナルページテーブルエントリには、52ビットの物理アドレスが含まれ、理論的には最大4096 TBの物理RAMをマップできます。

MMUは、最上位レベルが512×512 GBエントリで構成される4レベルのページテーブルを実装します。したがって、仮想メモリは256 TBに制限されます。

私の知る限り、すべての64ビットオペレーティングシステムはDMAP(ダイレクトマップ)を実装していますが、これは非常に便利です。ただし、仮想メモリは256 TBに制限されているため、DMAPのサイズも制限されています。通常、128 TBはユーザーモード用に、128 TBはカーネル用に予約されています。カーネル用の128 TBのうち、半分までがDMAP用に予約されている場合があります。DMAPの有用性により、オペレーティングシステムは通常、物理メモリをDMAPが処理できるものに制限します。

Intel / AMDのほとんどの(すべて?)64ビットオペレーティングシステムは、サポートされる物理メモリが約64 TBに制限され、一般的なカーネル仮想メモリに64 TB、ユーザー仮想メモリに128 TBを残します。

-

CPUの内部では、追加の各アドレスビットがキャッシュタグに対してより多くのトランジスタを消費するため、CPUキャッシュには格納する物理アドレスビットの数にも制限があります。メモリはDMIリンクを介してアドレス指定することもできるため、DRAMコントローラーのピン制限は必ずしも最後の言葉ではありません。

CPUアーキテクチャ(ARM、PowerPCなど)が異なると、制限も異なります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.