找到关于这个主题的一些混合答案。它似乎要么意味着地址总线上有多少条线(因此 64 位意味着 64 条线,因此我们可以寻址 2^64 位),要么意味着我们可以在核心的单个 ALU 周期内一次移动多少数据。它到底是什么意思?
答案1
64 位 CPU 在其(内部)地址总线中有 64 个地址位。
造成这种混淆的原因是,当地址总线宽度增加时,所有保存地址的寄存器也需要增加,并且通常数据寄存器也会同时增加,特别是当地址和数据寄存器在使用中重叠时。但是没有理由 64 位 CPU 不能有 8 位数据寄存器。
请注意,有些 64 位 CPU 具有 64 位数据寄存器,但仍然只有 8 位数据总线。这些 CPU 使用一条或多条指令一次将一个字节的数据加载到可能的多字节数据寄存器中。实际上,64 位外部数据总线并不是真正需要的,但并行加载这些字节比顺序加载更快。
一些嵌入式 CPU 可能是 64 位的,用于寻址 4G 以上的内存,但仍具有 8 位(甚至是 1 位 - 带有串行 RAM!)外部数据总线,因为它针对物理尺寸而不是速度进行了优化。如果嵌入式 CPU 还包含大量内部 RAM 并且外部 RAM 是可选的,则更有可能出现这种情况。
64 位地址总线对于寻址大量内存至关重要。但是,就像数据总线一样,这可能是一个内部寄存器,而外部 CPU 可以按顺序多路复用字节,就像有时使用数据总线一样。这可行,只是速度较慢。此外,即使使用速度更高的 CPU,有些也支持这样一种模式:在总线上声明一次起始地址,然后将一大块 RAM 顺序地时钟化到缓存行中,而无需在地址总线上增加地址。
类似地,内部 64 位地址总线实际上可能是带有 64 位宽数据总线的 58 位外部地址总线,因此它在每次读取/写入时都会一次加载或保存 8 个对齐的字节,而不需要额外的地址位来寻址这 8 个字节。(如果您尝试加载未对齐的字节,则会收到总线错误信号。)这样的处理器可能会添加额外的寻址模式,在读取时仍将 8 个字节加载到缓存行中,但随后仅将其中 4 个或 2 个或 1 个字节从缓存复制到寄存器中。它可能以这种方式支持未对齐的小读取,也可能不支持,因为这会增加额外的逻辑并使芯片变大。
一些早期的英特尔“64 位”英特尔 CPU 使用内部 64 位地址总线,但外部地址总线只有 36 位,因此它只能有 64G 的外部可寻址内存,但它可以寻址更大数量的虚拟内存,因为寄存器内部仍然是 64 位。
如何在外部实现这一点是速度优化、引脚优化和增加的指令集复杂性之间的平衡。使其成为 64 位的关键在于所有地址和地址寄存器都是 64 位。