0

ポインターのサイズを決定するものは何なのか、多くの質問がありました。基本的に経験則として、これはプロセッサ アーキテクチャであると言えます。

x86 -> 4 バイト ポインター

x64 -> 8 バイト ポインター

システムバスが原因だと言う人もいれば、否定する人もいます。アーキテクチャがポインタのサイズを教えてくれるとしましょう。

4 GB の RAM をアドレス指定するには、4,294,967,296 のマッピングが必要であり、サイズ 4 バイトのポインターは 4,294,967,296 のメモリ位置をアドレス指定できます。

8 GB の RAM をアドレス指定するには、8,589,934,592 のマッピングが必要であり、サイズが 4 バイトのポインターではすべての可能な値をアドレス指定できません。これが、x86 アーキテクチャで 4GB 以上の RAM を搭載できない理由ですか?

4

1 に答える 1

2

RAMの量は、アーキテクチャ(32ビットまたは64ビット)によって制限されません。アーキテクチャは、OSとその上で実行されているプログラムによって、一度にアドレス指定できるメモリの量のみを決定します。32ビットマシン、つまり32ビット幅のメモリバスを備えたマシンでは、OSとプログラムは4GBのメモリしか「認識」できません。しかし、それはRAMが4GBしかないという意味ではありません。メーカーが提供している場合は、16GBまたは4x4GBのRAMを使用できます。その場合、さらに2つの「非表示」アドレス行があり、それらの2行のレベルを決定するためのハードコードされたロジックがあるため、使用可能な4GBRAMのいずれかを選択します。00 01 10 11。これらの「隠し」アドレスビットはソフトウェア層では使用されないため、これらの層では4バイトのポインタしか使用できません。これらの「隠された」アドレス行の数は、RAMをどれだけ拡張できるかによって決まります。

これはほんの一例です。ベンダー、追加のRAMをどのように提供するかによって異なります。

于 2013-03-11T17:57:20.983 に答える