FPGA開発日記

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

2016-01-01から1年間の記事一覧

FSBLを構築するスクリプトを自動化

これまで、Zynq ZedBoard向けにLinuxを作成する環境はいくつか構築してきたが、ちゃんとした自動化スクリプトを構築していなかった。 msyksphinz.hatenablog.com msyksphinz.hatenablog.com このさい、VagrantとChef-soloを利用して、ZedBoard向けのLinux環…

スマホ向けVRメガネ VOX gear+ を購入してみた

世の中ではPlaystation VRが発売されたらしいが、そんなものを買うお金は持っていない。 PlayStation VR PlayStation Camera同梱版出版社/メーカー: ソニー・インタラクティブエンタテインメント発売日: 2016/10/13メディア: Video Gameこの商品を含むブログ…

CPUのパイプライントレースビューアGem5 (RISC-V BOOMプロセッサのパイプラインを分解)

CPU

RISC-V BOOMプロセッサの試行をしていると、パイプライントレースの出力方法としてgem5というものを利用していた。 github.com gem5というのは何なんだろう?調査してみる。 The gem5 Simulator: A modular platform for computer-system architecture resea…

RISC-Vで実機動作可能な実装まとめ

RISC-Vは、様々なグループ、団体がその実装を行っており、RISC-V Workshopではいくつかの実装の発表も行われている。 そこで、現時点で一般ユーザが入手可能なRISC-Vとしてはどのようなものがあるか、ここでまとめておきたい。 この記事は情報がアップデート…

FreeBSD 11.0でのRISC-V環境生成試行 (4. RISC-V QEMUのビルド)

(画像はriscv.org, freebsd.orgより拝借) RISC-V向けQEMUのビルドでハマったのでメモしておく。 基本的には以下のページを参照してビルドすれば良いのだが、いくつかハマる点がある。パッケージのインストールが必要なのと、環境変数の設定だ。 riscv - Free…

RISC-V BOOMについて (2. ビルド試行とVagrant環境構築)

(画像は riscv.org より拝借) RISC-V BOOMについて、環境構築を行っている。例によってVagrant上にRISC-V BOOMのビルドを行うことのできる環境を作っておきたい。 前回のFreeBSD on RISC-Vの環境と同様に、Vagrant上の環境を作成したのでメモしておく。 msyk…

FreeBSD 11.0でのRISC-V環境生成試行 (3. Vagrantでの環境構築完成)

(画像はriscv.org, freebsd.orgより拝借) 前回、FreeBSD 11.0のRISC-V環境構築を試行したのだが、うまく行かなくて止まってしまっていた。 msyksphinz.hatenablog.com 結局RISC-Vのメーリングリストに質問して、うまく行く方法が分かった。Vagrantの環境を構…

Imaginationのマルチクラスタに対応した最新MIPSコアI6500

ちょっと前の話になるが、MIPSプロセッサの開発を行っているImagination Technologiesが最新MIPSコアを発表した。 imgtec.com I6500というプロセッサで、"M","I","P","S"シリースでは中間にあたるコアになるのかな?特徴としては、以下のようなものが上げら…

RISC-V BOOMについて、とビルド試行 (1. チェックアウトとビルド、シミュレーションまで)

RISC-Vについては様々な団体からISAを実装したプロセッサコアが登場していうが、そもそもRISC-Vを提唱した Berkeley が開発したRISC-Vプロセッサコアは、以下の2種類であるという理解でいる。 RocketCore BOOM (Berkeley Out-of-Order Machine) RocketCoreに…

FreeBSD 11.0でのRISC-V環境生成試行 (2. ツールチェインがビルドできない問題点)

(画像はriscv.org, freebsd.orgより拝借) msyksphinz.hatenablog.com FreeBSD 11.0でRISC-Vアーキテクチャがサポートされたとのことで、休日にビルド試行を行っていたのだが、どうもまだうまく行かない。 FreeBSDの仮想マシン上でRISC-Vのツールチェインをビ…

FreeBSD 11.0ではRISC-Vをサポートしている (環境構築試行)

(画像はriscv.org, freebsd.orgより拝借) The FreeBSD Project FreeBSD 11.0-RELEASE Announcement FreeBSD 11.0がリリースされた。アーキテクチャのサポートとして、ARM64およびRISC-Vのサポートが追加されたらしい。 FreeBSDは、昔から積極的にRISC-Vをサ…

Vivado 2016.3がリリースされました

たまには「FPGA開発日記」らしくFPGA関連の話題を。 Vivado 2016.3がリリースされた。主な変更内容としては、 Vivado Design Suite User Guide Release Notes, Installation, and Licensing https://www.xilinx.com/support/documentation/sw_manuals/xilinx…

L1キャッシュを制御するためのステートマシン調査

CPU

L1キャッシュは、具体的にはどのようにして制御をしたらいいのだろう? まずはサンプル回路を使って、制御シーケンスを調査してみよう。 対象とするのは、パタヘネで解説してあるL1キャッシュのシーケンサだ。 コンピュータの構成と設計 第5版 上作者: ジョ…

VagrantでBashの入っていないOSをプロビジョニングする際の注意点

Vagrantには、仮想マシンを構築する際にプロビジョニングという、仮想マシン上のOSに対してさまざまな処理を実行することができる。 このプロビジョニングの機能を使って、例えば仮想マシン上のOSにソフトウェアをあらかじめインストールしたり、環境を構築…

シンプルなL1キャッシュをVerilog実装する(1. シンプルなモデルを調査)

CPU

CPUにシンプルなL1キャッシュを実装する。単純なダイレクトマッピングで、最初はレイテンシについてもあまり考えない。 ヒットミス判定が正しく行え、正しくデータをパイプラインに流すことができることを至上命題としよう。 まず、いろいろ調査していると、…

Vivado-HLSとAXI4-DMAの試行(4. Vivado-HLSのリファレンスデザインを試行する)

AXI4-DMAの試行をしているが、どうもうまくいかない。Vivado-HLSのリファレンスデザインを試行してみることにした。 試行するのは、xapp1170のリファレンスデザインだ。どうやらVivado 2015.2 での実装で確認されているらしい。そこでVivado 2015.2をインス…

Epiphany-V: A 1024プロセッサコアについて

CPU

Parallelaからリリースされた1024コアのプロセッサについて。 上記画像はAdaptevaのブログより引用。https://www.parallella.org/2016/10/05/epiphany-v-a-1024-core-64-bit-risc-processor/ Epiphany-V: A 1024-core 64-bit RISC processor | Parallella 10…

Vivado-HLSとAXI4-DMAの試行(3. Vivado-HLSのカスタムIPをSDKから制御する)

AXI4-DMAを試行している。Vivado-HLSでカスタムIPを作成し、Vivado-HLSのコアをAXI4-Streamで接続し、SDKから制御できるようになりたい。 前回、VivadoにカスタムIPをインプリメントし、デザインを生成した。次にSDKを使って制御してみる。 msyksphinz.haten…

Vivado-HLSとAXI4-DMAの試行(2. Vivado-HLSのカスタムIPをVivadoにインポートして接続する)

前回に、Vivado-HLSで作成した浮動小数点行列積回路をAXI4-Streamに対応させた。今度はVivado側で、作成したIPをDMAに接続して、デザインを作成してみよう。 msyksphinz.hatenablog.com msyksphinz.hatenablog.com msyksphinz.hatenablog.com 参考にしたのは…

Vivado-HLSとAXI4-DMAの試行(1. Vivado-HLSデザインをAXI-Streamインタフェースに対応させる)

前回行列乗算回路を最適化することで、ソフトウェアと比較して大幅に性能を向上させることに成功した。 msyksphinz.hatenablog.com msyksphinz.hatenablog.com その時に参照していたのが以下の資料だが、そこにはAXI4-DMAを使ったときの方法が書いてある。 h…

Vivado-HLSで書いた回路とプログラムで速度比較(2. directive挿入による性能改善)

Vivado-HLSで行列積演算回路を作成したが、この性能はあまり良いものでは無かった。 msyksphinz.hatenablog.com その後いろいろ調査を行った結果、以下の資料を発見した。 以下の資料は、その名の通り浮動小数点行列積をVivado-HLSで実装したときの最適化ガ…

Vivado-HLSで書いた回路とプログラムで速度比較(1)

Vivado-HLSで行列積の回路を設計した場合と、普通にARM Cortex-A9上で動作する行列積のプログラムでどれくらいの速度差になるのか調査してみることにした。 今回使用するのは48×48の行列データで、ころ2つのデータの行列積を計算するものとする。 for (j = 0…

FreeBSD on RISC-Vのビルド試行(1)

(画像はriscv.org, freebsd.orgより拝借) FreeBSD on RISC-Vの開発が進んでいるという話を以前紹介した。 msyksphinz.hatenablog.com これ、ちゃんとシミュレータや実機で動作させることができるらしい。そうと分かれば、自分でビルドして使ってみたい。 ris…

Bash on WindowsでChainerを動作させる

なんかツールのインストールだけで殆ど使いこなせていないのだが、TensorFlowの次にBash on WindowsにChainerをインストールしてみた。 といっても、インストール自体はpipで一発で実行可能だ。 masayuki@FIXEDESK:~$ pip install chainer Collecting chaine…

Bash on WindowsでTensorFlowを動作させる

以前、Bash on Windowsのβ版でTensorFlowを動作させるテストをした。 このときはうまく動作しなかったのだが、Bash on Windowsが実リリースされた今、インストールは出来るようになっているだろうか? msyksphinz.hatenablog.com Bash on Windowsのインスト…

CPUのテストパタンを自動生成する方式の検討

趣味でRISC-VのCPUコアを設計しているのだが、デバッグおよび性能検証を行うためのパタンが必要になる。 様々なアプリケーションを使って検証すれば良いのだが、網羅的かどうかも分からない。また、基本的な命令セットの性能検証も行う必要がありそうだ。 そ…

FreeBSD on RISC-VとRISC-V近況

FreeBSD on RISC-V あまりフォローしていなかったのだが、FreeBSDのRISC-Vへの移植が進んでいるようだ。 riscv - FreeBSD Wiki サポート状況なのだが、Spike ISSにてサポートが完了しているようだ。また、実機であるRocketChip, QEMUでのエミュレーションも…

ISSに分岐予測を実装する検討(2. 分岐予測の機構をISSに実装する)

ISS

前回で、分岐予測機構について簡単にまとめたので、今度は分岐予測をISSに実装しよう。 分岐予測の機構を実装する まずは、必要なSRAMをモデル化する。 github.com /* * Branch Predictor implementation */ const int32_t BRANCH_LOCAL_BIT = 3; const int3…

ISSに分岐予測を実装する検討(1. 分岐予測の機構について)

ISS

前回までで、ISSに命令キャッシュ、データキャッシュを実装する方法について検討し、実装した。 Verilog-HDLでCPUを実装するにあたり、まだまだ必要な機能はある。次は、分岐予測を命令セットシミュレータ(ISS)を用いて実装する機能について検討しよう。 分…

ISSにL1キャシュのシミュレーション機能の検討(3. L1命令キャッシュのモデル実装とリファクタリング)

ISS

前回までで、L1キャッシュのモデルをISSに実装したのだが、L1 データキャッシュのシミュレーションしか実装していなかった。 L1キャッシュへのアクセスは命令フェッチの際に発生する。しかも今度はL1データキャッシュと違ってストアは発生しない。この方が楽…