メディア
連載
» 2015年08月17日 11時30分 公開

浮動小数点演算のメリットQ&Aで学ぶマイコン講座(17)(4/4 ページ)

[菅井賢(STマイクロエレクトロニクス),EDN Japan]
前のページへ 1|2|3|4       

FPUのパフォーマンス

 FPUがなくてもソフトウェアで浮動少数点演算は可能ですが、前述したようにプログラム量が増加し、実行速度も劣ります。STマイクロエレクトロニクスのSTM32F4シリーズを使って両者を比較した例を図2に示します。STM32F4シリーズはFPU付きのARM社のCortex-M4を搭載しており、ソフトでもハードでも浮動少数点演算を実現できます。

 ソフトウェアで実現する場合は、ユーザーは浮動小数点演算の関数を作成し、その関数をコールします。1つの演算でも複数の命令の演算が必要になるので、プログラム量が増加し、実行時間も長くなります。FPUを搭載している場合は、アセンブル命令(図中ではVADDとVDIV)が準備されているので、その1命令を実行するだけです。

図2:ソフトウェアとFPUの比較 (クリックで拡大)

 浮動小数点演算の関数の作成も不要ですし、実行時間も短くなります。Cortex-M4の場合はCMSIS(Cortexマイクロコントローラ ソフトウェア インタフェース規格)でライブラリが準備されているので、ユーザーは容易に浮動少数点演算を自分のプログラムに実装することができます。

 図3に、具体例として、FPUありの場合となし(CMSISライブラリ)の場合での、Float32データ型のFIRフィルタ(係数29)実行時間の比較を記述しました。FPUなしの場合の実行時間と比較するとFPUありの場合は約10分の1になります。

図3:ソフトウェアとFPUの比較 (クリックで拡大)

マイコンのIEEE754サポート

 マイコンに搭載されているFPUは、基本的に「IEEE 754-2008規格準拠」ですが、完全にサポートしているかどうかは、各製品の説明書を確認してください。IEEE 754-2008規格の全ての演算には対応していないFPUもありますので、注意が必要です。半精度、単精度、倍精度、四倍精度のどれをサポートしているかも、説明書を確認してください。FPUだからといって、全ての精度をサポートしているわけではありません。

過去の質問一覧はこちら

前のページへ 1|2|3|4       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSフィード

公式SNS

EDN 海外ネットワーク

All material on this site Copyright © ITmedia, Inc. All Rights Reserved.
This site contains articles under license from AspenCore LLC.