インテル® コンパイラの概要

製品紹介
インテル® プラットフォームとインテル® テクノロジに対応したインテル® ソフトウェア開発製品
インテル® コンパイラの概要
概要
インテル® コンパイラは、ソフトウェアの高速
化を支援します。開発者が一般的に使用する
ツールと互換性のあるインテル® コンパイラ
は、これらの一般的な開発環境に統合して使
用することができ、他の一般的なコンパイラ
とソースおよびバイナリレベルでの互換性を
提供します。すべてのコンパイラのライセン
スには、インテル ® アーキテクチャに関する
アップデート、テクニカル・サポートと専門
情報を提供する、インテル® プレミア・サポー
トが含まれます。
®
インテル コンパイラの
5 つのパッケージ:
• Windows* 版インテル ® C++ コンパイラ
(Microsoft* eMbedded Visual C++* 版
インテル® C++ コンパイラを含む)
• Linux* 版インテル® C++ コンパイラ
• Windows 版インテル® Visual Fortran コンパ
イラ・スタンダード・エディション
• Linux* 版インテル® Fortran コンパイラ
ニーズに応じた
アプリケーションの最適化
• Windows* および Linux* に対応
• インテル® パーソナル・インターネット・クライアン
ト・アーキテクチャ(インテル® PCA)プロセッサ、
インテル® IA-32 プロセッサおよびインテル® Itanium®
2 プロセッサを使用するシステム向けに最適化
• 高度な最適化機能により、アプリケーションの卓越
したパフォーマンスを提供
• 一般的に使用される開発ツールとの互換性を提供
• Microsoft* Visual C++* .NET とのバイナリレベルで
の互換性を提供(Windows 版 C++ コンパイラ)
• GCC 3.2 とのバイナリレベルでの互換性を提供
(Linux 版 C++ コンパイラ)
• Compaq Visual Fortran* とのソースレベルでの互
換性を提供(インテル® Fortran コンパイラ)
• イ ン テ ル ® プ レ ミ ア ・ サ ポ ー ト に よ り 、最新の
コンパイラ・リリース情報をタイムリーに入手
• 製 品 版 と 同 等 の 機 能 が 利 用 可 能 な ト ラ イ ア ル・
バージョンを提供
• Microsoft Windows* CE .NET Platform Builder
版インテル® C++ コンパイラ(OEM およ
びシステム・インテグレータ向け)
利点
• パフォーマンス — 高度な最適化機能により、
インテル ® パーソナル・インターネット・
クライアント・アーキテクチャ(インテル®
PCA)プロセッサ、インテル ® Pentium ® 4
プロセッサ、インテル® Xeon™ プロセッサ、
インテル® Centrino™ モバイル・テクノロジ§
を構成するインテル® Pentium® M プロセッ
サおよびインテル® Itanium® 2 プロセッサを
含む、最新のインテル® プロセッサ上で動作
するアプリケーションで卓越したパフォー
マンスを実現します。
OpenMP* 2.0 規格への対応、自動ベクトル
化および自動並列化機能の搭載により、
マルチスレッド・アプリケーションの開発
と最適化もサポートしています。
• 互換性 — Windows* 版インテル® C++ コンパイラは、ソースコードとオブジェクト・コードの両方につい
て Microsoft* Visual C++* 6.0 との互換性を備えているほか、Microsoft Visual C++ .NET に関してもソース
およびオブジェクトのネイティブ・コードレベルで極めて高い互換性を確保しています。インテル® C++/
Fortran コンパイラは Microsoft* Visual Studio* 環境にプラグインされるので、過去の開発環境への投資を
活用できます。Microsoft eMbedded Visual C++ 版インテル® コンパイラ(Windows 版インテル® C++ コン
パイラに同梱)は、Microsoft eMbedded Visual C++ 開発環境にプラグインされます。インテル® C++ コン
パイラは、ANSI* C/C++ 規格および ISO* C/C++ 規格に準拠しています。Linux* 版インテル® C++ コンパ
イラは、GNU C 3.2 とソースおよびオブジェクト・コードの互換性があります。また C++ ABI をサポー
トしています。
• サポート — インテル® ソフトウェア開発製品は、全製品がインテル® プレミア・サポートの対象になり
ます。オンラインでユーザ登録をするだけで、専門家による技術サポートや製品アップデート、サンプ
ルコード、各種技術ドキュメントなどを入手できます。製品をインストールした後にユーザ登録を行う
と、サポートならびに製品アップデートに関する情報をご利用いただけます。
インテル® コンパイラ
機能
プロシージャ間の最適化(IPO)
®
すべてのインテル コンパイラには、最高のアプリケーション・パ
フォーマンスを実現する、共通の最適化機能が搭載されています。こ
れらの機能には、IA-32 プロセッサのストリーミング SIMD 拡張命令
2(SSE2)、インテル® Itanium® 2 プロセッサのソフトウェアによるパ
イプライン化、および Intel XScale® マイクロアーキテクチャのサポー
トが含まれます。OpenMP* 2.0 規格への対応、自動ベクトル化および
自動並列化機能の搭載により、マルチスレッド・アプリケーションの
開発と最適化もサポートしています。
卓越した浮動小数点命令のスループット
インテル® C++ コンパイラの 32 ビット機能では、スタックを利用して
浮動小数点命令を効率的に実行します。計算結果を任意のスタック・
レジスタに格納できるようにすることで、命令の処理をオーバーラップ
させ、アプリケーションのパフォーマンスを向上させます。インテル®
Itanium® 2 プロセッサには直接アドレシング可能な浮動小数点レジスタ
があり、これを利用することで浮動小数点ループをパイプライン化し、
従来のアーキテクチャよりもロードとストアの回数を減らせるように
なっています。これにより、アプリケーションの実行速度が大幅に向
上します。一方、インテル® PCA プロセッサ用コンパイラは、浮動小
数点計算(単精度および倍精度)を利用するアプリケーションの開発
とマイグレーションを可能にする、高度に最適化された浮動小数点
エミュレーション・ライブラリを提供します。
IPO は、関数呼び出しを実際の関数コードに置換するインライン化に
より、より高速なコードを自動的に生成します。この機能はすべての
インテル® コンパイラに搭載されており、ループ内で呼び出しを行う
プログラムなど、小・中規模の関数を大量かつ頻繁に使用するプログ
ラムにおいてパフォーマンスを大幅に向上させることができます。
プロファイルに基づく最適化(PGO)
コンパイル時に PGO を行うことによって、(1)プロセッサのマイク
ロアーキテクチャの性能が十分に引き出され、(2)命令ページング/
キャッシュ・メモリの使用効率が高まり、
(3)分岐予測度が向上する、
という効果が得られます。これにより、コードのレイアウトが最適
化されると共にコードサイズも縮小し、分岐予測ミスが少なくなる
ため、命令キャッシュのスラッシングが減り、アプリケーションのパ
フォーマンスが向上します。注: PGO は インテル® C++ コンパイラ
Microsoft* eMbedded Visual C++* 版では利用できません。
データ・プリフェッチ機能
データ・プリフェッチ機能は、IA-32 プロセッサおよびインテル ®
Itanium® 2 プロセッサでメモリアクセスのレイテンシを向上する効果
的なテクニックです。データ・プリフェッチ機能は、一部のデータ
参照に対するプリフェッチ命令をプログラムの特定の場所に挿入し、
参照先のデータアイテムを実際に使用する前にプロセッサに近い場
所(キャッシュ・メモリ)に格納します。これにより、計算処理を多
用するアプリケーションのパフォーマンスが大幅に向上します。次の
ような利点があります:
• データ・プリフェッチを自動的に行える。
• 他の最適化機能(ソフトウェアのパイプライン化など)と併用
できる。
• コンパイラで生成されたプリフェッチ機能を使うため、コード
の移植性が損なわれない。プロセッサ固有の命令を書く場合も、
プリフェッチに関しては開発者の手を煩わせることがない。
IA-32 プロセッサでは、コンパイラは、アプリケーションがインテル®
Pentium® 4 プロセッサで動作しているか、またはそれ以前のインテル®
Pentium® プロセッサで動作しているかどうかを自動的に検出する「プ
ロセッサ・ディスパッチ」機能を利用することができます。インテル®
Pentium® 4 プロセッサは、一般的により高いパフォーマンスを提供する
ハードウェアによるデータ・プリフェッチ機能を搭載していますが、
この場合でも、アプリケーション開発者は「プロセッサ・ディスパッ
チ」を利用することができます。
IA-32 プロセッサ用およびインテル® Itanium® 2 プロセッサ用インテル®
コンパイラ 8.0 では、インテルのコード・カバレッジ・ツールと
インテルのテスト・プライオリタイゼーション・ツールの 2 つの新し
いツールが追加されました。コード・カバレッジ・ツールは、特定
のワークロードを実行した際、アプリケーション・コード内のどの部
分が実際に実行されたかを分かりやすく表示します。ワークロード
によってアプリケーションがどの程度テストされるのかがわかった
ら、テスト・プライオリタイゼーション・ツールを使用して最も効果
的なテスト手順を選択します。
マルチスレッド・アプリケーションのサポート
(OpenMP、自動並列化)
OpenMP* は移植性に優れたマルチスレッド・アプリケーション開発
のための業界標準であり、細粒度(ループレベル)および粗粒度(関
数レベル)のマルチスレッド化が効率的に行えます。IA-32 プロセッ
サ用およびインテル® Itanium® 2 プロセッサ用インテル® C++ コンパイ
ラは OpenMP API バージョン 2.0 に対応しており、共有メモリ型並列
プログラミング・モデルに則してコード変換を行います。
インテル® コンパイラ
IA-32 プロセッサ用インテル® コンパイラ
とインテル® ワイヤレス MMX® テクノロジ
IA-32 プロセッサ用コンパイラは、インテル® Pentium® 4 プロセッサ
で導入された Intel NetBurst® マイクロアーキテクチャの主要機能である
ストリーミング SIMD 拡張命令 2(SSE2)にも完全に対応しています。
SSE2 は、アプリケーションにおけるマルチメディア/ グラフィックス
関連の部分を高速化するだけでなく、浮動小数点や倍精度の計算処
理にも優れたパフォーマンスを発揮します。SSE2 の新しい命令は、
インライン・アセンブラ、コンパイラ組み込み関数、クラス・ライブ
ラリ、ベクトライザ、インテル® パフォーマンス・ライブラリ集など、
すべてにわたってサポートされています。IA-32 プロセッサ用コンパ
イラは、HT テクノロジ インテル® Pentium® 4 プロセッサ(SSE3 対
応)の新しいストリーミング SIMD 拡張命令 3(SSE3)にも対応し
ています。IA-32 プロセッサ用コンパイラだけではなく、インテル®
PCA プロセッサ用インテル® C++ コンパイラでも、インテル® MMX®
テクノロジなど従来のパフォーマンス強化機能も引き続きサポート
しています。アセンブラ、組み込み関数、ベクトル化オプション・ス
イッチの 3 段階でインテル® ワイヤレス MMX® テクノロジをサポー
トし、高度に最適化されたマルチメディア・アプリケーションの開発
を支援します。
自動ベクトル化
IA-32 プロセッサ用インテル® コンパイラには、コードを自動的に並
列化してプロセッサの能力を最大限に引き出すためのベクトル化機能
が用意されています。このベクトル化機能については、豊富な用例を
紹介したドキュメントも用意されており、アプリケーションの実行
速度向上のためのヒントが得られます。ベクトライザの新しい機能に
は、アライメント済みロードを生成するループ・ピーリング、フル・
キャッシュ・ラインのプリフェッチをマッチングするループ・アンロー
リングといった先進的かつダイナミックなデータ・アライメント手法
があります。
プロセッサ・ディスパッチ
IA-32 プロセッサ用インテル® コンパイラには、特定のインテル® プロ
セッサに最適化したアプリケーションをビルドするためのオプション
が用意されており、この機能を「プロセッサ・ディスパッチ」と呼ん
でいます。プロセッサ・ディスパッチ機能を利用することにより、種
類の異なるインテル® プロセッサに対して柔軟な最適化が図れます。
例えば、最新のインテル® Pentium® 4 プロセッサへの最適化を図りつ
つ、その他の IA-32 アーキテクチャのプロセッサでも動作する実行ファ
イルを作成することもできます。つまり、1つの実行ファイルで最新
のインテル ® プロセッサの機能をフルに活用すると同時に、従来の
インテル ® プロセッサ上でも高いパフォーマンスを発揮するアプリ
ケーションの開発が可能になります。
インテル® Itanium® 2 プロセッサ用
インテル® コンパイラ
インテル® コンパイラでは、インテル® Itanium® 2 プロセッサをサポー
トするいくつかの機能を提供しており、アプリケーションのパフォー
マンスを向上させることができます。プレディケーション、分岐予測、
ソフトウェアのパイプライン化、スペキュレーション、ハイパフォー
マンス浮動小数点の最適化などの機能が用意されています。
プレディケーション
従来のアーキテクチャでは、条件分岐時の実行は分岐命令でインプリ
メントしていました。インテル® Itanium® 2 アーキテクチャでは、
プレディケート修飾をつけた命令でインプリメントを行っており、
インテル® Itanium® 2 プロセッサ用インテル® コンパイラは、このプ
レディケーションに対応しています。パフォーマンスの最適化という
点から見た場合、プレディケーションが持つ最大の意義はプログラム・
シーケンスから分岐を完全に排除できる点にあります。このため、基
本ブロックのサイズが大きくなり、分岐予測ミスによるペナルティも
排除でき、アプリケーションのパフォーマンスが大きく向上します。
さらに、プレディケーションを行った後に分岐の数が少なくなると制
御フローが変化する確率も低くなり、ダイナミックな命令フェッチを
より効率的に行えるようになります。
強化された分岐予測
分岐予測とは、分岐命令後にコードがどちらの分岐方向に進む可能性
が高いかをプロセッサに判断させるためのメカニズムを指します。この
予測に基づき、プロセッサは最も可能性の高い分岐先の命令をフェッ
チして実行を開始します。分岐予測が外れると、予測した分岐方向の
命令の実行結果を破棄して、正しい分岐先の命令をフェッチ、実行
しなければならないため、命令実行に遅延が生じます。インテル ®
Itanium® 2 アーキテクチャでは、分岐に関する情報をインテル® コンパ
イラからプロセッサに対して伝達できるようになっており、分岐予測
ミスの頻度が少なくなっています。また、コンパイル済みのコードが
ランタイム情報を参照してプロセッサ・ハードウェアに対応できる
ようにもなっています。これら 2 つの機能とプレディケーションを
組み合わせることによって、(1)分岐予測ミスが少なくなり、アプ
リケーションの実行速度が向上する、
(2)分岐予測ミスによるペナル
ティの確率が少なくなる、(3)キャッシュ・ミスの確率が少なくな
る、といったパフォーマンス向上効果が得られます。すべての場合
においてアプリケーションが正しく実行されていることを確認する
ため、インテル® Itanium® 2 アーキテクチャ用インテル® コンパイラ
にはリカバリ・コード・プロセスが用意されており、必要に応じて実
行される仕組みになっています。
ソフトウェアのパイプライン化
インテル® Itanium® 2 プロセッサ用インテル® コンパイラは、ソフト
ウェアのパイプライン化をサポートして、ループの処理に必要なクロッ
クサイクル数を低減します。これは、本来オーバーラップ実行できな
いループの繰り返し(イタレーション)を複数のステージ(1 ステー
ジは複数の命令から成る)に分割することによって、オーバーラッ
プ実行するというものです。ソフトウェアのパイプライン化を行う
と、ループをアンロールすることなく複数のイタレーションを同時に
実行できるため、インテル® Itanium® 2 ベースのアプリケーションで
は 1 サイクルで 1 イタレーションのスループットが得られます。ルー
プの種類によってはソフトウェアのパイプライン化が効果を発揮し
ない場合もありますが、こうした例外を除き、コードの展開や分岐予
測ミスを減らし、パスの長さを短くするといった効果が大きく現れる
ため、パフォーマンスが大幅に向上します。
スペキュレーション
インテル® Itanium® 2 プロセッサ用インテル® コンパイラは、ある種の
命令(レイテンシの大きいロード命令など)をプログラムの実行順に
関係なく投機的に実行できるスペキュレーションに対応しており、大幅
なパフォーマンス向上が見込めます。すべての場合において投機実行
したコードが正しいかどうかを確かめるために、コンパイラは必要に
応じてリカバリコードを実行します。このため、たとえ投機実行した
コードが正しくなかった場合でも、リカバリコードの働きによって、
影響の及ぶ命令はすべて正しく実行されることが保証されます。
インテル® C++ コンパイラ
Windows* 版インテル® C++ コンパイラ
Windows* 版インテル® C++ コンパイラは、Microsoft* Visual Studio*
6.0 統合開発環境との互換性を備えているほか、Microsoft Visual Studio
.NET 環境にもプラグインとして統合利用できます。Microsoft* Visual
C++* 6.0 とは、ソースコードおよびオブジェクト・コードの互換
性があり、Visual C++ .NET とはネイティブ・ソース・コードおよ
びオブジェクト・コードの互換性があります。標準規格では、ANSI*
C/C++、ISO* C/C++、OpenMP* 2.0 C/C++(WorkQueue を除く)に
準拠しています。Windows 版インテル ® C++ コンパイラには、IA-32
プロセッサ用コンパイラ、インテル® Itanium® 2 プロセッサ用コンパ
イラおよび Windows* CE .NET を使用してインテル® PCA プロセッサ
上で動作するアプリケーションを作成するために使用するコンパイラ
インテル® コンパイラ
がそれぞれ含まれています。この 1 つの製品で、開発者は、携帯電
話や PDA のようなハンドヘルド機器からサーバベースのコンポーネ
ントまで、幅広いアプリケーションの開発に必要なすべてのコンパイ
ラ・テクノロジを手に入れることができます。
Microsoft eMbedded Visual C++ 版インテル® C++ コンパイラは、Intel
XScale® マイクロアーキテクチャを使用するインテル® PCA プロセッサ
用に最適化されたアプリケーションを作成します。Microsoft 固有の
組み込み関数に対応しているので、ハイレベルな抽象化を使用して
C++ レベルからハードウェア(レジスタやコプロセッサ)に直接アク
セスできるため、アセンブリ・コードにドロップダウンする必要があ
りません。
アプリケーション開発を支援するため、 Microsoft eMbedded Visual
C++ 版インテル® C++ コンパイラには、Windows 版インテル® C++
8.0 コンパイラに同梱されています。コンパイラは、eMbedded Visual
C++ 開発ツールのプラグインとして利用可能で、Windows* CE .NET を
使用するデバイス上で実行するアプリケーションの作成に使用します。
このパッケージには、IA-32 プロセッサ用コンパイラとインテル ®
Itanium® プロセッサ用コンパイラも同梱されています。Windows CE
.NET 用コンパイラは、Microsoft Windows CE .NET Platform Builder 版
インテル® C++ コンパイラにも同梱されています。このパッケージは、
OEM およびシステム・インテグレータ向けの包括的なパッケージで、
ハードウェア・システムのデバッグと最適化に役立つ各種のツールが
含まれています。
インテル® Fortran コンパイラ
Windows* 版インテル® Visual Fortran コンパイラ
Windows* 版インテル® Visual Fortran コンパイラは、Compaq Visual
Fortran*(CVF)のフロントエンド(Fortran 言語機能)とインテル ®
Fortran コンパイラのバックエンド(コード生成と最適化機能)を組み
合わせることによって、インテル® アーキテクチャ上で動作するアプ
リケーションの開発に新しい機会を提供します。250 以上のコマンドと
シノニムにより、Compaq Visual Fortran や旧バージョンのインテル®
Fortran コンパイラからの容易な移行を支援します。また、Visual Studio*
開発環境にプラグインとして統合可能です。コンパイラは、IA-32 プ
ロセッサおよびインテル® Itanium® 2プロセッサ上で高速に動作する
Fortran アプリケーションを作成するための高度な最適化機能を備え、
ISO 規格の Fortran 95 に完全準拠しています。
Linux* 版インテル® Fortran コンパイラ
Linux* 版インテル® Fortran コンパイラは、Emacs、name などの使い慣
れたツールを使用して Linux システム上で開発を行うことができます。
また、Fortran と C の言語が混在したアプリケーションにも対応し、
最新の ISO* 規格の Fortran 95 に完全準拠しています。OpenMP* 2.0
規格への対応、自動ベクトル化および自動並列化機能の搭載により、
マルチスレッド・アプリケーションの開発と最適化もサポートしてい
ます。製品には、インテル® Pentium® プロセッサ、インテル® Itanium®
2 プロセッサ、IA-32 プロセッサおよびインテル® Pentium® 4 プロセッ
サ(SSE3 対応)向けのコンパイラが含まれています。
Linux* 版インテル® C++ コンパイラ
Linux* 版インテル® C++ コンパイラは、GNU C/C++(GCC)3.2 およ
び C++ ABI と互換性があるので、開発者は Emacs、make などの使
い慣れたツールを使用することができます。OpenMP* 2.0 規格への対
応および自動並列化機能の搭載により、マルチスレッド・アプリケー
ションの開発と最適化もサポートします。Linux 版インテル® C++ コ
ンパイラは、アプリケーションのパフォーマンスを向上させる浮動小
数点命令を利用することができます。プロシージャ間の最適化を行う
と、ループ内で呼び出しを行うプログラムなど、小・中規模の関数
を大量かつ頻繁に使用するプログラムにおいてパフォーマンスが大
幅に向上します。
動作環境
ハードウェアおよびソフトウェア
必要なハードウェア構成およびソフトウェア環境については、
次の Web サイトを参照してください:
www.intel.co.jp/jp/developer/software/products/compilers/
§ ネットワークにワイヤレス接続したり、いくつかの機能を使うには、別途ソフトウェア、サービス、ハードウェアなどの購入またはダウンロードを必要とすることがあります。公衆無線
LAN のアクセスポイント数には限りがあり、サービスはプロバイダによって異なります。システムの性能は MobileMark* 2002 で測定しています。システムの性能、バッテリ持続時間、
ワイヤレス性能と機能は、ご利用のハードウェアやソフトウェアによって異なります。詳細情報は http://www.intel.co.jp/jp/products/centrino/more_info/ をご覧ください。
インテルは、アプリケーションのパフォーマンス、機能、効率を強化するためのツールとサポートを提供しています。
主流の Windows* および Linux* 開発環境に対応するインテル ® ソフトウェア製品を使用すると、インテル ® プロセッサの最新機能を迅速かつ最大限に
利用することができます。インテル ® パフォーマンス・ライブラリ、インテル ® コンパイラ(Windows 版と Linux 版の C++ および Fortran)、インテル ®
VTune™ アナライザ、インテル ® スレッド化ツール、インテル ® クラスタ・ツールといったインテル ® ソフトウェア開発製品は、開発サイクルの全般で
利用できるように設計されています。
インテル ® プレミア・サポートの Web サイトでは、すべてのインテル ® ソフトウェア製品に関する技術サポート、製品のアップデート、および関連ダウン
ロードを提供します。最新の製品情報については、次の Web サイトを参照してください : www.intel.co.jp/jp/developer/software/products/
Intel、インテル、Intel ロゴ、Intel NetBurst、Intel XScale、Centrino、Itanium、MMX、Pentium、Celeron、VTune、および Xeon は、
アメリカ合衆国およびその他の国における Intel Corporation またはその子会社の商標または登録商標です。
* その他の名称およびブランド名は、各社の商標および登録商標です。
© 2004, Intel Corporation. All rights reserved. 0104/JXP/ITF/PDF
253130-004J