Sun Studio 12 Update 1: C ユーザーズガイド

B.2.74.1 SPARC での -xarch のフラグ

次の表は、指定された -xarch オプションでコンパイルされたあと、さまざまな SPARC プロセッサで実行される実行可能ファイルのパフォーマンスを示しています。この表は、特定の対象マシン上の実行可能ファイルにもっとも適した -xarch オプションを調べるために利用してください。初めにマシンの範囲を決め、続いて複数のバイナリを管理する手間と、より新しいマシンから最大限のパフォーマンスを引き出す効果を比較してみるとよいでしょう。

表 B–13 -xarch の組み合わせ
 

SPARC マシンの命令セット 

   

v8a 

V8 

V9  

(Sun 以外のプロセッサ) 

V9 

(Sun のプロセッサ) 

v9b 

 

v8a 

-xarch コンパイルオプション 

v8 

PD 

 

v8plus 

NE 

NE 

 

v8plusa 

NE 

NE 

** 

 

v8plusb 

NE 

NE 

** 

NE 

 

v9 

NE 

NE 

 

v9a 

NE 

NE 

** 

 

v9b 

NE 

NE 

[** ]

NE 

** 注: この命令セットでコンパイルされる実行可能ファイルは、Sun 以外の V9 プロセッサチップ上で仕様どおり機能するか、あるいはまったく機能しません。実行可能ファイルがその対象マシンで動作するかどうかについては、ハードウェアベンダーに問い合わせてください。 

v8plus または v8plusa 命令セットを使用して実行可能ファイルをコンパイルしようと考えている場合は、代わりに v9 または v9a によるコンパイルを考慮してください。v8plusv8plusa オプションは、64 ビットプログラム対応の Solaris 8 がリリースされる以前に、プログラムで SPARC V9 と UltraSPARC 機能の一部が利用できるように提供されたものです。v8plus または v8plusa オプションでコンパイルされたプログラムは、SPARC V8 以前のマシンには移植できません。SPARC V9 および UltraSPARC のすべての機能を活用するために、それぞれ v9 または v9a オプションを使用して、このようなプログラムを再コンパイルできます。『The V8+ Technical Specification』ホワイトペーパー、パーツ番号 802-7447-10 は購入先から入手でき、v8plus および v8plusa の制限について説明しています。

オプションの選択によっては、生成された実行可能プログラムのパフォーマンスが、初期のアーキテクチャーよりかなり劣ることがあります。また、4 倍精度 (REAL*16 および long double) 浮動小数点命令は、これらの命令セットアーキテクチャーの多くで使用できますが、コンパイラは、それらの命令を生成したコードで使用しません。

次の表に、SPARC プラットフォームでの各 -xarch キーワードの詳細を示します。

表 B–14 SPARC プラットフォームでの -xarch のフラグ

フラグ  

意味  

generic

ほとんどのプロセッサに共通の命令セットを使用します。これはデフォルトであり、—m32 を指定してコンパイルする場合の v8plus、および —m64 を指定する場合の sparc に相当します。

generic64

多くのシステムで良好な 64 ビットパフォーマンスを得るためのコンパイルをします(Solaris のみ)。 

このオプションは -m64 -xarch=generic に相当し、以前のリリースとの互換性のために用意されています。64 ビットでのコンパイルを指定するには、次のものではなく -m64 を使用してください。 - xarch=generic64

native

このシステムで良好なパフォーマンスを得られるようにコンパイルします。現在コンパイルしているシステムプロセッサにもっとも適した設定を選択します。 

native64

このシステムで良好なパフォーマンスを得られるようにコンパイルします (Solaris のみ)。このオプションは -m64 -xarch=native に相当し、以前のリリースとの互換性のために用意されています。

sparc

SPARC-V9 ISA 用のコンパイルを実行しますが、VIS (Visual Instruction Set) は使用せず、その他の実装に固有の ISA 拡張機能も使用しません。このオプションを使用して、コンパイラは、V9 ISA で良好なパフォーマンスが得られるようにコードを生成できます。 

sparcvis

SPARC-V9 + VIS (Visual Instruction Set) version 1.0 + UltraSPARC 拡張機能用のコンパイルを実行します。このオプションを使用すると、コンパイラは、UltraSPARC アーキテクチャー上で良好なパフォーマンスが得られるようにコードを生成することができます。 

sparcvis2

UltraSPARC アーキテクチャー + VIS (Visual Instruction Set) version 2.0 + UltraSPARC-III 拡張機能用のオブジェクトコードを生成します。 

sparcfmaf

SPARC-V9 命令セット、VIS (Visual Instruction Set) version 1.0 を含む UltraSPARC 拡張機能、VIS (Visual Instruction Set) version 2.0 を含む UltraSPARC-III 拡張機能、および浮動小数点積和演算用の SPARC64 VI 拡張機能の命令をコンパイラが使用できるようになります。 

-xarch=sparcfmaf fma=fused と組み合わせて使用し、ある程度の最適化レベルを指定することで、コンパイラが自動的に積和命令の使用を試みるようにする必要があります。

sparcima

sparcima 版の SPARC-V9 ISA 用にコンパイルします。 

コンパイラが、SPARC-V9 命令セットに加えて、VIS (Visual Instruction Set) Version 1.0 を含む UltraSPARC 拡張機能、VIS (Visual Instruction Set) Version 2.0 を含む UltraSPARC-III 拡張機能、浮動小数点の積和演算用の SPARC64 VI 拡張機能、整数の積和演算用の SPARC64 VII 拡張機能からの命令を使用できるようにします。 

v7

(廃止)

SPARC-V7 ISA 用にコンパイルします。 

最新の Solaris オペレーティングシステムは、SPARC V7 アーキテクチャーをサポートしていません。このオプションを付けてコンパイルしたプログラムは、最新のプラットフォームで実行速度が低下します。 

デフォルトは -xarch=v8plus です。

例: SPARCstation 1、SPARCstation 2 

v8a

(廃止)

V8a 版の SPARC-V8 ISA 用にコンパイルします。定義上、V8a は V8 ISA を意味します。ただし、fsmuld 命令は含まれていません。

このオプションを使用すると、コンパイラは、V8 a ISA 上で良好なパフォーマンスが得られるようにコードを生成することができます。 

例: microSPARC I チップアーキテクチャーに基づくすべてのシステム 

v8

(廃止)

SPARC-V8 ISA 用にコンパイルします。V8 アーキテクチャー上で良好なパフォーマンスを得るためのコードを生成します。例: SPARCstation 10 

v8plus

V8plus 版の SPARC-V9 ISA 用にコンパイルします。定義上、V8plus は V9 ISA を意味します。ただし、V8plus ISA 仕様で定義されている 32 ビットサブセットに限定されます。さらに、VIS (Visual Instruction Set) と実装に固有な ISA 拡張機能は含まれていません。

  • このオプションを使用すると、コンパイラは、V8plus ISA 上で良好なパフォーマンスが得られるようにコードを生成することができます。

  • 生成されるオブジェクトコードは SPARC-V8 + ELF32 形式であり、Solaris UltraSPARC 環境でのみ実行できます。つまり、V7 または V8 のプロセッサ上では実行できません。

    例: UltraSPARC チップアーキテクチャーに基づく任意のシステム

v8plusa

V8plusa 版の SPARC-V9 ISA 用にコンパイルします。定義上、V8plusa V8plus アーキテクチャー + VIS (Visual Instruction Set) version 1.0 + UltraSPARC 拡張機能を意味します。

  • UltraSPARC アーキテクチャー上で良好なパフォーマンスを得るためのコードを生成します。ただし、V8plus 仕様で定義されている 32 ビットサブセットに限定されます。

  • 生成されるオブジェクトコードは SPARC-V8 + ELF32 形式であり、Solaris UltraSPARC 環境でのみ実行できます。つまり、V7 または V8 のプロセッサ上では実行できません。

    例: UltraSPARC チップアーキテクチャーに基づく任意のシステム

v8plusb

UltraSPARC-III 拡張機能を持つ、V8plusb 版の SPARC-V8plus ISA 用にコンパイルします。 

UltraSPARC アーキテクチャー + VIS (Visual Instruction Set) version 2.0 + UltraSPARC-III 拡張機能用のオブジェクトコードを生成します。 

  • 生成されるオブジェクトコードは SPARC-V8 + ELF32 形式です。Solaris UltraSPARC-III 環境でのみ実行できます。

  • UltraSPARC-III アーキテクチャー上で良好なパフォーマンスを得るための最良のコードを使用します。

v9

-m64 -xarch=sparc に相当します。64 ビットメモリーモデルを得るために -xarch=v9 を使用する古いメイクファイルとスクリプトでは、-m64 だけを使用すれば十分です。

v9a

-m64 -xarch=sparcvis に相当し、以前のリリースとの互換性のために用意されています。

v9b

-m64 -xarch=sparcvis2 に相当し、以前のリリースとの互換性のために用意されています。