IBM为运行在IBM POWER和PowerPC硬件上的Linux发行版的Java技术提供了多种版本的开发人员工具包和运行时环境。 也就是说,在IBM eServer™iSeries™上运行的Linux发行版,包括eServer i5; eServerpSeries®,包括eServer p5; eServer BladeCenter™JS20; 和eServer OpenPower™。
存在许多为POWER或PowerPC硬件创建的Linux发行版,例如:
- CRUX PPC
- Debian Linux
- Gentoo Linux
- Mandrakelinux
- 黄狗Linux
- ROCK Linux
- 红帽企业Linux
- SUSE LINUX企业服务器
列举一些领先的发行版。
IBM JVM并非旨在支持现有Linux发行版与所有PowerPC硬件的所有可能组合,其中某些不是IBM设计的。 因此,当在Apple PPC硬件的Linux发行版上运行时,IBM eServer iSeries,eServer pSeries或eServer OpenPower上的Linux开发人员套件或Linux上的运行时环境的兼容性取决于特定Linux发行版与特定Apple硬件的组合。 。
有关Java技术的IBM开发人员套件与Linux的IBM POWER和IBM PowerPC硬件的兼容性的更多信息,请参阅Linux的IBM开发人员套件:经过测试的平台和Linux开发人员IBM开发人员下载页面。
与运行在Apple PowerPC硬件(例如G3,G4和G5处理器)上的Linux发行版捆绑在一起的Java环境的可用性和规格差异很大。 有些根本不提供任何JDK或JRE,而有些则仅提供JRE。 如果为Apple PPC硬件发行版的特定Linux提供了JRE和/或JDK,则JRE和/或JDK可能不是用户特定目的所需的版本。
在Linux上使用适用于Java POWER的IBM开发人员工具包用于IBM POWER和在Apple PPC硬件上使用IBM PPC硬件
要使用Apple PPC硬件上的IBM POWER和IBM PPC硬件的Java技术的IBM开发人员工具包或运行时环境,您需要知道系统具有哪种类型的主机处理器(G3,G4或G5)。 您还需要知道JVM是否正确确定了主机处理器体系结构,以便JIT编译器可以为该体系结构生成正确的指令集。
为了生成主机处理器指令的确切集合,JIT编译器需要精确确定基础处理器的体系结构类型。 如果无法确定处理器类型(可能是因为不支持),则JIT会针对该特定JVM版本中的默认处理器设置生成一组指令。 为默认处理器生成的指令可能不在主机处理器可以理解的指令集中。 由于将非法指令传递到处理器以执行,这将导致JVM异常终止-SIGILL崩溃。 完全禁用JIT意味着JVM将以纯解释性模式运行应用程序的Java字节码。 最终的性能很可能不会令人满意。 试图跳过某些JIT编译为不属于主机处理器理解的ISA指令的某些ISA指令的方法的基本JIT编译几乎没有任何意义。 JIT调试通常是一个复杂且耗时的过程。 即使可以强制将所有方法在首次加载到JVM中时都进行JIT编译,但是很难预测在执行任何中等复杂的Java应用程序的过程中何时以及将哪些方法加载到JVM中。
为了让JIT编译器确定正确的处理器类型,请使用systemcfg_init()
函数检查系统配置信息。 如果该函数返回NULL,则将分析和检查/ proc文件系统中的/ proc / cpuinfo文本文件。 某些Linux发行版在/ proc文件系统中没有cpuinfo文件。 使cpuinfo在/ proc文件系统中可用可能是一种解决方案。
即使正确确定了处理器类型,JIT可能也没有为非支持的处理器生成PPC指令子集的规定。 一个例子是苹果G4处理器,摩托罗拉7400,它通常被归类为PowerPC 700系列。 IBM JVM的JIT编译器不支持此处理器。 解决方案是指示JIT生成一组PowerPC 604指令。 PowerPC 604是最早的PowerPC处理器之一,其指令构成了任何PowerPC处理器的指令的核心子集。 换句话说,每个PowerPC处理器都应该能够执行基本PowerPC 604指令。 将全局变量JITC_PROCESSOR_TYPE设置为“ 6”应该指示JIT生成G4应该能够执行的PowerPC 604指令。
表1显示了JITC_PROCESSOR_TYPE变量的可能值,以及它们如何与各种POWER和PPC处理器体系结构对应。
表1. JITC_PROCESSOR_TYPE值及其POWER / PPC体系结构的相关性
值 | 电源/ PPC芯片 |
---|---|
1个 | 电源(RS1) |
2 | 电源I(RSC) |
3 | 力量II |
4 | PPC 601 |
5 | PPC 603 |
6 | PPC 604 |
7 | PPC 620 |
8 | PPC 630 /电源III |
9 | 明星电源RS64 |
10 | 明星电源RS64II |
11 | 明星电源RS64III |
12 | 电源4 |
13 | 电源4+ |
14 | 电源5 |
结论
通过了解特定系统的处理器类型,您可以决定为JITC_PROCESSOR_TYPE设置什么值,以使库存的IBM JVM for Linux发行版的IBM Power和IBM PPC硬件可以在Apple硬件的Linux发行版上工作。 您还可以查看是否无法确定或不支持处理器类型。
如果用于IBM POWER的IBM JVM for Linux发行版和IBM PPC硬件可以识别主机处理器并支持该处理器的指令集,则这将不是必需的。 例如,在Apple G5上运行Yellow Dog Linux版本3或4时,上述都不是必需的,因为Apple G5基于IBM PowerPC 970处理器,而该处理器又基于IBM POWER4芯片的单核版本。 IBM JVM JIT可以为此生成指令。
词汇表
i5 -IBM eServer i5是使用POWER5处理器的下一代iSeries。
ISA-指令集体系结构。
iSeries-基于POWER架构的IBM集成服务器。
JDK -Java开发套件。 JRE的超集。 包括JRE和开发工具,例如编译器,调试器和其他工具。
JIT -同JITC。
JITC-即时编译器,可将Java字节码转换为主机体系结构的本机代码。
JRE -Java运行时环境。 JDK的子集。 不包括开发工具。 提供JVM以运行在其他地方编译的Java字节码。
JSDK -Java软件开发套件。 该缩写可与SDK和JDK互换使用。
JVM -Java虚拟机。
NPTL-本机POSIX线程库。 NPTL为Linux带来了企业级线程支持,远远超过了LinuxThreads提供的性能。 它基于用户线程与内核线程之间的1:1比率。
OpenPower-针对Linux调整的基于IBM POWER5微处理器的系统。
p5 -IBM eServer p5是使用POWER5处理器的下一代pSeries。
电源 -使用增强的RISC架构进行性能优化。 IBM eServer pSeries,iSeries和OpenPower服务器的通用芯片体系结构的名称。
POWER3-入门级pSeries服务器当前可用的POWER芯片之一。
POWER4 -POWER4体系结构在广泛的商业和高性能计算环境中具有卓越的性能。 基于POWER4的iSeries和pSeries服务器支持动态逻辑分区。
POWER4 + -也称为POWER4-II。 升级POWER4可以在更高的频率下以更低的功耗工作。
POWER5-当前最新可用的POWER芯片。 像POWER3和POWER4一样,POWER5技术统一了POWER和PowerPC架构。 它具有通信加速,芯片多处理和同步多线程(SMT)的功能。
PowerPC-从POWER派生的硬件体系结构。
PPC -PowerPC的缩写。
pSeries-在基于IBM POWER的硬件上运行AIX和/或Linux的基于IBM UNIX的服务器。
RHEL-红帽企业Linux。
RISC-精简指令集计算机。
SDK-软件开发套件。 缩写可以与JDK和JSDK互换使用。
SLES -SUSE LINUX企业服务器。
SR-服务刷新。
翻译自: https://www.ibm.com/developerworks/systems/library/es-apple.html