カテゴリ:PCとか( 136 )

もくじ

V-scale というオープンソースマイコンを拾ってきて FPGA に乗せて遊んでます

_コンソール付きのシミュレータが欲しい 端末 XMODEM
乗算・除算器を改良した話 : github
FPU 拡張を追加したい話
_演算器のモデル記述 FADD FMUL FMADD FDIV FSQRT : github
_組み込み 転送 演算器

[PR]
by tom01h | 2017-12-31 23:59 | PCとか | Trackback | Comments(0)
V-scale xbar の先のペリフェラル用マスターポートには、AHB に代えて AXI ポートを付けようと思っています。
その際、クリティカルパスになりがちだったリクエストを 1サイクル遅延させたいと思います。
AXI がノーウェイトだったらこうなるのかな?
f0054075_20512547.png
でもって、AXI の RVALID が1サイクル遅れる時がこんな感じ。
f0054075_20593847.png
最後に、リクエストすら受け付けてくれない場合。
f0054075_21021808.png


[PR]
by tom01h | 2017-11-18 22:47 | PCとか | Trackback | Comments(0)

V-scale chip 更新はじめ

Vivado が Fall Creators Update で起動しない問題は この情報 を参考に解決できました。
とりあえず、V-scale の Vivado IP 化の準備としてメモリインタフェースをAHBもどきから同期SRAMもどきに変更しました。
合成してみると、Dが遅れるために面倒になっていたメモリ周りのスラックが緩和されたおかげで、FPU のスラックがトップに躍り出ました。
FADD 用のアラインメントシフタから加算までのパスと、正規化シフトから丸めてレジスタに書き込むまでのパスです。
やっぱり FPGA ってシフタが遅いのかな?粗粒度でも細粒度でも、リコンフィギュアラブルってこんな感じですよね?
アラインメントシフタは前のサイクルがスカスカなので論理を移動すれば対策できそうです。
正規化シフトは、サブノーマル出力のための回路を工夫すればよいと思っています。
まだ動かない対策をして試しただけですが、4ns スラックくらいまで行きそうな感じです。
しかし、久々に ARTY で動かしてみたら結構はまってしまった…

[PR]
by tom01h | 2017-11-15 00:46 | PCとか | Trackback | Comments(0)

V-scale SubSystem 構想

V-scale chip を Arty Z7 に移植していないのは、どうしてもわからないことがあったためで…
ボード上の USB-UART って、PL からアクセスできるの?
これって、PS MIO Pin につながっているので、PL の UART ロジックからは使えないですよね?
じゃあ、PS の UART を使えば良いじゃないですか。PS の UART は GP0 からアクセスできるよね?
理屈の上ではそうなんでしょうが… と思って色々調べていたんだけど、やっとそれっぽい解が見つかった気がします。

ここ での似たような質問が解決しているようです。
そもそも、 Xilinx が サンプル を示しているみたいですね。ただ、これ見ても全然わからないけど…
でも、こんなにわかりやすい 手順 を書いてくれる親切な人がいるんですね。

とりあえず、いずれ試してみるぞ宣言。
その前に、V-scale SybSystem 作るぞ宣言。

V-scale のメモリアクセスポートは、単純な同期 SRAM もどきに変更 (Dを遅らせない)。
X-bar のマスターポートは V-scale の命令とデータ用に2個。
スレーブポートは SRAM 用2個と AXI 用1個。
AXI用だけ READY 制御ありにしようかと思います。

これを Vivado IP 化して、AXI インターコネクトと、AXI Uartlite につないでチップにする。
これが Arty で動いてからその先のことを考えようと思います。

[PR]
by tom01h | 2017-11-11 21:03 | PCとか | Trackback | Comments(0)

Fall Creators Update

新たに購入した TransBook は Ubuntu をインストールせずに Fall Creators Update を待っていたのですが、待ちに待ったアップデートが来ました。
もちろん自動アップデートが来たわけじゃなくて、マイクロソフトのサイトから手動でダウンロードしてきました。
アップデート後は、ストアの Ubuntu をインストールして、RISC-V ツールに必要なパッケージを apt install して、RISC-V のツールは後回しで、Ubuntu とは関係ないけど、Emacs(Windows用)もインストールしました。
wsl-terminal もストア版 Ubuntu に対応済みのようです。

[PR]
by tom01h | 2017-10-18 23:59 | PCとか | Trackback | Comments(0)

TransBook T304UA

ASUS の TransBook T304UA 買いました。
どこから見ても Surface です。
f0054075_21143526.jpg
ただいま Windows Update 中…
とりあえず、Fall Creators Update 来るまでは Ubuntu 周りのインストールはしないで待つかな。
Python は Windows 上のを使ているのでインストール済です。
買ってすぐ2000円値下がりしたのは内緒。

[PR]
by tom01h | 2017-10-03 21:18 | PCとか | Trackback | Comments(0)

CuPy を使いたい

PyCUDA が役に立ちそうもないので、Chainer のおまけ?の CuPy を試してみた。
こっちの方がインストールが簡単みたいです。
ここら辺のソフトはどんどん新しくなっているので、ちょっと古い情報だと Windows では使えないとか書いてあって惑わされます。
で、import cupy as cp って書いて、 np. を cp. に書き換えていくだけで動いた。
でも、高速化するためには dtype=np.float32 も付けた方が良いみたいです。
そして、2倍以上に高速化されたっぽいです。
よく10倍以上とか書いているけどそこまではいかず。ネットが小さすぎるんでしょうかね?

[PR]
by tom01h | 2017-09-21 23:52 | PCとか | Trackback | Comments(0)

PyCUDAを使いたい

dot演算で行列積を求めてくれないっぽいです。
役に立ちそうにありません。


DeepLearing の勉強を始めたし、別にこのために買ったんじゃなかったんだけど、GPUを使えるようにしたい。
正直排熱とか心配なんだけど、やっぱりこのままでは時間がかかりすぎる。

ちょっと古い情報でバージョン違いとかあるみたいだけど ここ を参考にした。
なんで Visual Studio とか必要なんだろう?ってただなんだ、今時すごいね。
んで、pip install しようと思ったら…

error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools": http://landinghub.visualstudio.com/visual-cpp-build-tools
えぇ~~っ、Visual Studio は最新版使っちゃダメなんじゃん。っていうか、コンパイル済みのPyCUDAとかないの?
くそぅ。毎日毎日何ギガバイトも…
で、やっぱり上手く行かない
fatal error LNK1158: cannot run ‘rc.exe’
こんな方法で良いの?で、とりあえずインストールできたみたい。

[PR]
by tom01h | 2017-09-20 23:23 | PCとか | Trackback | Comments(0)
Normalizer のシフト判定は前段シフトの結果を使って判定していたのですが、前々段の結果に前倒しすることでちょっとだけ論理が増えますがスラックが -6ns を割るところまで高速化しました。ここまでくるとドングリの背比べになって、本当に遅いのがどこなのか分からなくなります。ただ、非正規化数出力のための仕組みを外すと、ちょっとだけ早くなりそうなので、別の方式を思いついたら試してみようと思います。

次に、何か所にもコピーされてしまっているアラインメントシフタを1本化しました。ちょっとだけ小さくなってる。
|23 | md |vscale_mul_div | 3232|

最後に、32ビット加算器を3個連結して96ビット加算器として使っている部分を、2連結までに戻します。実際問題として、3連結が必要なのは、FMADDの加数をシフトする時で、かつ、-1倍した時のキャリーが発生する時だけです。V-scaleの乗算器は遅いので、下位の32bitを前もって-1倍しておくことも可能です。で、とってもわかりにくいものになりましたが、スラックもトップ10にはFPUは出てこなくなって -5ns 付近まで減少、面積も以下のごとく。
Report Instance Areas:
+------+---------------+----------------+------+
| |Instance |Module |Cells |

+------+---------------+----------------+------+
|1 |top | | 7667|
|18 | vscale |vscale_core | 7081|
|19 | pipeline |vscale_pipeline | 7076|
|20 | csr |vscale_csr_file | 1305|
|21 | ctrl |vscale_ctrl | 2038|
|22 | fregfile |vscale_fregfile | 92|
|23 | md |vscale_mul_div | 3157|
|24 | regfile |vscale_regfile | 71|

[PR]
by tom01h | 2017-09-15 15:16 | PCとか | Trackback | Comments(0)
ADD,SUB,MUL に続いて MADD もバークレーテストフロートで検証しました。動作モデルがあったので、とりあえず動くものはあまり頭を使わなくても作れます。が、スラックは -7ns をこえました… そして、恐ろしく大きくなっている。

最新版
Report Instance Areas:
+------+---------------+----------------+------+
| |Instance |Module |Cells |
+------+---------------+----------------+------+
|1 |top | | 7941|
|18 | vscale |vscale_core | 7355|
|19 | pipeline |vscale_pipeline | 7349|
|20 | csr |vscale_csr_file | 1634|
|21 | ctrl |vscale_ctrl | 1639|
|22 | fregfile |vscale_fregfile | 133|
|23 | md |vscale_mul_div | 3463|
|24 | regfile |vscale_regfile | 71|
|25 | vscale_xbar |vscale_xbar | 36|
+------+---------------+----------------+------+

整数MUL/DIV高速版
+------+----------------+-----------------+------+
| |Instance |Module |Cells |
+------+----------------+-----------------+------+
|1 |top | | 5044|
|17 | vscale |vscale_core | 4485|
|18 | pipeline |vscale_pipeline | 4482|
|19 | csr |vscale_csr_file | 1567|
|20 | ctrl |vscale_ctrl | 1045|
|21 | imm_gen |vscale_imm_gen | 1|
|22 | md |vscale_mul_div | 1430|
|23 | regfile |vscale_regfile | 60|
|24 | src_a_mux |vscale_src_a_mux | 32|
|25 | src_b_mux |vscale_src_b_mux | 37|

オリジナル
+------+----------------+-----------------+------+
| |Instance |Module |Cells |
+------+----------------+-----------------+------+

|1 |top | | 4475|
|17 | vscale |vscale_core | 3916|
|18 | pipeline |vscale_pipeline | 3913|
|19 | csr |vscale_csr_file | 1562|
|20 | ctrl |vscale_ctrl | 1135|
|21 | imm_gen |vscale_imm_gen | 1|
|22 | md |vscale_mul_div | 777|
|23 | regfile |vscale_regfile | 60|
|24 | src_a_mux |vscale_src_a_mux | 32|
|25 | src_b_mux |vscale_src_b_mux | 37|

ちなみに、fnmadd と fmsub と fnmsub は、テストフロートにないので検証が弱そうです。仕様書を見た感じでは fnm… はネゲート後に丸めるので良いのですよね?まぁ、近傍丸めでは差は出ないんですけど。

[PR]
by tom01h | 2017-09-14 21:00 | PCとか | Trackback | Comments(0)