1

現在、ハードウェア FPU を持たない OMAP L138 プロセッサを使用しています。FP を多用するアルゴリズムを使用してスペクトル データを処理するため、ARM 側では十分ではありません。私はアルゴリズム担当者ではありませんが、その 1 つは「動的タイム ワーピング」です (意味がわかりません)。初期のパフォーマンス数値は次のとおりです。

Core i7 ラップトップ@ 2.9GHz: 1 秒
Raspberry Pi ARM1176 @ 700MHz: 12 秒
OMAP L138 ARM926 @ 300MHz: 193 秒

さらに悪いことに、Pi は私が使用しているボードの価格の約 30% です。

私は、OMAP L138 のもう 1 つのプロセッサである TI C674x を持っています。問題は、何週間も費やして次のことを行うのが最善であるかということです。

  • DSPLINK、相互運用ライブラリ、およびツールチェーンを学び、Code Composer または
  • L138 を捨てて Pandaboard のような Dual Cortex A9 に移行すると、その過程で電力のペナルティが発生する可能性があります。

(A8 での FPU のパフォーマンスを見ると、Rasp Pi よりも改善されていませんが、Cortex A9 よりも改善されているようです)。

答えは「場合による」と理解しています。ここにいる他の人は、「適切なジョブを割り当てれば、Cortex-A8 を簡単に凌駕できる信じられないほど高速な DSP のロックを解除できます」と言っていますが、定義されたジョブ セットについては、外付けを購入しなければならなかったとしても、A9 にスキップしたほうがよいでしょう。 DSP後で?

4

2 に答える 2

5

この質問は、DSP と ARM のクロック レートを知らなければ答えられません。

ここにいくつかの背景があります:

c674x DSP での浮動小数点乗算のサイクルを確認しました。

サイクルごとに 2 つの乗算を発行でき、各乗算の結果レイテンシは 3 サイクルです (つまり、結果がデスティネーション レジスタに表示されるまでにさらに 3 サイクル待つ必要があります)。

ただし、DSP は結果を待たないため、サイクルで2 つの乗算を開始できます。コンパイラ/アセンブラは、必要なスケジューリングを行います。

これは、DSP の使用可能な 8 つの機能ユニットのうち 2 つしか使用しないため、2 つの乗算を実行している間、サイクルごとに次のことも実行できます。

  • 2 つのロード/ストア (64 ビット幅)
  • 6 つの浮動小数点加減算命令 (または整数命令)

ループ制御と分岐は無料で、DSP の費用はかかりません。

これにより、並列ロード/ストアとループ制御を使用して、サイクルごとに合計 6 つの浮動小数点演算が行われます。

一方、ARM-NEON は、浮動小数点モードで次のことができます。

サイクルごとに 2 つの乗算を発行します。レイテンシーは同等であり、命令は DSP のようにパイプライン可能です。ロード/ストアには、追加/減算と同様に余分な時間がかかります。ループ制御と分岐は、適切に記述されたコードで自由に実行できる可能性が非常に高くなります。

要約すると、DSP は Cortex-A9 NEON ユニットの 1 サイクルあたり 3 倍の作業を行います。

これで、DSP と ARM のクロック レートをチェックして、ジョブにとってどちらが速いかを確認できます。

ああ、1 つだけ: データにアクセスする前に DMA を使用して RAM からキャッシュにデータを移動するため、適切に作成された DSP コードを使用すると、ロード中にキャッシュ ミスが発生することはほとんどありません。これにより、DSP の速度も大幅に向上します。

于 2013-06-08T22:52:13.583 に答える