FPGA開発日記

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

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

Vivado SimulatorでのFPGA Primitiveモジュールの指定方法

Vivado Simulatorにおいて、XilinxのIPを使ってシミュレーションをしようとしたところ、Primitiveなモジュールが存在しないと怒られてしまった。 ERROR: [VRFC 10-2063] Module <GND> not found while processing module instance <GND> [... funcsim.v:2047] GND GND </gnd></gnd>…

Vivado Simulatorを使ってシミュレーションを行う環境を立ち上げる(Mingwで挑戦)

以前、CMakeを使ってVerilogシミュレーションの環境を整える準備を行った。趣味でVerilogを書いている中で、Windows上のVivadoでシミュレーションを行う必要が出てきたため、環境を構築しよう。 msyksphinz.hatenablog.com 利用したのは、Cygwinから若干進化…

RedPenを使って自分の文章を校正してみる

僕はどちらかというとドキュメントを書くのが好きだ。ドキュメントって、正直言うと何も考えずに書くことができる。普段プログラムを書いたり回路を設計しているときは、頭を回転させないとちゃんとしたものが作れない。しかし、仕様書とかドキュメントって…

GCCのインラインアセンブラの構文について調査

GCC

xv6には、以下のような記述がある。 github.com static inline void insl(int port, void *addr, int cnt) { asm volatile("cld; rep insl" : "=D" (addr), "=c" (cnt) : "d" (port), "0" (addr), "1" (cnt) : "memory", "cc"); } インラインアセンブラだが…

xv6を移植するときに書き換えるルーチンについて調査(1)

xv6

xv6はx86をベースに書かれている。当然、プリミティブな部分はx86の命令を使って記述されているのだが、その部分をしっかり理解すれば、他のOSへの移植も簡単に行うことができるのではないだろうか。 今回は、xv6をRISC-Vに移植することを前提に、xv6のどの…

Visual Studio Codeがオープンソース化されたのでソースからビルド(成功)

以前Visual Studio Codeがオープンソース化されたときに、フルスクラッチでビルドしようとして失敗したのだった。 msyksphinz.hatenablog.com あれからずいぶんと時間がたったが、結局フルスクラッチビルドできるようになったのだろうか?久しぶりに挑戦して…

C++11でのusingとenum classについての調査

C++

出張で飛行機に乗っている間、久しぶりにC++の本を開いて、自分の知らないC++の使い方について調査していたのだが、C++11の新機能として、いろいろと簡単に書き換えられそうなものがある。 Effective Modern C++ ―C++11/14プログラムを進化させる42項目作者:…

RISC-Vのbenchmarkパタンセットを動作させる

RISC-VのGDBの動作を検証するために、benchmarkプログラムを動作させてみよう。RISC-Vのベンチマークセットは、riscv-testsに格納されている。 github.com これを動作させてみるために、コンパイルおよび動作の調査を行ったのだが、見たことないシステムレジ…

RISC-VのGDBのビルドとISSの対応

RISC-V向けにxv6の移植に挑戦したくて、そのためにはRISC-VのGDBの対応を考えないとデバッグがつらい。 いろいろ調査していると、RISC-V向けのGDBの移植が進んでいるようだ。早速使ってみよう。 1. RISC-V向けGDBのビルド 以下のリポジトリを落としてきて、…

UbuntuでGPGPU+TensorFlowを実行

前回前々回と、仮想マシン上でどうにかしてGPGPUを認識させようと努力してきたのだが、そもそもネイティブなLinux上でGPGPUがちゃんと認識されているのか、今一度確認することにした。 Hyper-VやESXiを使わずに、そのままLinuxをインストールして、CUDAを使…

VMware vSphere ESXiを試す + GPGPUの認識に挑戦

VMware vSphere ESXi を試してみよう。目的は、WindowsとLinuxを同時に起動して、GPGPUが扱えるかテストすることだ。 msyksphinz.hatenablog.com 1. VMware vSphere ESXiの仕組み。 ここで、VMware ESXiのプログラムを起動したとき出てくるイラストを見てみ…

Hyper-V経由でGPGPUを利用することは無理?

このあたり、まったくの無知だったのだが、Hyper-V経由でGPUを利用するのはやっぱり無理なのか。 やりたいことは、Hyper-V上にUbuntuをインストールし、GPUを有効化し、TensorFlowやCNTKを動作させることだった。 しかし、どう頑張っても、GPGPUを認識させる…

Hyper-V上のUbuntuにTensorFlowのインストール

Hyper-VにUbuntuをインストールし、GUIが嫌いなので基本的にCygwin上からSSHでアクセスできるように設定したい。 それにしても、Hyper-Vが導入したいからWindows10にバージョンアップしたとは言え、、、この重さはなんなんだ。。。メモリも馬鹿食いだし、あ…

Windows10を導入した

しばらくWindows7を使っていたのだが、今回分け合ってWindows10をインストールした。初Windows10だ! 早速導入しているのはCygwinである(笑) 導入した理由はHyper-Vを使ってみたいから。Vagrantのような仮想マシンも良いけど、ハイパーバイザー型の仮想化も…

RISC-Vのアドレス変換機能であるSV39の仕組みと実装

やっとこさ、RISC-VのMMUの実装が完了した。理解するまでに長かった。。。 一応、まとめておいた。RISC-VのMMUの変換の仕組みの概要を示している。 docs.google.com RISC-Vのアドレス変換モードはいろいろあるのだが、ここではSv39と呼ばれるものを示してい…

RISC-Vのテストベンチにおけるページテーブルの構成について

RISC-Vのページテーブルを作っていて、riscv_testsでテストしようとしたのだがつまづいた。 vmモードのテストパタンでは、実際のテストを実行する前に、テストパタン上でページテーブルを作成している。 それが、vm_bootとよばれる関数だ。 github.com void …

RISC-Vにおける動作モードの管理

前回の日記で、RISC-Vにおける動作モードの管理が良く分からないと書いたが、良く考えるとちゃんと仕様書に書いてあった。 RISC-Vでは、システムレジスタであるmstatusを使って複数の動作モードの遷移を管理している。 このルールに基いて、特権モードを移行…

RISC-VのMMUにおけるアクセス権限について

RISC-VのISSの実装の続きをしているが、まだまだ謎が多い。アドレス変換のために、RISC-Vでは複数のアドレス変換モードを持っている。 Draft Privileged ISA Specification v1.7 - RISC-V Foundation Sv39: Page-Based 39-bit Virtual Address System このSv…

32ビット以上のメモリアクセスをシミュレートする機能を実装

前回の続きで、結果的にメモリ渡しの部分が間違っていたため、動作していない部分があった。 データ形式の変換については、よく分からない部分が多いので、memcpyで変換しながらコピーするようにした。 github.com MemResult RiscvEnv::LoadFromBus (Addr_t …

32ビット以上のメモリアクセスをどのようにしてISSでシミュレートするか検討

RISC-VのISSで、MMUの実装を検討している。その中で、MMUのテーブルサイズは64ビットとして定義されているが、これまでは、これを32ビットアクセスの2回として実現していた。 しかし、やはり実際には、64ビットアクセスは一度のアクセスとして実現したい。と…

Ubuntu on ZedBoardでCoremark性能計測

折角ZedBoard上でUbuntuが動作するようになったので、性能計測の基本、ベンチマークソフトウェアを動作させて、ZedBoard上のCortex-A9の性能を評価してみよう。 ちなみに、性能測定については、以前ZedBoardを動かしたときにCoremark-1.0を使って実施してい…

Ubuntu on ZedBoardにTensorFlowインストールに挑戦(Nano版を使う)

前回の続きだが、今回はより小さなパッケージであるNanoを利用してコンパイルに挑戦した。 Linaro Releases 結果としては失敗だったのだが、一応記録として残しておこう。 msyksphinz.hatenablog.com 1. ネットワークの立ち上げ 下記のサイトに説明があると…