共计 2875 个字符,预计需要花费 8 分钟才能阅读完成。
EM64T
为 x86 系统而设的应用软件实在太庞大,Intel 眼见使用 AMD64 的 Opteron 及 Athlon 64 取得成功,便需要对竞争者的威胁作出迎击, 也开发了兼容早期 16 位和 32 的 64 位处理器,Intel 将之命名为 ”IA-32E”,意即 IA-32 的延伸,在数星期后才改称为 EM64T。虽然该处理器的内核与 AMD64 几乎相同,但是在以往 Intel 的营销中,Intel 总把 AMD 的产品贬为自家技术的仿制品,Intel 为了自身的面子,定不会承认使用了对手 AMD 的技术,因此 Intel 把该技术以 EM64T 这个名字来推出,后来 Intel 索性将此技术正式命名为 Intel 64。两家自主研发的公司都分别为了自己的旗帜而开始了如火如荼的竞争。Intel 64 指令集被应用于 Pentium 4、Pentium D、Pentium Extreme Edition、Celeron D、Xeon、Intel Core 2 及 Intel Core i7 处理器上。由于 AMD64 和 Intel64 基本上一致,很多软硬件产品都使用一种不倾向任何一方的词汇来表明它们对两种架构的同时兼容。出于这个目的,AMD 对这种 CPU 架构的原始称呼 ”x86-64″ 被不时地使用,还有变体 ”x86_64″。其他公司如微软和太阳计算机系统公司在营销资料中使用”x64”作为对”x86-64”的缩写。
EM64T 技术详解
Intel 官方是给 EM64T 这样定义地:EM64T 全称 Extended Memory 64 Technology,即 64 位内存扩展技术,他是 Intel IA-32 架构(Intel Architectur-32 extension)地一个扩展,且兼容原来地架构。通过增加 CPU 地运算位宽扩展增加 cpu 和内存之间地位宽,从而让系统支持更大容量地内存(32bit 处理器最多只能支持内存容量只有 4GB,而 64bit 地最高则达 64GB)。在理论上,虽然 EM64T 架构最高能够很好的运行在 64 bit 内存寻址,但由于设计和制造工艺等方面地因素,并非所有 EM64T 地处理器都能达到理论地上限。Intel 为支持 EM64T 技术地处理器可分为两大类:传统 IA-32 模式和 IA-32e 扩展模式,两大类下具体又可分为多种运行模式。传统 IA-32 模式下,与 IA-32 工作模式一样,我们可以安装 windows xp 32bit,安装 32 位硬件硬件驱动,安装 32 位应用程序。目前大部分人的处理器是 Intel 64,安装了 windows xp 32,上面的程序运行情况良好,包括 16bit 和 32bit 程序。兼容模式下,操作系统和硬件驱动程序都是 64bit,计算机允许在 64bit 操作系统下不需要预编译就可以运行大多数传统 32bit 应用程序,这和传统 IA-32 模式下基本相同,32 位应用程序仍然只能访问 4G 内存,但此限制只在进程级,而不在系统级。由于兼容模式下,要求硬件驱动程序都是 64bit,所以导致了 64 位 Windows 最大的一个劣势就是兼容性,而兼容性方面最突出的就是各种硬件设备的驱动程序。如果你所用的硬件设备的开发商还没有开发出针对 64 位 Windows XP 的驱动程序,可能该设备在 64 位 Windows XP 下无法使用,也有可能使用操作系统自带的通用驱动勉强使用,但是性能和功能都会受到影响。至于其他软件程序则一般没有什么大问题。在 64 位 Windows XP 中,只有 16 位应用程序是完全无法使用的,而 32 位应用程序则可以继续使用。不过在安装这些应用程序的时候也要注意,有些应用程序,虽然和硬件扯不上关系,但是为了实现软件的某些特殊功能,安装软件的时候同时还会向系统中装入驱动程序,这种程序在没有发布 64 位版之前是无法在 64 位 Windows 下使用的。如著名的截图软件 SnagIt,该软件使用默认安装的时候会向系统中安装一个虚拟的打印机,该打印机可以将文档输出为图形格式。因为安装了虚拟设备,因而该程序还没有提供 64 位的版本,因此在 64 位 Windows XP 下使用默认选项安装的时候就会出错,除非我们自定义安装选项,不安装这个虚拟打印机。但是对于服务器来说,服务器不需要什么外设,硬件的兼容性差对服务器的影响较小。64bit 模式下,必须要有 64bit 地操作系统、驱动程序和应用程序三者合作,这时操作系统无法运行 32 位程序,兼容性最差,但充分发挥 64 位架构的优势。
32 & 64 bit
64bit 计算主要有两大优点:可以进行更大范围的整数运算;可以支持更大的内存。
64 位 CPU 一次可提取 64bit 数据,比 32 位提高了一倍,理论上性能会提升 1 倍。但这是建立在 64bit 操作系统,64bit 软件的基础上的。
但是不能因为数字上的变化,而简单的认为 64bit 处理器的性能是 32bit 处理器性能的两倍。实际上在 32bit 应用程序下,32bit 处理器的性能甚至会更强,即使是 64bit 处理器,目前情况下也是在 32bit 应用下性能更强。所以要认清 64bit 处理器的优势,但不可迷信 64bit。
JVM 32 & JVM 64 bit
目前只有 server VM 支持 64bit JVM,client 不支持 32bit JVM。
The Java Plug-in,AWT Robot and Java Web Start 这些组件目前不支持 64bit JVM
本地代码的影响:对 JNI(Java Native Interface)的编程接口没有影响,但是针对 32-bit VM 写的代码必须重新编译才能在 64-bit VM 工作。
32-bit JVM 堆大小最大是 4G, 64-bit VMs 上, Java 堆的大小受限于物理内存和操作系统提供的虚拟内存。
线程的默认堆栈大小:在 windows 上 32 位 JVM, 默认堆栈最大是 320k,而在 64-bit JVM 是 1024K。
性能影响
64bit JVM 相比 32bit JVM, 在大量的内存访问的情况下,其性能损失更少,AMD64 和 EM64T 平台在 64 位模式下运行时,Java 虚拟机得到了一些额外的寄存器,它可以用来生成更有效的原生指令序列。
性能上,在 SPARC 处理器上,当一个 java 应用程序从 32bit 平台移植到 64bit 平台的 64bit JVM 会用大约 10-20% 的性能损失,而在 AMD64 和 EM64T 平台上,其性能损失的范围在 0 -15%。
垃圾回收功能
垃圾回收会收回对象不再需要使用的内存,它必须被经常执行以释放对象不再访问的 Java 堆。由于在 32 位与 64 位平台上,Java 堆中的数据大小会有所变化,所以会因为 32 位与 64 位 JVM 的性能差异,然而指针越大越 GC 管理越困难, 导致相应垃圾回收的性能也会有所不同。
如何选择 JVM 32bit & JVM 64bit
在项目实施中,数据库服务器可以选择部署在 64bit 操作系统上;
而对于应用服务器,就不能一概而论了,如果要获得应用的最佳性能,就要在应用的部署环境中进行测试,以评价转换到 64 位所带来的潜在性能提升,再决定是部署在 JVM 32bit 还是 JVM 64bit。
但一般情况下,除非应用需要较大的内存,并超过了 2G,并且对应的服务器物理内存超过了 4G,否则应该以 JVM 32bit 优先。