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 将指令指针有效地分成两部分,一个段选择器和一个偏移量。访问物理内存时进入地址总线的实际地址是使用这两个部分形成的。在所谓的实数寻址方式中,地址就是简单的segment selector * 16 + offset。这 2 块是 16 位的,这种寻址方案可以让您访问大约 1MB 的内存。如果您只更改指令指针而不更改段,您将被限制为 64KB。还有其他具有拆分指令指针的处理器。例如,德州仪器的 TMS320C54xx。

回到 x86... 在 64 位 x86 CPU 上,您的指令指针是 64 位长的。但是,CPU 可能不(我认为仍然不)支持完整的 64 位内存地址,仅使用低 52 位左右。这是一个示例,其中指令指针大于访问所有内存所需的大小。

于 2011-11-09T00:11:22.063 回答
1

这完全取决于硬件设计师的心血来潮。

于 2011-11-08T22:29:33.947 回答