0

プログラム カウンターのサイズは何によって決まりますか?

だから、これは私が知っていることです:

メモリ アドレス レジスタ (MAR) のサイズは、log2 (メモリ空間) です。

PC のサイズは、各メモリ アドレスのアドレス可能度と同じですか、それとも MAR と同じですか?

たとえば、メモリ空間が 16M で、各メモリ空間が 16 ビット アドレス指定可能である場合、MAR サイズはメモリ アドレス位置を指定するためにアドレス指定可能な 24 ビットになります。

PC のサイズは 24 ビット (MAR と同じ) ですか、それとも 32 ビット (各空間のアドレス可能度) ですか?

4

2 に答える 2

1

MARが何であるかはわかりませんが、通常、program counter(AKA instruction pointer)レジスタはすべてのプログラムメモリをアドレス指定するのに十分な大きさです。通常。

オリジナルの i80x86 CPU では、命令ポインターが事実上、セグメント セレクターとオフセットの 2 つに分割されています。物理メモリにアクセスするときにアドレス バスに入る実際のアドレスは、これら 2 つの部分を使用して形成されます。いわゆるリアルアドレッシングモードでは、アドレスは単純にsegment selector * 16 + offset. これら 2 つの部分は 16 ビットであり、このアドレッシング スキームにより、約 1MB のメモリにアクセスできます。命令ポインターのみを変更し、セグメントを変更しなかった場合、64KB に制限されます。分割命令ポインタを持つプロセッサは他にもあります。たとえば、Texas Instruments の TMS320C54xx です。

x86 に戻ります... 64 ビット x86 CPU では、命令ポインターは 64 ビット長です。ただし、CPU は、下位 52 程度のビットのみを使用して、完全な 64 ビット メモリ アドレスをサポートしていない可能性があります (そして、私はまだサポートしていないと思います)。これは、すべてのメモリにアクセスするのに必要なサイズよりも命令ポインタが大きい例です。

于 2011-11-09T00:11:22.063 に答える
1

これは、ハードウェア設計者の気まぐれに完全に依存します。

于 2011-11-08T22:29:33.947 に答える