<   2018年 01月 ( 18 )   > この月の画像一覧

一応頑張ってみたけど、なんでこんなにぼやぼやなんだ?
f0054075_22195570.jpg
ブラッドなのはわかるけど、スーパーとブルーは写真じゃわからんねぇ。

[PR]
by tom01h | 2018-01-31 22:20 | Trackback | Comments(0)
キャラクタベースのシミュレータですが、Verilator から呼び出す gcc を Windows 用バイナリを吐くコンパイラに変更すると、Windows で実行できる zero-riscy のシミュレータを作る事が出来ます。
以前試した方法 で簡単に出来るはずでした。まぁ、とりあえず動くバイナリはできたのですが、キー入力がなんか変。
ここで ちょっとだけ触れた方法ですが、端末のローカルエコーをなくしたり、エンターキーの入力を待たなかったりする方法が、Unix と Windows では違うんですね。
Windows 用の方法を調べると conio.h と getch() の組み合わせで出来るみたい。
が、試してみると動かない。
getch() は改行を '\r' から '\n' に変換してくれないらしく、load コマンド入力で XMODEM モードに移行する部分の判定が動いていませんでした。
UART 通信の改行は '\r' が正しいはずなので、ここは合わせて修正しておきました。

[PR]
by tom01h | 2018-01-31 21:23 | PCとか | Trackback | Comments(0)
zero-riscy のオリジナル(ETH Zurich) の Verilator 用の環境は、実行命令のトレース出力機能が付いていませんでした。どうやら Verilator の System Verilog のサポートが十分じゃないらしく、Model-SIM で通る記述が Verilator ではエラーになってしまうようです。
今までは V-scale で使っていた記述をだましだまし使っていましたが、今回はオリジナルのトレースを Verilator でも実行できる記述に変更してみました。
class が無いのはしょうがないと思っていたのですが、string 型のサポートも結構足りないみたいですね。sformat とかでも使えない機能があって、インデントを合わせるために頑張ってスペースでそろえる必要がありました。すごく格好悪い。もっといい方法あったら教えてください。
また、Verilator では結構長いシミュレーションをしてしまうので、波形取得の開始・終了時刻を指定できるようにしました。グローバル変数が増えて、こっちも格好悪いですが…
Github 更新しています。

[PR]
by tom01h | 2018-01-30 22:30 | PCとか | Trackback | Comments(0)
昨日は端末の入出力エミュレーションまで完成したので、次は XMODEM エミュレーション機能を追加しました。
これで、シミュレーション上では V-scale の到達地点までたどり着きました。FPU命令は…うんまぁ…
RISC-V 版の kozos (Step6) 含めて Github に登録しました。
Verilator と RISC-V 開発環境がないと動きませんが…

[PR]
by tom01h | 2018-01-29 22:32 | PCとか | Trackback | Comments(0)
BNN 加速命令は一旦落ち着いたことにして、FPGA 環境作りに移りたいと思います。
でも FPGA に行く前に、V-scale の時に作った Verilator 用の端末エミュレータを作って検証します。
まずは今までのシミュレータの構成。デュアルポート SRAM を使ってお気楽に構成した環境です。
Model-SIM だと Test Bench が最上位階層です。Verilator だと Test Bench までが Verilog 記述で、さらにもう1階層上に C++ のテストベンチが追加されます。
f0054075_22060463.png
この構成を、V-scale の時に使っていたクロスバースイッチと 2枚のシングルポート SRAM と、シミュレーション用のダミー UART の構成に変更します。
ダミー UART は内蔵レジスタだけの構成で、入出力機能はテストベンチに実装します。
標準入力を使いたいので、Verilator でしか実現できません。
f0054075_22205017.png
V-scale の時は XMODEM エミュレーションまで作りましたが、とりあえず今日はここまで。Github に公開しました。
このシステム上で、kozos が動きます。今のところは、キー入力に反応してエラーって言ってくるだけですが…

[PR]
by tom01h | 2018-01-28 22:26 | PCとか | Trackback | Comments(0)

血圧計付き腕時計

怪しい匂いがプンプンしますが、血圧計付きの腕時計を買ってみました。
血圧が結構高めで、注意したほうが良いかなと思ったので。
で、さっそく計ってみました。時計を買っただけで血圧が下がった!
f0054075_21411588.jpg
なわけないか。役に立たんじゃん。
血中酸素濃度とやらも計れるようなので、運動しながら計ってみたいと思います。
最近運動してないけど…

[PR]
by tom01h | 2018-01-25 21:45 | Trackback | Comments(0)
zero-riscy に BNN 命令の追加が終わったので、推論プログラムに組み込んで試してみました。
正しい結果は出てきたけどあまり速くなってない。
そんな訳で、各層ごとの実行サイクルを調べてみた。
BNN 命令を使っているのは 2~4 層だけです。
ソフトの最適化の時点で、1層がここまで支配的になっているとは…
確かに BNN 命令を使っている部分はすごく速くなったけど、どうすんのこれ?
f0054075_21524829.png

[PR]
by tom01h | 2018-01-23 21:54 | PCとか | Trackback | Comments(0)
昨日に引き続き、zero-riscy に BNN を高速化する命令を追加します。
Pool 命令は funct3=2 で、rs2 からデータを入れます。
Norm 命令は funct3=3 で、rs1 からアドレスを入れます。
Active 命令は funct3=4 です。結果を rd に戻すのですが、そこら辺の制御が必要。DIV 命令でも参考にするか。

戻すデータとストールは zeroriscy_multdiv_fast.sv の multdiv_result_o と ready_o をたどっていった先にマージします。
他にも zeroriscy_id_stage.sv でマルチサイクル命令のステートマシン変更したり stall 信号を作る必要がありました。
あとは zeroriscy_decoder.sv で regfile_we を上げておくのかな。
とりあえず下の命令が正しい値を表示するので、次回からは推論プログラムを変形していこうと思います。
putx(bnn_activ());
Verilator はちまちま修正するには時間がかかりますねぇ。Model-Sim との効率よい二刀流を考えねば…
ひとまずは zero-riscy のコア だけ登録しました。

[PR]
by tom01h | 2018-01-22 21:38 | PCとか | Trackback | Comments(0)
zero-riscy に BNN を高速化する命令を追加します。
追加する回路は BNN 推論環境 で作った推論アクセラレータ回路そのものです。
まずは Init コマンドと Acc コマンドを命令にします。
とりあえず、Costom0 命令をすべて、BNN アクセラレータ命令に割り当てるくらいのつもりで始めます。
Ini 命令は funct3=0 で、rs2 からデータを入れます。
Acc 命令は funct3=1 で、rs1 からアドレスを、rs2 からデータを入れます。将来的にはアドレスは rs1+imm にしたいと思っていますが…
とりあえずここまで作って、動作確認のために下のようなプログラムを流してみました。
bnn_ini(-288);
bnn_acc(0,0);
bnn_acc(1,0);
bnn_acc(2,0);
bnn_acc(3,0);
bnn_acc(4,0x252de1b0);
bnn_acc(5,0x2d3f61be);
bnn_acc(6,0);
bnn_acc(7,0xb7ade3f3);
bnn_acc(8,0xffbfe3ff);
結果は正しいみたいですがスカスカだ…
f0054075_22282425.png
まあ、最初から分かっていたことではありますけどね。

[PR]
by tom01h | 2018-01-21 23:25 | PCとか | Trackback | Comments(0)
zero-riscy にカスタム命令を追加したいと思います。
まずは試しに ADD 命令を別のコードで実装してみます。
custom0 の命令領域を使う以外は、普通の ADD 命令と全く同じ。
コンパイラサポートはよくわからないので、とりあえずは FPGA マガジンの No18 と同じ方法、.word でアセンブラファイルに直接命令コードを書く、ちょっと格好悪い方法で良いことにしました。
とりあえずやりたいことはできている模様。
明日から BNN アクセラレータ命令追加するぞ!!

[PR]
by tom01h | 2018-01-20 23:37 | PCとか | Trackback | Comments(0)