私は最近、オンライン リソースからコンピューター アーキテクチャのコースを開始しました。私が手に取った本の 1 つを読んだところ、x86 プロセッサには 32 のアドレス行があり、データ バス上で一度に 4 バイトのデータを読み取ることができることがわかりました。これで、アドレス行が 32 行あると、アドレス指定可能なメモリが 40 億の一意のアドレスに制限されることがわかりました。私が頭を悩ませているのは、CPU が各サイクルで 40 億の一意のアドレスのそれぞれから 4 バイトのデータを読み取ることができる場合、x86 システムの RAM が 4 GB に制限される理由です。代わりに 16 GB (4 GB の 4 倍) であるべきではありませんか? 誰かが私のためにこれを片付けてもらえますか? また、32 ビットまたは 64 ビットのマイクロプロセッサについて話すとき、32/64 は CPU のアドレス ラインの数またはデータ ラインの数を指しますか? (私の最初の質問については、おそらく私は
1 に答える
x86マイクロプロセッサは、 8086から今日の64ビットマルチコアCPUまで数十年にわたって進化してきた幅広いカテゴリのプロセッサです。x86プロセッサの長所の1つは、下位互換性があることです。つまり、ファミリの最新のプロセッサは8086の命令を理解します(と呼ばれる特別なモードで実行する必要がありますReal Mode
)。8086には16ビットレジスタとメモリおよびI/Oへの16ビットバスがあり、バイトアドレス可能でした。つまり、プログラムで使用されるアドレスは個々のバイトのアドレスでした。8086は、メモリから1バイトまたは2バイト(ワードと呼ばれる)をロードできます。時間の経過とともに、新しいx86プロセッサは、アドレスラインにビットを追加し、仮想メモリを追加し、より大きなを追加しましwords
た。したがって、32ビットのデータ項目はdouble word
そして、64ビットのデータ項目がとして知られるようにquad word
なり、SSEが登場し、128ビットoctaword or double quadword
になりました。これがデータサイズの表です。新しいx86プロセッサは、これらのサイズのデータにアクセスできます。実際、最新のプロセッサには、256ビットのベクトルレジスタを持つAVX命令があります。プログラムの観点から、メモリのアドレス指定は、最下位アドレスのバイトのアドレスを指定することによって実行されます。
64ビットコンピューティングの詳細については、こちらをご覧ください。ここに良い要約があります:
さらに資格がない場合、64ビットコンピュータアーキテクチャには通常、64ビット幅の整数レジスタとアドレス指定レジスタがあり、64ビットデータ型とアドレスを直接サポートできます。ただし、CPUには、レジスタとは異なるサイズの外部データバスまたはアドレスバスがあり、さらに大きい場合があります(たとえば、32ビットのPentiumには64ビットのデータバスがあります)。