Login

ARMコンパイラ

新しくなったARMコンパイラ5

ARMのコード生成ツールチェインの最新バージョンがARM DS-5™ Professional Editionに含まれました。ARMコンパイラ5は、ARM RVDS 4.1に取って代わり、広範囲のARMプロセッサに対して正確およびセキュアで、最適化されたコードをサポートしています。 

 

ARM RVDS™ 4.1のARM®コンパイラは、ARMプロセッサと共に開発された唯一の商用コンパイラで、特にARMアーキテクチャのサポートに適した設計になっています。20年にわたる開発の成果であり、ARM、Thumb、Thumb-2、VFP、およびNEON命令セットをターゲットとしたアプリケーションをビルドするための業界標準のCおよびC++コンパイラとして認識されています。

  • ARMプロセッサは、ARMコンパイラで生成されたコードを最適に実行できるように設計されています。
  • ARMコンパイラは、すべてのARMプロセッサの新しいプロセッサ機能を利用できます。
  • プロファイル駆動コンパイルは、実行時情報に基づいてコードを自動的に最適化します。
  • ARMコンパイラは、Symbian OSおよびARM Linux アプリケーションとライブラリのビルドをサポートしています。

RVDS 4.1コンパイラはRVDS 4.0と比較して、ベスト コード サイズを最大5%削減し、ベスト パフォーマンスを10~15%向上させています。

ARMコンパイラのほかに、最先端のNEONベクトル化コンパイラがRVDS Professionalに含まれており、ARM NEON SIMDコード シーケンスを標準CおよびC++コードから自動生成することができます。NEONベクトル化コンパイラは、クリティカルなマルチメディアの要点を4倍にスピードアップして、その結果アプリケーション全体のパフォーマンスを2倍に向上させることができます。

ベクトル化の図

コスト制限が厳しいデバイスの開発

ARMプロセッサ ベースのアプリケーションのコード密度をさらに向上させるために、ARMコンパイラにはオプションのmicrolib Cライブラリ(ISO標準のCランタイム ライブラリのサブセット)が用意されており、これはマイクロコントローラ アプリケーション用にサイズが最小化されています。microlib Cライブラリは、ランタイム ライブラリでのコード サイズで、92%の縮小を実現しています。

Cortex-Mクラスのプロセッサとmicrolib Cライブラリを組み合わせると、割り込みサービス ルーチンでさえアセンブリ言語に戻す必要がなくなり、完全なCベースの開発環境にすることができます。これにより、ARM アーキテクチャ固有の知識が不要になります。 

Dhrystoneコードサイズ

microlib Cライブラリによるメモリの節約量はアプリケーションにもよりますが、"hello world"であれば97%の削減、Dhrystoneのようなより複雑なアプリケーションであれば50%の削減になります。

Linuxアプリケーション開発のリスクの削減

ARMコンパイラ チームによって作成された、ARMアーキテクチャ用のABIも、ARMのGNUコンパイラに実装されています。これによって、複数の開発環境間で共有できるライブラリの作成および使用が可能になります。

GNUコンパイラとARMコンパイラとの間に互換性があるということは、LinuxアプリケーションをARMコンパイラでビルドできることを意味しています。ARMコンパイラは、開発チームに高度なサポートと、高品質の商用ツールキットに期待されるパフォーマンス、安定性、コード サイズなどの利点を提供します。

正確なコード生成

現在では、データの浮動小数点表現を使用して、数学的モデリング ソフトウェアから多くのアルゴリズムが自動的に生成されます。そのため、IEEEビット表現と浮動小数点表現の精度が、生成されたコードの正確な演算のために重要になっています。ARMコンパイラによって選択されるデフォルトのライブラリは、C++例外処理およびIEEE 754浮動小数点のサポートを含む、C/C++機能の完全な補完物を提供しています。コンパイラはオプションで、ソフトウェア浮動小数点か、ARMハードウェア浮動小数点ユニットのいずれかを使用するコードを生成できます。使用される方法にかかわらず、コンパイラはIEEE 754完全準拠コードを生成します。つまり、アプリケーションはターゲット プロセッサにかかわらず、正確に同じデータを生成することになります。そのため、別のデバイスへの移植を迅速に行うことが可能です。

DSPスタイル ソリューションへの対応

組み込み関数が、一般コード シーケンスや高レベルの言語にはうまくマップできない命令をサポートしています。

  • ETSI組み込み関数は、多くのアルゴリズム例で使用されている、電気通信の基本機能に対応しています。
  • TI C55組み込み関数は、TI固有の拡張機能を活用するように記述されたアルゴリズムをサポートしています。
  • Cortex-M4組み込み関数は、オンボードDSPをターゲットにしています。
  • その他の組み込み関数は、Cでは容易にアクセスできないすべてのARMハードウェア命令にアクセスできるようにし、アセンブリ言語でコードを記述する必要性を削減します。

可能であれば、組み込み関数は以前のプロセッサ上でエミュレートされます。

組み込み関数の最適化はターゲット プロセッサに依存

 

 
Maximise