雑多な趣味の記録帳

tom01h.exblog.jp

zero-riscy の Matrix Mult 命令をパイプライン処理したい

以前 BNN 専用の命令をメモリインタフェース化した ので、zero-riscy の追加命令は行列積命令だけになりました。
それから、かつては 内積を 2つ並列に実行とか呼んでいました が、よく考えたら行列積ですよね。リンクのページに細かい事が書いてありますが、8bit 整数 3個を入力すると、8bit整数の 3×2の行列と掛けて、16bit 整数 2個が出てきます。累積できるようにもしています。飽和演算の構想もあったみたいですね。忘れていました (--)
こんなわけで命令の名前を mmult32 に変更して、モジュール名も変えたのですが、本当にやりたいことはパイプライン化です。この命令は演算に 4サイクルかかるので大きな効果が期待できます。また、この命令はコンパイラが自動で使ったりはしないので、まずはストールを検出しなくても良いソフトを書いて試してみました。やはり効果絶大で、1180519 サイクルから 787335 になりました。下は mmult32 を9回繰り返して 27×2 の行列と掛けているところです。
f0054075_00100259.png
[追記 波形のプログラムは ここ と思ったけどちょっとだけ違った]

[PR]
トラックバックURL : https://tom01h.exblog.jp/tb/29842745
トラックバックする(会員専用) [ヘルプ]
※このブログはトラックバック承認制を適用しています。 ブログの持ち主が承認するまでトラックバックは表示されません。
by tom01h | 2018-06-10 00:36 | PCとか | Trackback | Comments(0)