FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

2016-05-01から1ヶ月間の記事一覧

GoogleのビルドツールBazelの勉強(genruleによるファイル自動生成の仕組み)

前回のBazelの試行で詰まったのは、例えば.cppファイルをrubyか何かのスクリプトで自動生成するとき、そのルールをどうやって記述すればいいの?ということだった。 そのあたりを突き詰めて考えてみる。 Bazelによるカスタムルールの作成方法 例えば、A.rbと…

GoogleのビルドツールBazelの勉強(BUILDファイルの文法的な部分について)

前回にBazelの勉強をちょっとだけして、そういえば中途半端に終わらせてしまっていた。 msyksphinz.hatenablog.com 前回のBazel初期評価では、比較的小さめのプロジェクトではビルド開始に必要な時間が長くなってしまうこと、高速ビルドの利点を生かせないこ…

RISC-V向けISSの修正(32ビットモードと64ビットモードの混在)

RISC-V向けISSでは、32ビットモードと64bitモードを1つのオプションで混在できるようにしている。 ここ最近、32ビットモードでベンチマークを走らせてどうしても動かない場所があったのだが、突き詰めていくとアドレス計算と符号拡張のところにバグを仕込ん…

CSRのVerilogモデルを自動生成するためのジェネレータ

RISC-V対応のパイプラインプロセッサをちまちま作ってみている。基本的な命令発行制御などはできるようになってきたが、プロセッサとしてベンチマークなどを動作させるために必要になってくるのは、やはりシステムレジスタの実装だ。 RISC-Vのシステムレジス…

SyntaxNetを使って日本語の構文解析にトライ(2. 日本語文章のトレーニング)

前回、サンプルの日本語のトレーニングが終了したので、今度は通常の日本語を入力して、上手く解析できるか挑戦してみる。 msyksphinz.hatenablog.com 例えば、以下のような日本語を解析してみる。SyntaxNetでは、日本語の入力ではCONLL形式での入力が必須(o…

SyntaxNetを使って日本語の構文解析にトライ(1. サンプルCONLLデータのトレーニング)

SyntaxNetを使ったチュートリアルで、おおよそSyntaxNetへの学習のさせ方が分かってきた(ただしコマンドを並べているだけだけど...)。 msyksphinz.hatenablog.com msyksphinz.hatenablog.com ここまで来たら、どうにかして日本語の構文を学習させてみたい。U…

Understanding the detailed Architecture of AMD's 64bit Core "Chapter-3: Opteron's Data Cache and Load/Store Unit"の翻訳が完了

前々から勉強のために翻訳している、"Understanding the detailed Architecture of AMD's 64bit Core"の第3章「Opteron's Data Cache and Load/Store Unit」をとりあえず翻訳完了した。 かなり誤訳とか、分かりにくいところがあると思うが、そこはボチボチ直…

SyntaxNetを使った構文解析のチュートリアルに挑戦(2)

前回に続き、今度は実際にチュートリアルを使用して構文解析に挑戦する。 英単語のタグ付けまでが完了しており、その時のモデルパラメータは128-0.08-3600-0.9-1として登録してある。 まずはローカルトレーニングだ。ローカルトレーニングは、以下のコマンド…

SyntaxNetを使った構文解析のチュートリアルに挑戦

SyntaxNetを使い、英文の各単語にタグ付けを行うところまで完了した。これにより、サンプルの英文に対して、各単語がどのような意味を持つのか(名詞、動詞など)を解析し、表示できるようになった。 msyksphinz.hatenablog.com msyksphinz.hatenablog.com msy…

ReadyとValidを制御するためのSkid Buffer

通常のデジタル回路設計において、特定のブロックとの信号をやり取りするのに、ReadyとValidを使うことができる。 Validは送信元がデータ送信を示すのに利用し、Readyは送信先のユニットがデータ受け入れ可能であることを示す。 ReadyとValidの制御について…

SyntaxNetで学習させたモデルを使って英文の文法識別に挑戦

前回で、SyntaxNetを用いた文法の学習と、簡単なテストは完了した。 msyksphinz.hatenablog.com これ、普通のテキストを入力して学習させることは可能だろうか?挑戦してみよう。 前回使った、トレーニングのモデルを応用すれば簡単に実現できそうな気がする…

Googleの言語構文解析ツールSyntaxNetを試行(ツールの改造と学習試行)

msyksphinz.hatenablog.com 前回の続き。 前回は、一応インストールが完了し、基本的な学習方法を調査したのだが、実際に試行してみるとエラーが出てきたのだった。 1. カテゴリ分類時のエラーを除去するための再ビルド エラーとなったのは、学習対象の Univ…

Googleの言語構文解析ツールSyntaxNetを試行(CONLLの理解)

前回はSyntaxNetを使って何か構文解析を試行しようとして、上手くいかなくて終了したのだった。 msyksphinz.hatenablog.com よくよく読んでみると、CONLLというフォーマットの資料を利用して構文解析ツールのトレーニングをしてやる必要があるらしい。 CONLL…

Googleの言語構文解析ツールSyntaxNetを試行(チュートリアルを試行したが上手くいかない)

前回はSyntaxNetのインストールと最初の試行で終了したが、今回は中身について簡単に見て行こう。 msyksphinz.hatenablog.com とは言っても、まだチュートリアルを完全に読了できていないので試行錯誤にはなるが。 SyntaxNetが構文解析をする仕組み チュート…

Googleの言語構文解析ツールSyntaxNetを試行(インストール)

またしてもTensorFlow系の派生形ツールが登場した。SyntaxNetというツールらしい。 いわゆる自然言語構文を解析するツールで、解析精度はGoogleいわくかなり高い。 Google Open Source Blog: Announcing SyntaxNet: The World’s Most Accurate Parser Goes O…

RISC-Vのptパタン(timer付きパタン)の調査

画像: UCB-BAR: RISC-V Instruction Set Architecture より。 ISSにRISC-Vのタイマー機能を搭載したら、pt系のパタンが軒並み落ちるようになった。 もともとあまりカバーしていなかった部分なので、これを機にパタンが通るように修正しようとしたのだが、だ…

RISC-VパタンをPASSさせるためのいくつかのISS修正(AMO命令)

画像: UCB-BAR: RISC-V Instruction Set Architecture より。 RISC-Vにおいて、アトミック命令としてAMO命令群が存在している。これは、 メモリリード データ操作 メモリライト、レジスタアクセス をアトミックに実行する。例えば、AMOSWAP命令は amoswap.w …

ISSの多倍長演算命令の修正

RISC-Vには64bitの乗算など、通常の計算の範囲では追いつけないような演算も含まれている。 例えば、MUL命令やMULHSU命令などは、64bitのデータ同士の演算であり、MULHは演算結果の128bitのうち上位の64bitを返してきたりする。 これらの演算をサポートする…

ISSのテストパタンでハマったところ修正

画像: UCB-BAR: RISC-V Instruction Set Architecture より。 久しぶりにISSのメンテナンスをしていたのだが、結構落ちているパタンがある。これをメンテしていると、いろいろ考えなければならないところがあって実装をちょっとずつ変更していった。 整数の…

例外が発生した場合のステータスの処理

画像: UCB-BAR: RISC-V Instruction Set Architecture より。 これまでいくつかのパタンでRISC-VのISSでPASSしていなかったものがあるのだが、今日は久しぶりにその修正をしていた。 RISC-Vには、例外が発生した場合の処理について、いくつかのパタンが存在…

C++ビルド環境としてのBazel導入試行

C++

現在、自作ISSのビルド環境としてはCMakeを利用している。 CMakeの良いところは、 マルチプラットフォーム (ただしISSの開発においては特にこの利点が生かされているわけではない) テキストファイルによるビルド環境管理 (オプション、ファイル一覧などをテ…

GCC-6.1がリリースされたのでVagrantに開発環境を構築する(x86用)

GCC

前回の続き。前回はMIPS用に開発環境を構築したが、今回はx86用に開発環境を構築しよう。 msyksphinz.hatenablog.com いろいろと試行していたが、結局ライブラリ類はどのように用意すればよいのかわからなくて試行錯誤していたのだが、検索していると良いも…

プロセッサにおけるアウトオブオーダの考え方について(リオーダバッファの考え方について)

前回プロセッサにおけるアウトオブオーダの考え方について(リネームレジスタの例外時の処理について) - FPGA開発日記の続き。引き続きプロセッサのアウトオブオーダの仕組みについてまとめていく。 リオーダバッファとは リオーダバッファは、アウトオブオー…

RTLにおける検証用トレース機能の実装

RISC-VのCPUを作るにあたり、どのように検証するかということだが、基本的にISSとの一致検証を行うことになる。 この場合、まずはRTLの生成したトレースファイルとISSのトレースファイルを一致させることになる。 ISSのトレースファイルは、普通のログファイ…

ディスプレイスタンドを買った

一日の大半はコンピュータを触って過ごしているので、肩がこるのはもちろん、ディスプレイの位置も良くないのか、首が痛くなることが多い。 また、僕の家の机はあまり広くないので、ディスプレイとキーボードを置くと机が埋まってしまう。 そこで、前から欲…