メモ
メモ
いやー、よくわからないことがいっぱい←ちゃんと勉強していないからですが。
シミュって実行速度
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に切り替えたいのだけれど…