コンパイラにハードウェアシステムを正確に指定すると、プログラムによってはパフォーマンスが向上します。プログラムのパフォーマンスが重要な場合は、対象となるハードウェアを正確に指定してください。これは特に、新しい SPARC プロセッサ上でプログラムを実行する場合に当てはまります。しかし、ほとんどのプログラムおよび廃止の SPARC システムではパフォーマンスの向上はわずかであるため、汎用的な指定方法で十分です。
t には次の値のいずれかを指定します。native、generic、native64、 generic64、system-name。
-xtarget に指定する値は、-xarch、-xchip、-xcache の各オプションの値に展開されます。実行中のシステムで -xtarget=native の展開を調べるには、-xdryrun コマンドを使用します。
たとえば、-xtarget=ultraT2 は次のものと同等です: -xarch=sparcvis2 -xchip=ultraT2 -xcache=8/16/4:4096/64/16
特定のホストプラットフォームで -xtarget を展開した場合、そのプラットフォームでコンパイルすると -xtarget=native と同じ -xarch、-xchip、または -xcache 設定にならない場合があります。
この節では、—xtarget 値をプラットフォームごとに説明します。次の表は、すべてのプラットフォーム向けの —xtarget の値を一覧表示します。
表 A–47 すべてのプラットフォームでの -xtarget の値
値 |
意味 |
---|---|
native |
ホストシステムで最高のパフォーマンスが得られます。コンパイラは、ホストシステム用に最適化されたコードを生成します。コンパイラは自身が動作しているマシンで利用できるアーキテクチャー、チップ、キャッシュ特性を判定します。 |
native64 |
ホストシステムで 64 ビットのオブジェクトバイナリの最高のパフォーマンスが得られます。コンパイラは、ホストシステム用に最適化された 64 ビットのオブジェクトバイナリを生成します。コンパイラが動作しているマシンで使用できる 64 ビットのアーキテクチャー、チップ、キャッシュ特性を判定します。 |
generic |
これはデフォルト値です。汎用アーキテクチャー、チップ、およびキャッシュで最高のパフォーマンスが得られます。 |
generic64 |
大多数の 64 ビットのプラットフォームのアーキテクチャーで 64 ビットのオブジェクトバイナリの最適なパフォーマンスを得るためのパラメータを設定します。 |
システム名 |
指定するシステムで最高のパフォーマンスが得られます。 対象となる実際のシステムを表すシステム名を、次のリストから選択してください。 |
SPARC または UltraSPARC V9 での 64 ビット Solaris ソフトウェアのコンパイルは、-m64 オプションで指定します。-xtarget を指定し、native64 または generic64 以外のフラグを付ける場合は、-m64 オプションも次のように指定する必要があります。-xtarget=ultra ... -m64。この指定を行わない場合は、コンパイラは 32 ビットメモリーモデルを使用します。
表 A–48 SPARC アーキテクチャーでの -xtarget の展開
-xtarget= |
-xarch |
-xchip |
-xcache |
---|---|---|---|
generic |
generic |
generic |
generic |
ultra |
v8plusa |
ultra |
16/32/1:512/64/1 |
ultra1/140 |
v8plusa |
ultra |
16/32/1:512/64/1 |
ultra1/170 |
v8plusa |
ultra |
16/32/1:512/64/1 |
ultra1/200 |
v8plusa |
ultra |
16/32/1:512/64/1 |
ultra2 |
v8plusa |
ultra2 |
16/32/1:512/64/1 |
ultra2/1170 |
v8plusa |
ultra |
16/32/1:512/64/1 |
ultra2/1200 |
v8plusa |
ultra |
16/32/1:1024/64/1 |
ultra2/1300 |
v8plusa |
ultra2 |
16/32/1:2048/64/1 |
ultra2/2170 |
v8plusa |
ultra |
16/32/1:512/64/1 |
ultra2/2200 |
v8plusa |
ultra |
16/32/1:1024/64/1 |
ultra2/2300 |
v8plusa |
ultra2 |
16/32/1:2048/64/1 |
ultra2e |
v8plusa |
ultra2e |
16/32/1:256/64/4 |
ultra2i |
v8plusa |
ultra2i |
16/32/1:512/64/1 |
ultra3 |
sparcvis2 |
ultra3 |
64/32/4:8192/512/1 |
ultra3cu |
sparcvis2 |
ultra3cu |
64/32/4:8192/512/2 |
ultra3i |
sparcvis2 |
ultra3i |
64/32/4:1024/64/4 |
ultra4 |
sparcvis2 |
ultra4 |
64/32/4:8192/128/2 |
ultra4plus |
sparcvis2 |
ultra4plus |
64/32/4:2048/64/4:32768/64/4 |
ultraT1 |
sparcvis2 |
ultraT1 |
8/16/4/4:3072/64/12/32 |
ultraT2 |
sparc |
ultraT2 |
8/16/4:4096/64/16 |
ultraT2plus |
sparcvis2 |
ultraT2plus |
8/16/4:4096/64/16 |
ultraT3 |
sparcvis3 |
ultraT3 |
8/16/4:6144/64/24 |
sparc64vi |
sparcfmaf |
sparc64vi |
128/64/2:5120/64/10 |
sparc64vii |
sparcima |
sparc64vii |
64/64/2:5120/256/10 |
UltraSPARC IVplus、UltraSPARC T1、および UltraSPARC T2 チップのキャッシュプロパティーについての詳細は、「A.2.113 -xcache=c」を参照してください。 |
64 ビット x86 プラットフォームでの 64 ビット Solaris ソフトウェアのコンパイルは、-m64 オプションで指定します。-xtarget を指定し、native64 または generic64 以外のフラグを付ける場合は、-m64 オプションも次のように指定する必要があります。-xtarget=opteron ... -m64。この指定を行わない場合は、コンパイラは 32 ビットメモリーモデルを使用します。
表 A–49 x86 プラットフォームでの -xtarget の値
-xtarget= |
-xarch |
-xchip |
-xcache |
---|---|---|---|
generic |
generic |
generic |
generic |
opteron |
sse2 |
opteron |
64/64/2:1024/64/16 |
386 |
pentium |
generic |
|
pentium_pro |
pentium_pro |
pentium_pro |
generic |
pentium3 |
sse |
pentium3 |
16/32/4:256/32/4 |
pentium4 |
sse2 |
pentium4 |
8/64/4:256/128/8 |
nehalem |
sse4_2 |
nehalem |
32/64/8:256/64/8: 8192/64/16 |
penryn |
sse4_1 |
penryn |
2/64/8:4096/64/16 |
woodcrest |
ssse3 |
core2 |
32/64/8:4096/64/16 |
barcelona |
amdsse4a |
amdfam10 |
64/64/2:512/64/16 |
SPARC および x86 で、-xtarget を指定しないと、-xtarget=generic が想定されます。
-xtarget オプションは、市販で購入したプラットフォーム上で使用する -xarch、-xchip、-xcache の組み合わせを素早く、簡単に指定するためのマクロです。-xtarget の意味は = のあとに指定した値を展開したものにあります。
-xtarget=sun4/15 は -xarch=v8a -xchip=micro -xcache=2/16/1 を意味します。
-xarch=v9|v9a|v9b オプションで指定する、SPARC V9 アーキテクチャーのコンパイル。-xtarget=ultra や ultra2 の設定は、必要でないか、十分ではありません。-xtarget を指定する場合、-xarch=v9|v9a|v9b オプションは -xtarget よりもあとに表示される必要があります。次に例を示します。
-xarch=v9 -xtarget=ultra |
前述の指定は次のように展開され、-xarch の値が v8 に戻ります。
-xarch=v9 -xarch=v8 -xchip=ultra -xcache=16/32/1:512/64/1 |
正しくは、次のように、-xarch を -xtarget よりもあとに指定します。次に例を示します。
–xtarget=ultra -xarch=v9 |
別々の手順でコンパイルしてリンクする場合は、コンパイル手順とリンク手順で同じ -xtarget の設定値を使用する必要があります。