Login

ARM The Architecture For The Digital World  

命令セット アーキテクチャ

ARMプロセッサのアーキテクチャは、32ビットARMと16ビットThumb®の命令セット アーキテクチャ(ISA)に加え、Javaアクセラレーション(Jazelle®)、セキュリティ(TrustZone®)、SIMDNEON™の各テクノロジに対応するアーキテクチャ拡張機能を備えています。

ARMアーキテクチャは、幅広い性能範囲の製品への実装に対応し、多様な市場区分の主要なアーキテクチャとして揺るぎない地位を確立しています。ARMプロセッサの持つシンプルなアーキテクチャが、非常に小さな実装サイズを可能にし、それによってデバイスの消費電力を極めて低く保つことが可能となっています。実装サイズ、パフォーマンス、低消費電力は、ARMアーキテクチャの主要な特性です。

ARMアーキテクチャは、縮小命令セット コンピュータ(RISC、Reduced Instruction Set Computer)型のアーキテクチャであり、代表的なRISCアーキテクチャの機能が組み込まれています。その例を次に示します。

  • 大きく均一なレジスタ ファイル
  • ロード/ストア アーキテクチャ。データ処理はレジスタの内容に対してのみ実行され、メモリの内容が直接処理されることはありません。
  • 単純なアドレシング モード。ロード/ストアのアドレスはすべて、レジスタの内容と命令のフィールドから計算されます。

加えて、ARMアーキテクチャには、次のような特徴があります。

  • シフトと算術演算または論理演算を組み合わせた命令
  • 自動インクリメントと自動デクリメント アドレシング モードによってプログラム ループを最適化
  • 複数の命令をロード/ストアすることによってデータ スループットを最適化
  • ほとんどの命令を条件付きで実行できるため、実行スループットを最大限に引き出すことが可能

ARMプロセッサは、基本的なRISCアーキテクチャに上記のような拡張を加えることで、高性能、小さなコード サイズ、低消費電力、小さなシリコン面積をバランスよく実現しています。

ARM命令アーキテクチャでは、最先端のアプリケーション開発者の増大する要求を満たすために絶えず向上を続ける一方で、ソフトウェア開発への投資を活用するために必要な下位互換性が維持されています。

すべてのARM命令とThumb命令に標準化された形式を確保するために、ARMでは、汎用アセンブリ言語を使用しています。これによって、ユーザは、どちらの命令セットに対してもアセンブル可能なアセンブリ コードを作成することができます。

 
 


ARM 32ビット命令セットは、ARMv4T、ARMv5TEJ、ARMv6の各アーキテクチャに使用されている基本となる32ビットISAです。これらのアーキテクチャの中でも、高い性能が要求される用途や、割り込みやプロセッサの起動などハードウェア例外を処理する用途に、ARM 32ビット命令セットが使用されます。

CortexアーキテクチャのCortex™-AおよびCortex-Rプロファイルでも、パフォーマンスが重視されるアプリケーションや従来のコード用として、ARM 32ビットISAがサポートされます。その機能の大半は、Thumb-2命令セットに組み込まれ、高いコード密度との両立が図られています。

ARM命令は、32ビット幅で、4バイトの境界で整列されます。

すべてのARM命令は、直前の命令によって特定の条件コードが設定された場合にのみ実行するように「条件指定」することもできます。これは、アプリケーション プログラム ステータス レジスタのN、Z、C、Vの各フラグが、命令で指定された条件を満たしている場合にのみ、その命令は、プログラマ モデルの演算、メモリ、コプロセッサに対して作用するということです。フラグが条件を満たしていない場合、命令はNOPとして動作します。つまり、命令は、例外の発生チェックを含めて、正常に次へと進みますが、それ以上の作用はありません。命令の条件指定によって、ifやwhileステートメントの小さなセクションを、分岐命令を使用せずにエンコードすることができます。

これらの条件コードを次に示します。

 条件コード 意味

 N

 ネガティブ条件コード。結果が負の場合、1に設定されます。

 Z

 ゼロ条件コード。命令の結果が0の場合、1に設定されます。

 C

 キャリー条件コード。命令の結果がキャリー条件となった場合、1に設定されます。

 V

 オーバーフロー条件コード。命令の結果がオーバーフロー条件となった場合、1に設定されます。

 

 


携帯電話ディスク ドライブモデム、ポケットベルなど、コストが重視される組み込み制御アプリケーションがすべて、現行世代のCISCコントローラの性能の限界に達している現在、32ビット システムへの移行によるコスト増なしで、32ビットの性能とアドレス空間を得る方法が求められています。

Thumbの利点

  • 最小のシステム メモリ サイズとコストで卓越したコード密度を実現、システム コストの低い8ビット/16ビット バスを使った8ビット/16ビット メモリで32ビットの性能を実現
  • 確立されているARMの機能を兼ね備える
  • 業界最先端のMIPS/Wattによって最大限のバッテリ駆動時間とRISC性能を実現
  • 小さなダイ サイズによる集積化と極めて低いチップ コスト
  • 世界の複数パートナー企業を通じた安定供給

Thumbテクノロジは、32ビットARMアーキテクチャに対する拡張機能です。Thumb命令セットには、最も一般的に使用される32ビットARM命令のサブセットを、16ビット幅のオペコードに圧縮したものが含まれています。これらの16ビット命令は実行時に、完全な32ビットARM命令へと伸張されます。ARM命令への伸張は、透過的かつリアルタイムに実行され、パフォーマンスの損失は生じません。

設計者は、16ビットThumb命令セットと32ビットARM命令セットの両方を使用することができるため、アプリケーションの要件に応じて、パフォーマンスとコード サイズのどちらを重視するかをサブルーチン レベルで柔軟に調整することができます。

「Thumb対応」のコアとは、命令パイプラインにThumbデコンプレッサを搭載した標準ARMプロセッサをいいます。そのため、設計者は、Thumbの優れたコード密度と32ビットARMアーキテクチャの潜在能力を8ビット システムのコストで余すことなく引き出すことができます。

Thumbは、一般的な8ビット、16ビットのCISC/RISCコントローラよりコード密度が高く、コード サイズは従来の32ビット アーキテクチャと比べてほんのわずかです。すなわち、プログラム メモリが小さく、コストが削減されることになります。

Thumbアーキテクチャは、完全なWindowsソフトウェア開発環境のほか、開発評価ボード上でサポートされています。


Maximise