まず、達成必要な処理時間について整理しておきたいと思います。下表が、再生ファイルのsamplingフォーマット毎に達成必要なSDカードリードアクセス1回(512byte)あたりの達成必要な実行時間になります。要は、512byteのデータを再生する時間になります。
32bit/384kHzのファイルを再生するには、16bit/44.1kHzのファイル再生の17.4倍の処理速度が必要になります。
SDカード読出し処理1回(512byte)の達成必要な実行時間
デバッグ開始時点では、クラスタの切替がない場合で約38ms、クラスタ切替時には1200ms、クラスタ切替は64回周期に発生しますので、平均55msの処理時間がかかっています。
とりあえず、CPUクロックを元々設定してあった50MHzに戻してみました。CPUクロックを20MHzに下げたのは、省電力化と、SDカードクロックと揃えて同期化を省くことにあったのですが、この状況ではそんなことは言ってられません。
クラスタの切替がない場合で約23ms、クラスタ切替時には740ms、平均34msの処理時間までは短縮することができました。
CPU速度は2.5倍になっているのに短縮率は、1.6倍程度に留まっています。これはSDRAMアクセス速度が変わっていないことが主要因と考えられます。
クラスタ切替がない場合に限ってみても16bit/44.1kHz再生に必要な処理時間の約8倍かかっています。先はものすごく遠い...
次は、SDカードへのコマンド送信、レスポンス受信処理をハード化してみます。
*表を修正:stereoのため2倍のデータ量となるのが抜けていたため訂正 5/15
0 件のコメント:
コメントを投稿