インテル® C++ コンパイラー Standard Edition for Embedded Systems with Bi-Endian Technology

同カテゴリーの次の記事

Linux* 上で CPU と GPU バッファーを共有する

この記事は、インテルの The Parallel Universe Magazine 24 号に収録されている、インテル® C++ コンパイラー Standard Edition for Embedded Systems with Bi-Endian Technology に関する章を抜粋翻訳したものです。

インテル® C++ コンパイラー Standard Edition for Embedded Systems with Bi-Endian Technology は、ビッグエンディアン・ソフトウェアの依存性によりレガシー・プラットフォームを使い続けている開発者を支援するために開発されたツールで、レガシー・アプリケーションをビッグエンディアン・アーキテクチャーからリトルエンディアン・アーキテクチャーへ簡単に移行することが可能です。アプリケーションのコードベース全体を書き直すのではなく、最小限のコード変更でコードを再利用し、ビッグエンディアン・アーキテクチャーとリトルエンディアン・アーキテクチャーで共通のコードベースを利用して、スムーズに移行することができます。

インテル® C++ コンパイラー Standard Edition for Embedded Systems with Bi-Endian Technology は、インテル® C++ コンパイラーの長所を活用して、最高のアプリケーション・パフォーマンスを提供します。

この記事では、レガシー・アプリケーションをリトルエンディアン・アーキテクチャーのシステムへ移行するときに注意すべき問題を含む、主な機能の概要を説明します。

はじめに

1990 年代前半から中頃は、ビッグエンディアンの RISC アーキテクチャー (SPARC*、MIPS*、PowerPC* など) が組込み市場を支配しており、コンピューター・ネットワーキング、テレコミュニケーション、セットトップ・ボックス、DSL、ケーブルモデムなどで広く使用されていました。実際、ほとんどのアプリケーションはこれらのシステム向けに開発されていました。しかし、より高速でスケーラブルな新世代の x86 アーキテクチャー・プロセッサーがリリースされたことで、多くの開発者は、これらのアプリケーションをリトルエンディアンの x86 アーキテクチャー・システムに移植する最適な方法のジレンマに直面することになりました。

アプリケーションは標準化された高水準言語 (C/C++) で開発されていますが、従来のコンパイラーは単一エンディアンのアーキテクチャー向けにのみコンパイルすることができます。ソースコードにエンディアン・バイト順の依存性がある場合、ターゲット・アーキテクチャーで実行したときに重大なランタイム問題が発生するため、あるエンディアンのアーキテクチャーから別のエンディアンのアーキテクチャーへの移植は問題となります。これらの依存性に対応するには、開発者は発見が困難なバイト順依存コードを特定して、エンディアン中立コードまたはターゲット・アーキテクチャーのエンディアンに対応するコードに手動で変換する必要があります。

パフォーマンスのほうが市場投入までの時間 (TTM) よりも優先される場合、手動変換による移行は、ミスを引き起こしやすくコストを上昇させます。アプリケーションがすでにエンディアン中立の場合は、エンディアンがあいまいな EEMBC* ベンチマーク・サンプルのようなアプリケーションの再コンパイルのみ問題になります。

エンディアンの依存性を含むアプリケーションの場合は、インテル® C++ コンパイラー Standard Edition for Embedded Systems with Bi-Endian Technology を使用すると、優れたパフォーマンスを保ちながら、正しいコードを生成することができます。移植では、関数プロトタイプや変数宣言などのデータ・エンディアンの種類を調整し、手動による移植プロセスには、ビットフィールド・アクセスやシフト操作などを扱う煩わしい作業が含まれます。

通常のインテル® C++ コンパイラーと異なり、インテル® C++ コンパイラー Standard Edition for Embedded Systems with Bi-Endian Technology は、コンパイラー使用モデルの一部である言語拡張 (後述) により依存データのエンディアン・バイト順を指定することで、開発者がソースコード・ベースのバイト順でアプリケーションをコンパイルできます。コンパイラーは、適切なランタイム実行のため、必要に応じてバイト順依存コードにバイトスワップ命令を挿入して、メモリーにあるネイティブ・エンディアン・アーキテクチャーのデータがターゲット・エンディアン・アーキテクチャーのバイト順に変換されるようにします。

インテル® C++ コンパイラー Standard Edition for Embedded Systems with Bi-Endian Technology は、開発者がビッグエンディアン・アーキテクチャーからリトルエンディアン・アーキテクチャーへアプリケーションを移行できるように特別に設計された、Linux* をホストとし、Linux* をターゲットとする、コマンドライン・ベースのスタンドアロン・コンパイラーです。

続きはこちら (PDF) からご覧いただけます。

関連記事

  • Windows* 8 開発向け Ultrabook™ 機能の互換性Windows* 8 開発向け Ultrabook™ 機能の互換性 この記事は、インテル® デベロッパー・ゾーンに掲載されている「Ultrabook Feature Compatibility Matrix for Windows 8 Development」の日本語参考訳です。 概要 この記事では、Windows* 8 デスクトップ・アプリケーションおよび Windows* […]
  • メモリーアクセスのパフォーマンス・ボトルネックの検出メモリーアクセスのパフォーマンス・ボトルネックの検出 この記事は、インテルの The Parallel Universe Magazine 24 […]
  • インテル® Xeon Phi™ プロセッサー向けのコードの現代化インテル® Xeon Phi™ プロセッサー向けのコードの現代化 この記事は、インテルの The Parallel Universe Magazine 26 号に収録されている、新しいインテル® Parallel Studio XE 2017 の機能を利用したインテル® Xeon Phi™ […]
  • Parallel Universe マガジンParallel Universe マガジン Parallel Universe へようこそ。 米国インテル社が四半期に一度オンラインで公開しているオンラインマガジンです。インテルの技術者によるテクノロジーの解説や、最新ツールの紹介など、並列化に関する記事を毎号掲載しています。第1号からのバックナンバーを PDF 形式で用意しました、ぜひご覧ください。 12 […]
  • インテル Parallel Universe 26 号日本語版の公開インテル Parallel Universe 26 号日本語版の公開 インテル Parallel Universe マガジンの最新号が公開されました。この号では、インテル® Xeon Phi™ プロセッサー向けのコードの現代化について説明します。また、インテル® Parallel Studio XE 2017 […]