OMAP3530 は、ARM プロセッサと C64x+ DSP を実装しています。ARM よりも DSP の方が高速に実行されると予想されるテスト ループがありますが、そうではありません。
ループ:
#define DIM 4
#define LIM 1000
#define MASK 3
int i, j;
uint32 arr[DIM][DIM] = {0};
uint32 rand[DIM][DIM] = {1, 5, 2, 7,
5, 4, 3, 8,
1, 2, 9, 3,
6, 6, 8, 4};
for (i = 0; i < LIM; i++)
for (j = 0; j < LIM; j++)
arr[i & MASK][j & MASK] += rand[i & MASK][j & MASK];
ベンチマーク:
アーム: 5ms
DSP: 25ms
DSP のポイントは、このような単純な算術演算を処理することなので、より高速であることを期待していました。私は DSP にかなり慣れていないので、DSP の構成はあまり行っていません。キャッシュが構成されていないと思うので、それを調べていますが、他の提案を歓迎します。
誰でも可能な解決策についてアドバイスできますか?
編集-LIM
反復回数を増やすために、値を 5000 に変更しました。新しいベンチマーク:
アーム: 120ms
DSP: 530ms