メモリがアドレス可能なバイトである場合、それは可能ではありませんか
2^64 / (2^10 * 2^10 * 2^10) = 2^34 GB
?
一般的なGoogle検索では、最大8 GBまたは16 GBと表示されています。
それは本当ですか?また、オペレーティングシステムにどのように依存しますか?
複数のインターリーブ要素があります。
まず第一に、あなたは2を持っているシステムを組み立てることは決してできません64 物理RAMのバイト(16エクシバイト)。
第2に、アーキテクチャが64ビットポインターを使用しているからといって、それらのポインターのすべてのビットが実際に使用されているわけではありません。特に、現在のx86-64 CPU(別名AMD64およびIntelの現在の64ビットチップ)は、実際には48ビットアドレスライン(AMD64)および42ビットアドレスライン(Intel)を使用します( http://en.wikipediaを参照)。 .org/wiki/X86_64#Virtual_address_space_details )、理論的には256テラバイトの物理RAMを許可します。
第2に、マザーボードには、物理的および論理的にサポートできるRAMの量に独自の制限があります。物理的には、RAMに使用できるスロットは非常に多くなります。 「論理的な」制限に関しては、なぜこれがx86-64(CPU自体に長い間移行されているメモリコントローラー)の場合にも当てはまるのかは完全にはわかりませんが、それはあります。おそらく、設計と製造で数ドルを節約するために、住所行の角が切り取られています。
第3に、オペレーティングシステムが効率的にサポートできる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 アドレス可能なユニット、次にはい、234 ギガバイトは、同じ数を表す別の方法です。
どのような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台のマシンにすべてを押しつぶすことは忘れてください。
「ロードバランシング」が何であるかが不明な場合は、それをググってください。
エクサバイトの「EB」以上の時間がかかると思います。
この32ビットプロセッサを見てください。32 B = 4 GB、ただし最大で3 GB必要です。「逆アドレスの場合は1 GBだから」
つまり、64ビットプロセッサは264 B = 16 EBですが、逆転のためにロックされたアドレスをどのように使用するかはできません。したがって、64ビットプロセッサには1 EB以上かかると言えます。この仕様は、PCが使用しているOSやモデルに依存しません。
IntelまたはAMD CPUを例にとると、物理メモリと仮想メモリの両方にいくつかの制限があります。他の人々はハードウェアのピン配置とマザーボードの制限について話しましたが、内部の制限もあります。
MMU=のターミナルページテーブルエントリには、物理アドレスの52の有効ビットが含まれ、理論的には最大4096 TBの物理RAMをマップできます。
MMUは、4レベルのページテーブルを実装し、そのトップレベルは512×512 GBのエントリで構成されます。したがって、仮想メモリは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など)には異なる制限があります。