下表详细说明了使用指定的 -xarch 选项编译后由各种 SPARC 处理器执行的可执行程序的性能。此表的目的在于帮助您识别适合您的可执行程序在特定目标机器上运行的最佳 -xarch 选项。首先识别您关心的机器的范围,然后考虑维护多个二进制程序的成本与在较新的机器上获得最高性能的好处。
表 B–12 -xarch 矩阵
SPARC 机器指令集: |
||||||
---|---|---|---|---|---|---|
V8a |
V8 |
V9 (非 Sun 处理器) |
V9 (Sun 处理器) |
V9b |
||
v8a |
N |
S |
S |
S |
S |
|
-xarch 编译选项 |
v8 |
PD |
N |
S |
S |
S |
v8plus |
NE |
NE |
N |
S |
S |
|
v8plusa |
NE |
NE |
** |
N |
S |
|
v8plusb |
NE |
NE |
** |
NE |
N |
|
v9 |
NE |
NE |
N |
S |
S |
|
v9a |
NE |
NE |
** |
N |
S |
|
v9b |
NE |
NE |
NE |
N |
||
**注:使用此指令集编译的可执行程序可能会在 V9 非 Sun 处理器芯片中在名义上执行,或者根本不执行。请咨询硬件供应商,以确保您的可执行程序可在其目标机器上运行。 |
N 反映标称性能。程序执行,并充分利用处理器的指令集。
S 反映满意性能。程序执行,但并不利用所有可用的处理器指令。
PD 反映性能降低。程序执行,但根据使用的指令可能会导致性能轻微或显著下降。当内核对处理器未实现的指令进行仿真时,出现性能下降。
NE 表示不可执行。程序因内核不对处理器未实现的指令进行仿真而不可执行。
如果要使用 v8plus 或 v8plusa 指令集编译可执行文件,请考虑改用 v9 或 v9a 进行编译。提供了 v8plus 和 v8plusa 选项,因此程序可在支持 64 位程序的 Solaris 8 软件可用之前利用一些 SPARC V9 和 UltraSPARC 功能。使用 v8plus 或 v8plusa 选项编译的程序不可移植到 SPARC V8 或更旧的机器上。可以分别使用 v9 或 v9a 重新编译此类程序,以充分利用 SPARC V9 和 UltraSPARC 的所有功能。可通过 Sun 代表获得《The V8+ Technical Specification》白皮书,文件号码为 8027447-10,此书解释了 v8plus 和 v8plusa 的限制。
SPARC 指令集体系结构 V8 和 V8a 均是二进制兼容的。
由 v8plus 和 v8plusa 编译的二进制目标文件 (.o) 可以进行链接并可一起执行,但只能在与 SPARC V8plusa 兼容的平台上运行。
由 v8plus、v8plusa 和 v8plusb 编译的二进制目标文件 (.o) 可以进行链接并可一起执行,但只能在与 SPARC V8plusb 兼容的平台上运行。
-xarch 值 v9、v9a 和 v9b 只能在 UltraSPARC 64 位 Solaris 操作系统中使用。
使用 v9 和 v9a 编译的二进制目标文件 (.o) 可以进行链接并可一起执行,但是只能在与 SPARC V9a 兼容的平台上运行。
使用 v9、v9a 和 v9b 编译的二进制目标文件 (.o) 可以进行链接并可一起执行,但是只能在与 SPARC V9b 兼容的平台上运行。
对于任何特定选择,生成的可执行文件在早期体系结构中运行时都会慢得多。此外,虽然在多数指令集体系结构中都可以使用四精度(REAL*16 和 long double)浮点指令,但编译器不在它生成的代码中使用这些指令。
下表提供了 SPARC 平台上每个 -xarch 关键字的详细信息。
表 B–13 用于 SPARC 平台的 -xarch 标志