2019年 01月 03日
フラッシュメモリの値段もだいぶ下がってきたようなので SSD を買いました。
ついでに October Update も入れておこうと思います。
[追記 なかなかうまくいかなかった…
開発者モードが悪さをしている ようです。]
▲
by tom01h
| 2019-01-03 15:57
| PCとか
|
Trackback
|
Comments(0)
2018年 08月 12日
CHUWI LapBook Air を買った。名前からして真似しています宣言をしているよなノートPCです。
その名に恥じず、見た目は結構格好良いんだけど、amazonの写真と比べるとディスプレーの枠は太いような気がします。
まずは、"バックアップと復元 (Windows 7)"を使ってディスクのバックアップを取ります。これは使わないことが多いけど念のため…
なぜか知りませんが、ドライブは 40GB と 76GB に分割されていました。
そのあと、DoubleDriver でドライバのバックアップを取ります。
ここで音が出ないことと、バッテリーが充電されていないことに気づきます。まさかの初期不良?と思ったけど、電源プラグをイヤホンジャックにさしているだけでした…
準備が出来たら、April Update を DVD から新規インストールします。
余っている SSD があるので追加してから再起動します。こいつ、M2を入れるスペースがあるのです。
DEL 連打で BIOS 画面が出るので、Boot から DVD っぽいのを選びます。
拡張インストールを選ぶとSSDをインストール先に選ぶことが出来ました。
この状態で電源を入れると、起動するOSを選ぶ画面が出てきます。もともと入っていたOSを消してしまうと、この画面でなくなるのかな?まぁ、しばらくは放っておこう。
で、SSDに入れたWindowsから起動すると…
そういえば、Double Driverでバックアップしたドライバの出番がありませんねぇ。以前は Wifi すら繋がらなくてドライババックアップが必要だったのですが、今回は標準ドライバでとりあえずはつながったみたいです。その後いろいろとダウンロードしていたみたいだけど、まだ足りなさそう。ここ から Intel のツールをインストールしてみます。 こっち のほうが良いかな?なんか、さっき入れたのよりも新しいのを取りに行っているっぽいけど、デバイスマネージャの!は取れそうもありません。
ひとまずドライバの話は放置して、WSL の Ubuntu をインストールします。あとは Emacs だのいろいろと…
▲
by tom01h
| 2018-08-12 19:37
| PCとか
|
Trackback
|
Comments(0)
2018年 06月 11日
zeroriscy の Matrix Mult 命令をパイプライン化しています。
この命令はコンパイラ対応していないので、正直いって検証がずぶずぶになってしまいます。
でも、思いつく限りはストール制御を入れておきたいと思います。変更点は
- 命令デコーダのマルチサイクル命令判定部分から mmult命令を削除
- mmult ユニットをパイプライン化
- WB ステージで待たされているレジスタアドレスの数を増やす
- mmult 命令が完了したけど EX ステージに負けてレジスタ書き込みできないときにストール
- mmult 命令実行中はロードストア命令を発行しない
4と5が思いついたストール条件です。他にもありそうなら教えてください。
github 更新しました。
▲
by tom01h
| 2018-06-11 00:31
| PCとか
|
Trackback
|
Comments(0)
2018年 06月 10日
以前 BNN 専用の命令をメモリインタフェース化した ので、zero-riscy の追加命令は行列積命令だけになりました。
それから、かつては 内積を 2つ並列に実行とか呼んでいました が、よく考えたら行列積ですよね。リンクのページに細かい事が書いてありますが、8bit 整数 3個を入力すると、8bit整数の 3×2の行列と掛けて、16bit 整数 2個が出てきます。累積できるようにもしています。飽和演算の構想もあったみたいですね。忘れていました (--)
こんなわけで命令の名前を mmult32 に変更して、モジュール名も変えたのですが、本当にやりたいことはパイプライン化です。この命令は演算に 4サイクルかかるので大きな効果が期待できます。また、この命令はコンパイラが自動で使ったりはしないので、まずはストールを検出しなくても良いソフトを書いて試してみました。やはり効果絶大で、1180519 サイクルから 787335 になりました。下は mmult32 を9回繰り返して 27×2 の行列と掛けているところです。

[追記 波形のプログラムは ここ と思ったけどちょっとだけ違った]
▲
by tom01h
| 2018-06-10 00:36
| PCとか
|
Trackback
|
Comments(0)
2018年 06月 09日
zero-riscy の Windows 用バイナリ を更新しました。
ニューラルネットアクセラレータも積んでいるのですが、8bit 整数の行列積命令はパラメータの更新が出来ないので、バイナリ配布の場合は使い物にならないですよね。
▲
by tom01h
| 2018-06-09 17:59
| PCとか
|
Trackback
|
Comments(0)
2018年 06月 08日
ロードストア命令を 3段パイプ化した影響で、ロード命令のレジスタ書き込み値のトレース出力が出来なくなっていました。このままでは不便なので、ロードしたタイミングでトレース出力する機能を追加したいと思います。
レジスタ書き込みは "レジスタ名=書き込みデータ" でしたが、ロードデータの遅延書き込みは "レジスタ名<書き込みデータ" にして区別します。
▲
by tom01h
| 2018-06-08 21:27
| PCとか
|
Trackback
|
Comments(0)
2018年 06月 07日
zero-riscy のロードストアを 3段パイプにして、シミュレーションは何とか動くようになりました。しかし、FPGA に載せようとしたら論理ループがあると言って怒られました。
デバッグストールと Illegal CSR の原因となる命令が RAW ハザードで抑止されるのですが、命令が抑止されると RAW ハザードも消えちゃうっていうありがちな奴です。どちらも、シミュレーションでは顕在化しなかったパスですね。
RAW ハザード生成を見直して、命令抑止からのパスをなくしました。見かけ上は大きな変更に見えますが、上記変更以外は既存論理を有効に使った記述に変更しただけです。
▲
by tom01h
| 2018-06-07 21:53
| PCとか
|
Trackback
|
Comments(0)
2018年 06月 06日
BNN アクセラレータの高速化も難しくなってきたので、そろそろ zero-riscy 本体に手を入れたいと思います。
zero-riscy は2段パイプの設計です。言い換えると、2段に収まらない命令はすべてマルチサイクル命令になります。具体的には、分岐、ロードストア、MUL/DIVがマルチサイクルになります。
この中で分岐はEXの資源を使い続けるのでパイプライン化の対象外です。
MUL/DIVはちょっと悩んでいるのだけどとりあえず保留して、ロードストアを3段パイプにしてみようと思います。
変更箇所はこんな感じ
- 命令デコーダのマルチサイクル命令判定部分からロードストアを削除
- ロードストアユニットをパイプライン化
- ロード結果を遅れてレジスタに書き戻す機能を追加
- RAWハザード検出
- WAW時に先行(ロードストアの)書き込みを無効化
- gnt を待つときはマルチサイクルのままにもどす
- rvalid を待つときは WBステージをストール
5番はバグのにおいがプンプンしますね。
3番について少し補足すると、レジスタの書き込みポートは増やさず、ロード結果はEXステージのレジスタ書き込みに負け、隙間をついて書き戻す方式です。昔教えてもらった方式で、バイパス機能は持たせません。
アクセラレータを使った推論プログラムの実行サイクルは、昨日のソフトの最適化で 1672165 から 1237938 になって、今日の 3段パイプ化で 1180519 になりました。
ちなみに、命令トレース出力がロード命令のレジスタ書き込み値の出力に対応出来なくなりました(--)
それから、もともと zero-riscy ってなぜかミスアラインアクセスに対応していたと思うのですが、良く分からないので取っちゃいました。
▲
by tom01h
| 2018-06-06 22:55
| PCとか
|
Trackback
|
Comments(0)
2018年 06月 05日
BNN アクセラレータの高速化も難しくなってきたので、そろそろ zero-riscy 本体に手を入れたいと思っています。
まずは、ロードストアを3段パイプにしたいのですが…
tests は通るのですが、kozos ブートローダが動かない。というか、バスに待たされるとダメみたいです。
なかなかうまく出来ないので、まずは理解の妨げになっているミスアラインアクセス機能を削除しました。
それと、拡張命令を使った BNN 推論プログラムの第1層の畳み込みの最適化がいまいちだったので更新しました。
ついでに、axi ブリッジのリタイミングはレスポンス側だけで、リクエスト側は素通しなのに気付きました。確かに変なタイミングパスが見えていたんですよね。
▲
by tom01h
| 2018-06-05 22:47
| PCとか
|
Trackback
|
Comments(0)