64 位架构的 RAM 限制

64 位架构的 RAM 限制

原始问题:(你可以阅读这个混乱的问题,但我建议跳到重写的问题)

我看到很多地方都提到了 16 EB RAM 限制……但是,现代寄存器不是 64 位吗?如果是这样,2^64 应该指向可能的寄存器数量,并且由于每个寄存器都是 8 字节,因此实际限制应该是 128 EB((2^64)*8 字节)。示例:32 位进入 32X(2^32)的一个解码器,其他 32 位进入另一个 32X(2^32)解码器,以便在每个解码器中打开正确的线路,从而访问可用的 (2^32)^2 个寄存器中的特定寄存器,每个寄存器都有 64 位数据(用于保存 64 位总线)。

显然,我要么忽略了什么东西,要么就是我有可能是对的,而 16 EB 并不是真正的极限……

编辑:

这是很久以前写的,当我在自学 RAM 知识时,我偶然发现了多个与之相矛盾的资料(至少在我心中是如此,但我不记得为什么我会感到困惑以至于写了一个关于它的问题)并且一定是感到困惑。

我想重新澄清我最初的问题而不是删除它,以便它对未来的读者更有用(但我不需要答案,几年前我自学了这一点,甚至从那时起就获得了计算机科学学位)。

问题:(以对其他人更有用的方式编写)

当我问这个问题时,我非常宽泛地使用了“寄存器”一词来指代内存位置,并假设 RAM 是字寻址的(因此 64 位架构使用 8 个字节)。如果 RAM 是字寻址的,则每个内存位置将容纳 8 个字节,因此 16E * 8 字节 = 128EB。

由于大多数现代计算机使用字节寻址,每个内存位置的实际大小为 1 字节(8 位),因此 16E * 1 字节 = 16EB。

答案1

在 32 位架构中,指针包含 32 个(可用)位,可以寻址 2^32(=4294967296)个不同的地址。每个地址指向一个字节,因此您的地址空间为 4294967296 字节,即 4 GiB。

在 64 位架构上,同样的论点成立:您可以寻址 2^64 个不同的地址,每个地址指向一个字节,因此您的地址空间大小为 2^64 字节,正好是 16 EiB。

但是,请注意,在(当前)x86_64 上,指针只有 48 个可用地址位,以节省一些硅片。尝试访问无效地址将导致 CPU 异常,因为它没有实现其他位。不过,当额外的内存变得实用时,该架构将得到扩展。

相关内容