Login

ARMプロセッサ アーキテクチャ

ARMアーキテクチャはARMプロセッサ構築の基盤を形成しています。ARMアーキテクチャは年々増加する新機能、高性能に対する需要と、新興市場のニーズに応じるためのアーキテクチャ要素を含むように進化してきました。

ARMアーキテクチャは幅広い性能範囲の製品実装をサポートし、多様なマーケット セグメントにおいて主要なアーキテクチャとしての揺るぎない地位を確立しています。ARMアーキテクチャは幅広い範囲の性能をサポートするので、ARMプロセッサの実装規模を非常に小さくして、最先端のマイクロアーキテクチャ技術を使った先進設計の非常に効率よい実装を可能にしています。実装サイズ、パフォーマンス、低消費電力は、ARMアーキテクチャの主要な特性です。

アーキテクチャの拡張はJavaアクセラレーション(Jazelle®)、セキュリティ(TrustZone®)、SIMD、およびAdvanced SIMD(NEON™)技術をサポートするために開発されました。ARMv8-Aアーキテクチャはオプション機能として暗号化拡張機能を追加します。

ARMアーキテクチャは、一般に縮小命令セット コンピュータ(RISC、Reduced Instruction Set Computer)型のアーキテクチャとして記述されますが、それは次のような代表的なRISCアーキテクチャの機能が組み込まれているからです。

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

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

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

ARMv8アーキテクチャ

ARMv8-AはARMアーキテクチャに64ビットアーキテクチャのサポートを導入し、以下を含みます。

  • 64ビット汎用レジスタ、SP(スタック ポインタ)、およびPC(プログラム カウンタ)
  • 64ビット データ処理と拡張仮想アドレシング
  • 2つの主要実行状態
    • AArch64 - 64ビット実行状態(例外モデル、メモリ モデル、プログラマ モデル)とその状態をサポートする命令セット
    • AArch32 - 32ビット実行状態(例外モデル、メモリ モデル、プログラマ モデル)とその状態をサポートする命令セット

実行状態は次の3つの主要命令セットをサポートします。

  • A32(またはARM):32ビット固定長命令セット、各種のアーキテクチャ バリアントによって強化。現在AArch32と呼ばれる32ビットアーキテクチャ実行環境の一部。
  • T32(Thumb):最初は16ビット固定長命令セットとして導入され、後にThumb-2技術の導入で混合長16ビットおよび32ビットの命令セットとして強化された。現在AArch32と呼ばれる32ビットアーキテクチャ実行環境の一部。
  • A64:32ビット固定長命令セット。ARMおよびThumb命令セットに類似の機能を提供する。ARMv8-Aで導入されたAArch64命令セット。

ARM ISAは、最先端のアプリケーション開発者の増大する要求を満たすために絶えず向上を続ける一方で、ソフトウェア開発への投資を保護するために必要な下位互換性が維持されています。ARMv8-AにはA32とT32に加えてA64命令セットとの整合性を維持するために追加されたものがあります。

 
 


A64 is a new 32-bit fixed length instruction set to support the AArch64 execution state. The following is a summary of the A64 ISA features.
  • Clean decode table based on 5-bit register specifiers
  • Instruction semantics broadly the same as in AArch32
  • 31 general purpose 64-bit registers accessible at all times
  • No modal banking of GP registers - Improved performance and energy
  • Program counter (PC) and Stack pointer (SP) not general purpose registers
  • Dedicated zero register available for most instructions

Key differences from A32 are:

  • New instructions to support 64-bit operands. Most instructions can have 32-bit or 64-bit arguments
  • Addresses assumed to be 64-bits in size. LP64 and LLP64 are the primary data models targeted
  • Far fewer conditional instructions than in AArch32 conditional {branches, compares, selects}
  • No arbitrary length load/store multiple instructions LD/ST ‘P’ for handling pairs of registers added A64

Advanced SIMD and scalar floating-point support are semantically similar to the A32 support; they share a floating-point/vector register file, V0 to V31. A64 provides three major functional enhancements:

  • More 128 bit registers: 32 x 128 bit wide registers; can be viewed as 64-bit wide registers
  • Advanced SIMD supports DP floating-point execution
  • Advanced SIMD supports full IEEE 754 execution; rounding-modes, Denorms, NaN handling

There are some additional floating-point instructions for IEEE754-2008:

  • MaxNum/MinNum instructions
  • Float to Integer conversions with RoundTiesAway

The register packing model in A64 is also different from A32:

  • All vector registers 128-bits wide, Vx[127:0] :
    • Double precision scalar floating point uses Vx[63:0]
    • Single precision scalar floating point uses Vx[31:0] 

 


ARMは一般にA32として知られている、固定長(32ビット)命令セットです。32ビットISAに基づくもので、ARMv4T、ARMv5TEJ、およびARMv6アーキテクチャで使用されています。これらのアーキテクチャでは、A32は高性能が要求される場合や、割り込みやプロセッサの立ち上げなどハードウェア例外を扱う場合に使用されます。

ARM ISAは、性能が重視される場合やレガシー コードのために、CortexアーキテクチャのCortex™-A およびCortex-Rプロファイルでもサポートされています。Thumb-2技術の導入に伴って、その機能のほとんどはThumb命令セットの一部になっています。Thumb(T32)は改善されたコード密度を活用しています。

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

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

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

 条件コード  意味

 N

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

 Z

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

 C

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

 V

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

 

 


携帯電話、ディスク ドライブ、モデム、ページャーなど、コストが重視される組み込み制御のアプリケーションでは、最低限のコストで32ビットの性能とアドレス空間を得る方法を常に模索しています。   

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

Thumbの利点

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

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

Thumb ISAは、完全なWindowsソフトウェア開発環境のほか、開発評価ボードなど、ARMエコシステムによって幅広くサポートされています。

性能と電力効率とともにコード密度を向上

Thumb-2技術によって、Thumbは32ビットと16ビットの混合長命令セットになり、すべてのARMv7準拠ARM Cortex実装の共通命令セットになっています。Thumb-2は多様な組み込みアプリケーションにおいて、一層高い性能とエネルギー効率、コード密度を実現します。

このテクノロジは、既存のARMおよびThumbソリューションとの下位互換性を保ちながら、Thumb命令セットの機能を大幅に拡張します。その結果、Thumbが誇るクラス最高のコード密度を、より多くのアプリケーションで活用することが可能になっています。コードのパフォーマンスを最大限に引き出すために、Thumb-2テクノロジは、従来と比べメモリの使用量を31%節約することによってシステム コストを下げるとともに、既存の高密度コードより最大38%高い性能を提供します。これにより、バッテリ寿命を延長したり、製品の機能の充実を図ることが可能です。

 


Maximise


Cookies

We use cookies to give you the best experience on our website. By continuing to use our site you consent to our cookies.

Change Settings

Find out more about the cookies we set