電音の工場ブログ

趣味の電子工作を中心としたブログです.音モノの工作が多いです.

メモ

メモ

いやー、よくわからないことがいっぱい←ちゃんと勉強していないからですが。

シミュって実行速度

GNU ARMなKEILの環境で、DACsine.c のデモを動かして、disassembly のステップ実行で whileループの1周の時間のexecution profiling。

POWCON = 0x0000 で
1サンプル(sine LUTが1進む) 0.528usec
POWCON = 0x0001 で
1サンプル(sine LUTが1進む) 1.056usec
POWCON = 0x0003 で
1サンプル(sine LUTが1進む) 4.213usec

POWCON = 0x0000 のときで 1ステップあたり、0.048usec というのが最小単位でした。20.8MHz。

測ってはみたものの、パイプラインのどこをどう測っているのかわからなかったりしていますが、ステップ実行とrun/break で出てくる時間が同じということで、ふむふむ。

スピードでoptimizeしたら

もう少し速くなりました。

AMBAとかペリフェラルとか

ADuC7026のデータシートを見るとMMRペリフェラルのアクセス速度に関しては、バスアクセスのAMBAを見ろ、と。

そういえばDWMのgcc記事に ROMで動かすよりも RAM で動かすほうが速いとの記述(p.101)。なぜだろう。どちらも AMBA AHB にぶら下がっているのではないのかしら。ROMはwaitかかっているとか?

p.51の1サイクルでアクセス可能、というのもよくわからなかったり。アドレスとデータでフェーズ分かれて 2-HCLK 要るんではなかったかしら、って AHB を勉強しろということですか、そうですか…

APBはともかくAHBは忘れてAXIに切り替えたいのだけれど…