からくり小箱

アクセスカウンタ

zoom RSS STM32の倍精度浮動小数点演算速度の測定

<<   作成日時 : 2011/05/16 22:59   >>

なるほど(納得、参考になった、ヘー) ブログ気持玉 2 / トラックバック 0 / コメント 1

 前回作成したprintfのLCDへの表示を使って、STM32マイコン(32bit)の色々な浮動小数点演算速度の測定をやってみました。元々STM32マイコンを選んだのは、ロボットの制御に浮動小数点演算を使いたかったためで、これがどの位のスピードで動くのか試しておきます。
 測定に使ったプログラムは以下です。各演算を10000回ループさせます。systemtimer割り込みで、1ms間隔で、time_count変数を-1しているので、ループの最初にtime_count変数に適当な値を入れておいて、ループ終了時に元の値からtime_count変数を減算することで演算時間を測定します。減算値はLCDに表示するようにしました。

    time_count = 10000;
    for(num = 0; num < 10000; num++)
    {
       //root = cos((double)num * 3.1415927 / 180);
       //root = acos((double)num / 10000);
       //root = (double)num / 10000;
       //root = (double)num * 10000;
       //root = sqrt((double)num);
       root = log((double)num);
    }
    printf("TIME=%d",10000 - time_count);

 上の演算部分コメント指定の必要な所を外して、それぞれの演算の時間測定を行い、演算時間を計算すると以下のようになりました。

  ・ cos((double)num * 3.1415927 / 180);     104μs
  ・ acos((double)num / 10000);           127μs
  ・ (double)num / 10000;                7.3μs
  ・ (double)num * 10000;                4.3μs
  ・ sqrt((double)num);                 25.8μs
  ・ log((double)num);                  84.9μs

このマイコンは、STM32の中では、クロックが24MHzと遅い部類ですが、今まで使った8bitマイコンに比べ、さすが32bitマイコン、格段に速いようです。

 以前、20MHzクロックの78K0で以下の浮動小数点演算(このときはfloat)を行った記録がこのブログに残っていますが、そのときの測定結果は、303μsとなっています。これは掛け算2回と割り算1回の計算なので、今回のSTM32マイコンなら16μs程度で出来てしまう計算になり、10倍以上速いことが分かります。float演算ならさらに速くなります。

 stdweight = height * height * 22 / 10000


テーマ

関連テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ
気持玉数 : 2
なるほど(納得、参考になった、ヘー)
ナイス

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(1件)

内 容 ニックネーム/日時
doubleエミュレーションベンチの情報が少なく、これは非常に参考になりました。
tj
2011/06/11 12:35

コメントする help

ニックネーム
本 文
STM32の倍精度浮動小数点演算速度の測定 からくり小箱/BIGLOBEウェブリブログ
文字サイズ:       閉じる