Kick4の掲示板

九州プログラミング研究会(kick4)の掲示板です。
プログラミングや電子工作について話し合いましょう。
会員以外の投稿も歓迎します。

4 / 95 ツリー ←次へ | 前へ→


PIC32MXのベクトル演算 のざわ 14/2/2(日) 18:30
Re:PIC32MXのベクトル演算 nari 14/2/3(月) 10:20
Re:PIC32MXのベクトル演算 iruka 14/2/3(月) 12:51
Re:PIC32MXのベクトル演算 のざわ 14/2/4(火) 19:35

PIC32MXのベクトル演算
 のざわ  - 14/2/2(日) 18:30 -

引用なし
パスワード
   お世話になります。

良く判らないので質問させてください。

http://ww1.microchip.com/downloads/en/DeviceDoc/51685E.pdf

例えば、このマニュアルの103ページにあるmips_vec_add16ですが二つのベクトル列を足していますが、これって

一度に16bitの演算を2回やっているのでしょうか?

Nは4の倍数で4以上にしろと書いてあるので、なんらかのベクトル計算だと思うのですが、実際の所どうやっているか判らないです。

gcc環境のほうで、高速な16bitのQ形式の線形計算(+-X/)のベクトル演算をしたいのですが、参考になる資料を探していています。

何か資料はありませんでしょうか?
<Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:26.0) Gecko/20100101 Firefox/26.0@60-62-121-56.rev.home.ne.jp>

Re:PIC32MXのベクトル演算
 nari  - 14/2/3(月) 10:20 -

引用なし
パスワード
   >一度に16bitの演算を2回やっているのでしょうか?
>
>Nは4の倍数で4以上にしろと書いてあるので、なんらかのベクトル計算だと思うのですが、実際の所どうやっているか判らないです。

私も判りませんが、簡単なプログラムをコンパイルし、
出来たコードを逆アセンブルすればわかるのではないでしょうか。

まぁ、ライブラリーのコードを直接逆アセンブルしても良いわけですが..
<Mozilla/5.0 (Windows NT 6.1; rv:26.0) Gecko/20100101 Firefox/26.0@hslpc24>

Re:PIC32MXのベクトル演算
 iruka  - 14/2/3(月) 12:51 -

引用なし
パスワード
   ▼のざわさん:
>お世話になります。
>
>良く判らないので質問させてください。
>
>http://ww1.microchip.com/downloads/en/DeviceDoc/51685E.pdf
>
>例えば、このマニュアルの103ページにあるmips_vec_add16ですが二つのベクトル列を足していますが、これって
>
>一度に16bitの演算を2回やっているのでしょうか?
>
>Nは4の倍数で4以上にしろと書いてあるので、なんらかのベクトル計算だと思うのですが、実際の所どうやっているか判らないです。
>
>gcc環境のほうで、高速な16bitのQ形式の線形計算(+-X/)のベクトル演算をしたいのですが、参考になる資料を探していています。
>
>何か資料はありませんでしょうか?


libdsp.aというのがMPLABのインストール先のどっかに作られていると思います。
それを逆アセンブルすれば良いです。

D:> mips-objdump -S libdsp.a

vec_add16.o:   file format elf32-littlemips


Disassembly of section .text:

00000000 <mips_vec_add16>:
  0:    30e7fffc     andi    a3,a3,0xfffc
  4:    00073840     sll    a3,a3,0x1
  8:    00a73821     addu    a3,a1,a3

0000000c <loop>:
  c:    84a80000     lh    t0,0(a1)
 10:    84a90002     lh    t1,2(a1)
 14:    84aa0004     lh    t2,4(a1)
 18:    84ab0006     lh    t3,6(a1)
 1c:    84cc0000     lh    t4,0(a2)
 20:    84cd0002     lh    t5,2(a2)
 24:    84ce0004     lh    t6,4(a2)
 28:    84cf0006     lh    t7,6(a2)
 2c:    010c4021     addu    t0,t0,t4
 30:    012d4821     addu    t1,t1,t5
 34:    014e5021     addu    t2,t2,t6
 38:    016f5821     addu    t3,t3,t7
 3c:    a4880000     sh    t0,0(a0)
 40:    a4890002     sh    t1,2(a0)
 44:    a48a0004     sh    t2,4(a0)
 48:    a48b0006     sh    t3,6(a0)
 4c:    24a50008     addiu    a1,a1,8
 50:    24c60008     addiu    a2,a2,8
 54:    14a7ffed     bne    a1,a3,c <loop>
 58:    24840008     addiu    a0,a0,8
 5c:    03e00008     jr    ra
 60:    00000040     ssnop

vec_addc16.o:   file format elf32-littlemips

こんな感じで普通にN=4のループアンロールですね。

PIC32MXにはベクトル演算機構はないです。
私はなんとなくMIPS歴が長いので、普通にCでもこんなことします。
(ループアンロール)

ARMはレジスタ少ないし、遅延分岐しませんし、小回りが利くので
あんまりアンロールしなくても速い感じです。
<Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chr...@luna.alfasystem.net>

Re:PIC32MXのベクトル演算
 のざわ  - 14/2/4(火) 19:35 -

引用なし
パスワード
   おせわになります。

>PIC32MXにはベクトル演算機構はないです。

積と和を同時計算するだけで、それがベクトルにはなっていないようですね。

>私はなんとなくMIPS歴が長いので、普通にCでもこんなことします。
>(ループアンロール)

この問題が4のアンロールなのはbiquadだからなのでしょうね。

まだ不明な点もありますけど、劇的にスピードに影響しそうも無いなら
まぁ、いいやと言うことにします。

とりあえず普通にIIRを書いてスピードを見てみます。

どうも、ありがとうございます。
<Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:26.0) Gecko/20100101 Firefox/26.0@61-24-26-228.rev.home.ne.jp>

4 / 95 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
60393
(SS)C-BOARD v3.8 is Free