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

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

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

表 B–12 -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 以前のマシンには移植できません。これらのプログラムは、v9 または v9a でそれぞれコンパイルし直すと、SPARC V9 と UltraSPARC の全機能を十分利用できるようになります。v8plusv8plusa の制限については、ホワイトペーパー『 The V8+ Technical Specification』(Part No.: 802-7447-10。購入先から入手可能) で説明されています。

いずれの場合でも、初期のアーキテクチャーでは、生成された実行可能ファイルの実行速度がかなり遅くなる可能性があります。また、これらの命令セットアーキテクチャーの多くで 4 倍精度 (REAL*16 および long double) 浮動小数点命令を使用できますが、コンパイラは、それらの命令を生成したコードで使用しません。

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

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

フラグ 

意味 

generic

ほとんどのプロセッサに共通の命令セットを使用します。これはデフォルト値です。 

generic64

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

このオプションは -m64 -xarch=generic と同等で、以前のリリースとの互換性のために提供されています。64 ビットのコンパイルを指定するには、 -xarch=generic64 の代わりに -m64 を使用します。

native

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

native64

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

sparc

SPARC-V9 ISA 用にコンパイルします。ただし、VIS (Visual Instruction Set) と実装に固有の ISA 拡張機能は含まれていません。V9 ISA 上で良好なパフォーマンスを得るためのコードを生成します。 

sparcvis

VIS (Visual Instruction Set) 版の SPARC-V9 用にコンパイルします。VIS のバージョンは 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 拡張機能からの命令を使用できるようにします。 

コンパイラが乗加算命令を自動的に使用する機会を得られるようにするには fma=fused と一部の最適化レベルと一緒に -xarch=sparcfmaf を使用する必要があります。

v7

SPARC-V7 ISA 用にコンパイルします。(廃止)

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

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

例: SPARCstation 1、SPARCstation 2 

v8a

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

V8a 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 と同等で、以前のリリースとの互換性のために提供されています。