4 小结
优缺点 | 32-bit | 64-bit | 实例或备注 | ||
硬件 | 涉及对象 | 子项 | |||
寄存器[1] | 个数 | 少[2] | 多[3] | 增加的64位寄存器数量 | |
直接寻址能力 | 寻址范围从232 扩大到 264 bit,物理内存的限制被突破 | ≤4G 操作系统和应用程序共享最多4G的内存,通常 | ≤16EB[4]
| 更大的内存访问范围[5] 更多的内存加载数据[6] | |
32位机器上处理64位数据 |
| 需要开发人员拆分数据(不可直接使用,需要修改代码) | 可直接在64位寄存器上使用 |
| |
64位机器上处理32位数据 |
|
|
| 64位机器上处理32位数据,通常支持[7] | |
软件 | 操作系统 | 指针(句柄) |
|
|
|
编译器、链接器、库 |
|
| 以便充分利用支持的64位处理器的较大的寄存器组 |
| |
Java虚拟机 |
| 区分32-bit的虚拟机,但32-bit的虚拟机对于java编译后的字节码则提供64-bit的支持 | 区分64-bit的虚拟机 |
| |
应用程序 | 同样的数据 | 耗费较少内存 | 耗费更多内存 | 因更长的指针和一些数据类型导致的内存中边界对齐导致 | |
应用方式 | 文件处理 | 文件本身的大小 | 处理较小尺寸的文件 | 处理更大尺寸的文件 |
|
数值型 |
|
| 受限于数据类型 | ||
字符型 |
|
| 不受限制 | ||
开发方式 | Windows | 相同的开发环境和API |
|
|
|
相同的开发技巧 |
|
|
| ||
其他 |
|
|
| 1 FORTRAN and C 代码比Java语言需要更多地考虑移植性。[8] 2 |
[1] 寄存器是一个硬件系统提供的可供最快访问的内存类型。
[2] X86-32有8个通用寄存器。
[3] x86-64有16个寄存器;Itanium有128个浮点寄存器、128个通用寄存器。
[4] Windows的64-bit操作系统为操作系统内核和用户的应用程序各提供了最大8TB的虚拟空间。
[5] 可直接寻址的可能性显著增加,降低了间接寻址带来的时间消耗,因此速度更快。
[6] 将更多的大型数据加载到内存中,供处理器访问。由于访问内存中数据的速度比访问磁盘驱动器上数据的速度快10000倍,因此更能加快速度。
[7] 大多数适用于32-bit版本Windows的程序都可以在 64-bit版本的Windows 上运行。但许多防病毒程序例外。适用于32-bit版本Windows的设备驱动程序无法在运行64-bit版本Windows的电脑上运行。
[8] Java的数据类型,被JDK屏蔽,不受操作系统限制。所以,Java程序在32-bit和64-bit的JDK下是一致的。