Help us understand the problem. What is going on with this article?

XilinxのプロセッサMicroBlazeの乗算性能について

More than 1 year has passed since last update.

目的

XilinxのFPGAにはMicroBlazeというソフトウェアのプロセッサがある。ソフトウェアなので乗算器や除算器を必要に応じて装備させることが可能です。乗算器は使用するハードウェアの量が多いので、なるべくなら装備しないことを考えたいが、一体、どれくらい違うのかを考えるためMicroBlazeのソフトウェア乗算のコードを調べる。実際には乗算器にDSPを利用する場合が多いのでDSPが余っているような状況ではあまり必要のない議論かもしれない。

MicroBlazeの乗算器の性能

性能を優先するパイプライン5段のMicroBlazeでは1サイクルのレイテンシで、面積を優先するパイプライン3段のMicroBlazeでは3サイクルのレイテンシ。

32bit×32bit = 64bitのソフトウェア乗算

MicroBlazeのSDKのgccのライブラリに加算器を駆使したソフトウェアの乗算ルーチンがある。

mulsi3.o:     file format elf32-microblazeel


Disassembly of section .text:

00000000 <__mulsi3>:
   0:   00600000    add r3, r0, r0
   4:   bc05004c    beqi    r5, 76      // 50
   8:   bc060048    beqi    r6, 72      // 50
   c:   bea5000c    bgeid   r5, 12      // 18
  10:   88853000    xor r4, r5, r6
  14:   24a50000    rsubi   r5, r5, 0
  18:   bca60008    bgei    r6, 8       // 20
  1c:   24c60000    rsubi   r6, r6, 0
  20:   b8000008    bri 8       // 28
  24:   00a52800    add r5, r5, r5
  28:   90c60041    srl r6, r6
  2c:   08e00000    addc    r7, r0, r0
  30:   bc07fff4    beqi    r7, -12     // 24
  34:   be26fff0    bneid   r6, -16     // 24
  38:   00632800    add r3, r3, r5
  3c:   bc44000c    blti    r4, 12      // 48
  40:   b60f0008    rtsd    r15, 8
  44:   80000000    or  r0, r0, r0
  48:   b60f0008    rtsd    r15, 8
  4c:   04630000    rsub    r3, r3, r0
  50:   b60f0008    rtsd    r15, 8
  54:   20600000    addi    r3, r0, 0

コアとなるループはアドレス24~38の6命令。値によって1ループ 5~6サイクルになる。(1サイクルの遅延分岐)
乗数、被乗数の値に依存するが両者が32bitのMAXに近い場合、32×5.5 = 176サイクル
ただし実測ではないので、違っているかもしれない。

まとめ

ソフトウェアによる乗算は、かなり遅いことがわかった。

参考文献

Xilinx 「MicroBlaze プロセッサ リファレンス ガイド」
UG081(v10.3)

izuna
1999年RSA暗号で世界一の性能だった暗号プロセッサICF3をベースに8bit CPUにしたICF3-ZをApache License 2.0のライセンスで公開しました。8bit CPUでは暗号演算器ははずされています。
https://icf3z.idletime.tokyo/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした