web-dev-qa-db-ja.com

nバイトのメモリを搭載したコンピュータには、何ビットのアドレスが必要ですか?

512 MバイトのRAMを備えたバイトアドレス指定のコンピュータでは、(プログラムカウンタなどに)何ビットのアドレスが必要ですか。

式はどのように見えますか?

これは、32ビットが4 GBのRAMしかアドレスできないという事実とどのように関連していますか?

4
Niklas

Nバイトをアドレス指定するには、log2(n)ビットが必要です。たとえば、8ビットの数値に256の異なる値を格納できるため、8ビットで256バイトをアドレス指定できます。 210 = 1024なので、キロバイトのすべてのバイトをアドレス指定するには10ビットが必要です。同様に、メガバイトのすべてのバイトをアドレス指定するには20ビット、ギガバイトのすべてのバイトをアドレス指定するには30ビットが必要です。 232 = 4294967296、これは4ギガバイトのバイト数なので、4 GBのメモリには32ビットのアドレスが必要です。

14
Caleb

既存の回答では、RAMのアドレス指定の式は2 ^ BITS =アドレス可能RAMであると説明されていますが、その理由は説明されていません。

2ビットのシステムを考えます。次のように、4バイトのRAMをアドレス指定できます。

バイト0:00
バイト1:01
バイト2:10
バイト3:11

追加ビットごとに、2倍のメモリをアドレス指定できます。たとえば、バイト0〜3のそれぞれに0ビットを追加し、バイト4〜7の場合は1ビットを追加します。バイナリのXに対応するビット配置を使用してバイトXをアドレス指定します。

6
Brian

RAM=のNバイトを直接アドレス指定するには、Nバイトのログ(基数2)が必要です。

4 GB = 2^32 bytes
log_2( 2^m ) = m

そう

log_2( 2^32 ) = 32

したがって、32ビットアドレスを使用すると、2 ^ 32バイト(4 GB)を直接参照できます。 64ビットアドレスを使用すると、2 ^ 64バイト(16エクサバイト)を直接参照できます。

3
Justin Cave

512 MバイトのRAMを備えたバイトアドレス指定のコンピュータでは、(プログラムカウンタなどに)何ビットのアドレスが必要ですか。

答えはありません。

最新のシステムでは、ソフトウェアは仮想メモリを使用し、仮想メモリは物理メモリとは何の関係もありません。たとえば、512 MiBのRAM、1.5 GiBのスワップ領域、2 GiBのメモリマップファイルがあるとします。

約512 MiBのRAMを搭載したほとんどのシステム。通常、32ビットのアドレスと32ビットの命令ポインターが必要です(および4 GiBプロセスごとの仮想アドレス空間(カーネルによって予約されているスペースを含む))が必要です)。

「RAMの量」も、実際の物理アドレスサイズや最小物理アドレスサイズとは関係ありません。 512 MiBのRAM、4 MiBのROM、および512 MiBのメモリマップデバイス(ビデオカードなど)を搭載したコンピューターでは、最低2 GiBの物理アドレス空間が必要です(実際には4 GiBの物理アドレス空間)があります。

0
Brendan

RAMの量ではなく、アドレス空間に依存します。 512 MBの64ビットプロセッサRAMおよび5でサポートされる仮想メモリTBハードドライブは、アドレス用に少なくとも43ビットを必要とします。スパース割り当てをサポートする場合その後、あなたはもっと必要です。

0
gnasher729