Mat*_*ado 5 operating-systems 64-bit 32-bit computer-architecture cpu-architecture
计算机体系结构从 16 位升级到 32 位再到 64 位。跳过 48 位的逻辑是什么?使用什么推理升级到 64 位而不是其他指数?
下表说明: 2^32 比 2^16 大 65536 倍。所以使用 2^48 是合乎逻辑的,它也是 2^32 的 65536 倍。相比之下,使用 2^64 似乎是一个巨大的飞跃。(在 amd64 推出 10 年后,台式计算机的销售内存为两位数 GB RAM,而服务器使用三位数 GB RAM。)
2^16 65.536
2^32 4.294.967.296 2^16 X 65536
2^48 281.474.976.710.656 2^32 X 65536
2^64 18.446.744.073.709.600.000 2^32 X 4294967296
Run Code Online (Sandbox Code Playgroud)
在下面编辑
我使用了在线十进制到二进制转换器,并得到了这些结果。显然,2^48 用 48 个二进制 1 达到最大值。
1111111111111111 65535 2^16 - 1 (16 ones)
10000000000000000 65536 2^16
11111111111111111111111111111111 4294967295 2^32 - 1 (32 ones)
100000000000000000000000000000000 4294967296 2^32
111111111111111111111111111111111111111111111111 281474976710655 2^48 - 1 (48 ones)
1000000000000000000000000000000000000000000000000 281474976710656 2^48
1111111111111111111111111111111111111111111111111111111111111111 18446744073709551615 2^64 - 1 (64 ones)
10000000000000000000000000000000000000000000000000000000000000000 18446744073709551616 2^64
Run Code Online (Sandbox Code Playgroud)
64 位是下一个逻辑步骤。
原因主要是因为对于以不同大小本地运行的系统,在软件和硬件中很容易处理将位数加倍(或一半)的步骤。在 64 位 CPU 可用之前,32 位系统已经在内部例行处理 64 位值。
例如:32 位系统可以通过将 64 位数字存储在 2 个 32 位变量/寄存器中来轻松处理它。
处理 48 位数字很尴尬:您需要同时使用 32 位和 16 位变量,或者仅使用 32 位变量的一部分或使用 3 个 16 位变量。这些针对 48 位的解决方案都不是最佳的。
一般而言:任何以 X 位工作的系统都可以轻松处理 (N * X) 和 (X / N) 的大小,其中 N 是 2 的幂。所以逻辑是 1、2、4、8、16、32 、64、128、256、512 等。
所有其他尺寸都需要更复杂的硬件和/或软件处理,因此不是最佳的。
因此,当在硬件架构中寻求更大的位大小时,使用相同的进程是有意义的,因为它只需要对操作系统、软件和编译器进行少量更新即可支持新的位大小。
(这一切都适用于 CPU 寄存器的本机位大小。当您考虑寻址 RAM 芯片的“地址线数量”时,您可能确实会看到较小的数字,那么对于架构来说是自然的。在
内部,这些 CPU 使用更多位,但并非所有位都连接到实际地址线。
例如:8088 和 8086 cpu 上的 20 行,80286 上的 20 行和 Pentium II 上的 36 行)
归档时间: |
|
查看次数: |
962 次 |
最近记录: |