2015年9月20日日曜日

ゴメン、MSP432P401Rやっぱり速かった

基板裏

えー、前回、MSP432P401Rがイマイチ速くない、という記事を書きました。

32bit 48MhzのMSP432が16bit 16MhzのArduino nanoと比べて約1.7倍速いだけでクロック比やCPU差を考えるとぼろ負け状態でした。

あれ、FPUは仕事してないの?と思ったのですが…よくよく仕様を読んでみれば、M4FのFPUは単精度でした。今回使ったFFTライブラリは倍精度なので、FPU様の恩恵をまったく受けられません。

というわけで、dobuleをfloatにさくっと置換して、実行してみました。

その結果(前回同様64点のFFTを1000回実行)

デバイス結果
MSP432P401R82mSec
Arduino nano1943mSec

前回結果が1142mSecでしたから約14倍スピードアップ! 圧倒的です。一方のArduino nanoはほとんど変わっていません。改めて調べてみるとArduinoはdoubleもfloatも単精度なんですね…知らなかった。Energiaも同じ仕様なのですが、MSP432は特別なのでしょうか。とりあえずfloatが単精度でFPUを使っていることは確認できましたが、もしMSP432だけはdoubleがちゃんと倍精度で実装されているとしたら、この結果は納得がいきます。

前回の結果でも「なんとか補聴器作れるかなぁ…」という程度だったのですが、これなら十分です。あとは私の能力か…そこが一番ネックだな…。

関係ないけど、配列に一定の値を入れて逆FFTかけたらピンクノイズになるんですかね。一度実験したいと思ってたのですが、こないだ「よし、もう買い忘れはないな」とさんざん確認してから発注したにもかかわらず、見事にDACを注文し忘れました。

やはり私の能力が一番のネックだorz

0 件のコメント:

コメントを投稿