高度なアーキテクチャにより最適化されたAtmel AVR CPU

 

小コード数と同時に高性能と低電力を実現

ハーバードアーキテクチャを元に設計
AVRマイクロコントローラーの高性能および低消費電力は偶然生まれたのではなく、ひたむきな努力と特許技術によって実現されました。Atmelの8ビットおよび32ビットAVR CPUは、低消費電力と高性能に最適化された高度なハーバードアーキテクチャをベースにしています。すべてのハーバードアーキテクチャデバイスと同様に、AVR CPUには2つのバスがあります。ひとつはCPUが実行可能命令を読み出す命令バス、もうひとつは対応するデータの読み取りまたは書き込みを行うデータバスです。これにより、各クロックサイクルで新しい命令を実行することができ、命令を実行する準備ができていない待機状態がなくなります。

AVRマイクロコントローラーのバスは、CPU命令バスがオンチップフラッシュメモリへ優先的にアクセスできるよう最適化されています。CPUデータバスはSRAMへの優先アクセス権を持ちます。

 

複雑さをなくし、効率化を促進

CPU-AVR多くの人がRISCは「Reduced Instruction Set Computer(縮小命令セットコンピュータ)」の略語であり、RISCデバイスの命令数は限られていると考えています。しかし、RISCとCISCの歴史に詳しい人であれば、RISCが「Reduced COMPLEXITY Instruction Set Computer(低複雑命令セットコンピュータ)」の略であることをご存じのはずです。RCISCという用語は使いにくいため、RISCという略語がこの理論を指すようになりました。

Atmel AVRはセットの命令数を減らしているというわけではなく、各命令のデコードに必要なデジタル回路の複雑さを緩和しているのです。各命令は16ビットの倍数であるため、エネルギーを無駄に使って不要な情報を含むビットの転送とデコードを行う必要がありません。

AVR命令セットをできる限り効率的にするため、AVR CPUの開発チームはIAR Systemsからコンパイラーの専門家を招き、AVR Cコンパイラーの初版を共同開発しました。綿密に改良を続けた結果、AVRアーキテクチャはCコード実行に最適化され、構築フェーズ内でボトルネックを完全に除去できるようになりました。これが、AVRといえば小さなコードサイズ、高性能、低消費電力を指すこととなったいきさつです。

 

ワーキングレジスタでアクセスを向上

通常、CPUがプログラムを実行する際はポインター、ループカウンター、セマフォステータスビット、アレイインデックスを含む一部のデータセットに頻繁にアクセスする必要があります。実際は、ソースコードをよく調べてみると、ほとんどのデータはほんの少しの間のみ利用された後に破棄されていることがわかります。このためAVR CPUは複数の「ワーキングレジスタ」を持ち、CPU内部にダイナミックデータを格納します。ダイナミックデータが「レジスタファイル」内に整理されているおかげで、一時データをCPUからSRAMに移動させたにもかかわらず、数サイクル後に再度読み出ような無駄手間が省けます。レジストリファイルは極めて高速であるため、CPUは読み取り、実行、結果のレジスタへの格納を1回のクロックサイクルで行うことができます。また、長いアドレスとデータ行を持つ大容量SRAMと比較すると、アクセス時に必要なエネルギーは少なくすみます。無駄なサイクルがないため、コードの実行に必要な消費電力は大幅に削減されます。

 

DSP命令

32ビットAVRは整数、固定小数点、浮動小数点のDSP命令など非常に多様な命令セットを持ち、AVR CPUの中で最高のパフォーマンスを発揮します。32ビットAVR命令セットには、中間結果の内部範囲チェックをなくしてループを高速化する飽和命令と丸め命令が含まれています。高速の乗算命令、累算命令、除算命令を持つ32ビットAVRは、多様なデジタル信号処理を必要とするアプリケーションに最適です。