web-dev-qa-db-ja.com

32ビットマシンでアクセスできるメモリの量は?

32ビットまたは64ビットマシンとはどういう意味ですか?

これはプロセッサアーキテクチャです。32ビットマシンは、64ビットマシンと同じ方法で32ビットデータを同時に読み書きできます。

32ビットマシンがアクセスできる最大メモリは何ですか?

2^32=4Gb(4Gigabit = 0.5 GigaByte)

それは4Gb RAMを意味しますか?

64ビットマシンでも同じ方法を検討すると、16ExbiBytesのRAMを使用できます..それは可能ですか?

私の概念は正しいですか?

56
haris

はい。32ビットアーキテクチャは、最大4ギガバイトのメモリのアドレス指定に制限されています。オペレーティングシステムによっては、予約されたアドレススペースにより、この数はさらに削減される場合があります。

この制限は PAE(物理アドレス拡張) を使用して特定の32ビットアーキテクチャで削除できますが、プロセッサでサポートされる必要があります。 PAEはプロセッサが4 GBを超えるメモリにアクセスできるようにしますが、1つのプロセスで使用できる仮想アドレススペースの量は変更しません。各プロセスは最大4 GBのアドレススペースに制限されます。

そして、理論上、64ビットアーキテクチャは1680万テラバイト、つまり2 ^ 64バイトのメモリに対応できます。しかし、現在の一般的な実装がこれを完全にサポートしているとは思わない。たとえば、AMD64アーキテクチャでは、最大1テラバイトのメモリしかアドレスできません。さらに、オペレーティングシステムは、サポートされているアドレス可能なメモリの量にも制限を設けます。 Windowsの多くのバージョン(特に家庭用またはその他のサーバー以外の用途向けに設計されたバージョン)は、任意に制限されています。

45
Cody Gray

通常、32ビットまたは64ビットマシンが意味するのは、外部から見える(「アーキテクチャ化された」)汎用整数レジスタのサイズです。

ただし、これはハードウェアの構築方法とはほとんど関係ありません。たとえば、Intel Pentium Pro(古くなった)を考えてみましょう。通常、「32ビット」プロセッサと見なされますが、最大36ビットの物理アドレスをサポートし、64ビット幅のデータバスを持ち、サポートされているすべてのオペランドタイプの内部計算は、単一のレジスタセットで実行されます(したがって、最大の浮動小数点型をサポートするために80ビット幅です)。

少なくともIntelプロセッサの場合、長い間物理アドレッシングが利用可能であったにもかかわらず、32ビットプロセッサ上の1つのプロセスのアドレス空間内で直接見える最大メモリ量また、4ギガバイト(32ビットアドレス指定)に制限されています。 36ビットの物理アドレス指定により、最大64ギガバイトのRAMをアドレス指定できますが、常に4ギガバイトのRAMのみを直接表示できます。

64ビットマシンへの変更は、主にユーザー(またはアセンブリ言語レベルのコード)に表示される内容の変更を伴いました。繰り返しますが、実際に表示されるものはほとんどありません。たとえば、ほとんどの64ビットコードはポインター/アドレスを64ビットと見なしますが、実際のプロセッサはそのような大量のアドレスをサポートしていません。現在のCPUは48ビットの仮想アドレスをサポートし、(少なくとも私が気づいた限りでは)最大40ビットの物理アドレス指定をサポートしています。一方、将来的には、より大きなメモリが実用的になるように設計されているため、ソフトウェアにまったく影響を与えることなく物理アドレスを48ビットに拡張できます。 48ビットの仮想アドレス指定を増やしても、通常の場合、オペレーティングシステムカーネルのごく一部にしか影響しません(アドレスは既に64ビットであると想定されているため、通常のコードは影響を受けません)。

つまり、いいえ:64ビットマシンはnot最大64ビットの物理アドレス指定を実際にサポートしますしかしほとんどの典型的な64ビットソフトウェアは、その量のRAMを直接アドレス指定することをサポートしていました。

21
Jerry Coffin

本当に基本的な考え方に戻ると、メモリアドレスには32ビットがあります。これは、アドレスの2 ^ 32個の一意の組み合わせになります。慣例により、各アドレスは1バイトのデータを指します。したがって、合計2 ^ 32バイトまでのデータにアクセスできます。

32ビットOSでは、各レジスタは32ビットまたは4バイトを格納します。クロックサイクルごとに32ビット(1ワード)の情報が処理されます。特定の1バイトにアクセスしたい場合、概念的には、ビット単位の論理演算を行うことにより、個々のバイト(バイト0、バイト1、バイト2、バイト3など)を「抽出」できます。

例えば。 「dddddddd」を取得するには、「aaaaaaaabbbbbbbbccccccccdddddddd」と「00000000000000000000000011111111」との論理積を取ります。

9
Kevin Lee

基本的に32ビットアーキテクチャは、予想どおり4GBに対応できます。 AWEPAE のように、プロセッサがより多くのデータに対処できるようにする手法がいくつかあります。

5
rkosegi

はい、32ビットマシンでは、使用可能なメモリの最大量は約4GBです。実際には、OSによっては、予約されているアドレス空間の一部が原因で少なくなる場合があります。Windowsでは、たとえば3.5GBしか使用できません。

64ビットでは、実際に2 ^ 64バイトのメモリをアドレス指定できます。あなたがそれらを持っているというわけではありません-しかし、再び、ずっと前に、同じことが640kb以上のメモリを必要とすることについて言われました...

4
ThiefMaster

いいえあなたの概念は正しくありません。そして、正しく設定するには、誤って答えた質問に対する答えが必要です。

32ビットまたは64ビットマシンとはどういう意味ですか?

質問に対する答えは、「CPUで重要なものは32ビットまたは64ビットです」です。それで、問題はそれが重要なものであるということです?多くの人々は、マシンが32ビットか64ビットかを決定するデータバスの幅を言う。しかし、最新の32ビットプロセッサには32ビットまたは64ビット幅のデータバスはありません。ほとんどの32ビットシステムは、少なくともより多くのRAMをサポートするために少なくとも36ビットを備えています。ほとんどの64ビットプロセッサには、すでに大量のメモリがあるため、48ビット幅のデータバスしかありません。

したがって、私によると、32ビットまたは64ビットのマシンは、計算で使用される汎用レジスターのサイズ、またはコンピューターで使用される「自然なワードサイズ」によって決定されます。

32ビットOSは別のものであることに注意してください。 64ビットコンピューターで32ビットOSを実行できます。さらに、64ビットOSで32ビットアプリケーションを実行できます。違いがわからない場合は、別の質問を投稿してください。

したがって、プロセッサでアドレス指定できる適切なモードがオンになっている場合、プロセッサがアドレス指定できるRAMの最大量は2 ^(ビット単位のデータバスの幅)です。

さらに、データバスとメモリバンク間にマルチプレックスを導入することを阻止するものはありません。これにより、バンクが選択され、RAMがアドレス指定されます(2ステップで)。これにより、さらに多くのRAMをアドレス指定できます。しかし、それは実用的ではなく、非常に非効率的です。

2
Saurabh