Direct Memory Access (DMA)の転送速度の計算方法について
あるLSIで使用できるDMAの転送速度について調査を行っています。
データシートなどで直接的に転送速度に関する記述が見つけられなかった為、困っています。
DMAの転送速度について、一般的にどのような情報があれば算出できるでしょうか。
具体的な製品で言うと例えば Texas Instruments の CC1310 というLSIです。
http://www.tij.co.jp/product/jp/CC1310
以下の資料で「Data sizes of 8, 16, and 32 bits」という文言を見つけられたので、一度に書き込めるサイズはこれなのかなと思いました。
この値にクロック周波数などをかければ、bpsに結びつきますでしょうか。
・CC1310 SimpleLink Ultralow Power Sub-1-GHz Wireless MCU
http://www.tij.co.jp/jp/lit/ds/symlink/cc1310.pdf
@774RR
回答頂きありがとうございます。
ご認識のとおりです。
また、最近のマイコンについても教えて頂きありがとうございます。
DMA TransferSize * (1/Clock) /2
こちらなのですが、以下の場合、認識に相違ないでしょうか。
・DMA TransferSize = 1024
・Clock = 10kHz
1024 * (1/10000) / 2 = 転送レート:0.0512
どこかで計算を間違えてる気がするのです、、すみません、、H/Wについて知識が浅いもので、ご教示頂けると幸いです。
(だからデータシートにも載っていないし載せることが不可能)
こちらについては、わからないと DMA を使う意味がわからないと思いました。
その為、厳密な値でなくても、参考値みたいなものまではたどり着ける必要があるかなと思いました。
こういった場合によく使う求め方があったりしないかなぁと思い、質問した次第です。
追記
それはその通りなんですが、データシートを深く理解する時間が取れない場合も多々あります。
最近はマイコンラインアップも充実してますし、最初の設計段階では深く考えずに
「このマイコンのこのクロックで処理速度を実測して間に合わないなら、
上位マイコンにしてクロック上げちゃえ」
などという恥ずべき設計者もかなり居る様子っす。
なんと、そうなんですね。。非常に残念な実態です。。
自身が実装しようとしている物の上位にあたるシステムを理解せずに開発を進めるということですよね。。
WEBアプリなどでも言えることですが、フレームワークのふるまいを理解せずに開発するのって、バグの温床だと思っています。。
また、リソースを増やすことで問題解決って、、なんか残念ですね。。まあ、よくある話なのはわかっています。。笑
実際それで行けちゃう(コスト的に)場合も多いので、それなら開発期間短縮のほうが優先、
なんてのが多いようですね。
ちょっと、ショックですがコストなど含めて問題ないのであれば、そうなってしまうのかもしれないですね。。
あるいは通常の割り込み処理でソフトウエア処理しても間に合うマイコンを採用するとか。
ソフトウエア処理では間に合わなくて DMA だと間に合う、ようなぎりぎりの設計することは
オイラの周りでは稀っす。
そうなのですね。
今回は、「ある時間」内に、ADCからの音声データをソフトコーデックしながら...というシステムなのですが、ADCからのデータをマイコンに割り込みで渡していてはソフトコーデックに支障が出て、間に合わないのでは?という推測により、DMAの利用を検討していました。
私の個人的意見になってしまうのですが、今回の様な要件については「DMA だと間に合う」っていうのはH/Wを有効に使えているのでシステムとして良いかなと思いました。
そこまでぎりぎりだと機能追加していくと破綻すること必至だし。
"ソフト"の機能追加という意味ならば、DMAで処理を分散したほうが、マイコンの余裕もできて、むしろ拡張性もあるかなと感じました。
DMA TransferSize / (1/Clock) / (1+1)
すみません、ちょっと分からないのですが、周波数は1秒間のサイクル数ですよね?
そうなると、「DMA TransferSize * Clock」ではダメでしょうか?
要するに、例だと「32bit * 48MHz」かなと思いました。
それから、1clockで1bitだけのRead/Writeって考えにくくないでしょうか?
だいたい、1clockでワード単位ではないですか?なので「/ (1+1)」について疑問に思ってしまいました。あえて、計算に加えなくても良いかなとも思えました。
(検討違いなこと言っていたら、すみません。。)