メモリがバイトアドレス指定可能な場合、そうすべきではありません
2^64 / (2^10 * 2^10 * 2^10) = 2^34 GB
?
一般的なGoogle検索では、最大8GBまたは16GBと表示されます。
それはどうですか?また、オペレーティングシステムにどのように依存しますか?
メモリがバイトアドレス指定可能な場合、そうすべきではありません
2^64 / (2^10 * 2^10 * 2^10) = 2^34 GB
?
一般的なGoogle検索では、最大8GBまたは16GBと表示されます。
それはどうですか?また、オペレーティングシステムにどのように依存しますか?
回答:
複数のインターリーブ要因があります。
まず、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リリースにははるかに高い制限があります)。
MS Windowsを使用する場合、最大メモリはオペレーティングシステムによって制限されます。
Windows 7の場合、最大値は次のとおりです。
Windows Server 2008の範囲は、エントリーレベルの8GBから、最上位の2TBまでです。
完全なリストについては、http://msdn.microsoft.com/en-us/library/aa366778%28VS.85%29.aspxを参照してください。
これらの制限は、主にマーケティング上の理由によるものです。安価なバージョンを制限することにより、ハイエンドバージョンを(比較的)魅力的にします。
最近のLinuxビルドは約32TBのRAMで動作すると思いますが、すべてのハードウェアがそれをサポートできるわけではありません。
64ビットマシンは、最大2 64個のアドレス可能ユニットをアドレスできる必要があります(過去数十年にわたって設計されたアーキテクチャでは、アドレス可能ユニットは常にバイト(別名オクテット)です)。「ギガバイト」を2 30のアドレス可能ユニットとして定義する場合、はい、2 34ギガバイトは同じカウントを表す別の方法になります。
これらのばかげた小さな結果を生成したGoogle検索は何ですか?たぶん、あなたが見つけたページは、特定のモデルの合理的に安価なボックスで購入できるRAMの量について話していました-非常に高価ではないボックスでも、はるかに多くのRAM(もちろん、すべてアドレス可能)を持つことができます。
オペレーティングシステムは、アドレス可能なメモリの量を最も確実に制限できます(たとえば、ページテーブルのサイズを制限することで、おそらく、OSを再コンパイルまたは再構成することで設定できる構成可能な最大値に制限することができます-困難です)OSの特定のグループに焦点を合わせずに、より具体的にしてください。
必要なだけRAMを搭載できますが、それはすべてオペレーティングシステムと実行しているアプリケーションに依存します-他の誰かが述べたように。
ハードディスクのような他のハードウェアにも集中する空腹のCPU集中型アプリケーションを実行している場合は、完全に別のマシンで2番目のCPUを真剣に検討するのが最善です。たとえば、データベースアプリケーションとメールサーバーの両方を別々のマシンで実行します。
あなたがどれだけのメモリを持っているかは問題ではありません-今日の市場では、システム全体が停止します。単一のCPUでは、期待どおりにマルチタスクを処理できません。
メモリが大量に搭載された単一のマシンの場合、インストールされているメモリの量に関係なく、同じシステム上で複数のアプリケーションを実行している方が優れていますが、それほど素晴らしいものではありません。これが、大企業が64ビットアーキテクチャを使用してより多くのメモリに対処するだけでなく、2つ以上のサーバーで全体の負荷を分散する理由でもあります。
パフォーマンスについて本当に真剣に考えているなら、間違いなく64ビットになりますが、2番目のサーバーとの負荷分散も検討してください。
私はその道を進んでいます-単一のマシンを最大のRAMで構成します。しかし、複数のアプリケーションを実行する場合、犬のように実行されます。これは、CPU自体が処理できないためです。
私のアドバイスは、メモリを節約し、2台目のサーバーを購入してから、2つのサーバーの負荷を分散することです。それははるかにシンプルなプラスです-一度それを把握すると、より多くの処理能力と速度が必要なときに簡単に拡張できます。
また、64ビットアーキテクチャマシンは32ビットソフトウェアに対応できますが、32ビットマシンでは、オペレーティングシステムを含む32ビット以下のアプリケーションのみに制限されます。
市場全体がハードウェアとソフトウェアの両方で64ビットになっているので、長期的には64ビットにすることをお勧めしますが、がっかりすることになるので、メモリのバケット負荷で1台のマシンにすべてを詰め込むという考えを忘れてください。
「ロードバランシング」が何であるかわからない場合は、Googleで検索してください。
エクサバイトの「EB」以上のものが必要になると思います。
この32ビットプロセッサを見ると、2 32 B = 4 GBを使用できますが、最大で3 GBが必要です。
つまり、64ビットプロセッサは2 64 B = 16 EBを使用できますが、逆にロックされたアドレスがどのように使用されるかはわかりません。したがって、64ビットプロセッサは1 EB以上を消費すると言えます。この仕様は、PCが使用しているOSやそのモデルに依存しません。
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など)が異なると、制限も異なります。