FPGA開発日記

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

2017-10-01から1ヶ月間の記事一覧

RISC-Vの命令セットシミュレータSpikeでRoCCインタフェースを実装する

UCBの開発しているシミュレータSpikeは、RISC-Vの命令セットをシミュレーションすることのできるISSで、サイクル精度を出すことはできないが最初のアプリケーションのデバッグに有用なツールだ。 そして、RISC-Vにはカスタム命令 (custom0 - custom3)が用意…

RISC-Vの命令セットシミュレータSpikeでもRoCCインタフェースがシミュレーションできる?

UCBの開発しているシミュレータSpikeは、RISC-Vの命令セットをシミュレーションすることのできるISSで、サイクル精度を出すことはできないが最初のアプリケーションのデバッグに有用なツールだ。 そして、RISC-Vにはカスタム命令 (custom0 - custom3)が用意…

Rocket ChipにはDual Coreのコンフィグレーションがある(1. シミュレーション試行 & Vivado合成試行)

UCBの開発したRISC-V実装であるRocket Chipは基本的にシングルコアのモードで動作させるが、よく見るとデュアルコアのモードも存在する。 rocket-chip/src/main/scala/system/Configs.scala class DualCoreConfig extends Config( new WithNBigCores(2) ++ n…

MicroPython試行(2. RISC-V移植環境の調査)

micropython/micropython: MicroPython - a lean and efficient Python implementation for microcontrollers and constrained systems via kwout MicroPythonは一つの題材なのだけれども、いろんなアプリケーションを移植してRISC-Vで動作させれば、少しは…

Environment Modulesを使ってRISC-Vのツール群を整理する環境構築

RISC-Vのツール群、主にコンパイラツールは32bitと64bitのものが存在する。それぞれにライブラリが定義されており、別々にディレクトリを用意してインストールするのが良いと思われる。 ビルドスクリプトも別々に用意されている。 riscv-tools/build.sh # 64…

MicroPython試行(1. ダウンロードとビルド → RISC-Vツールチェインでコンパイルするとどうなる?)

ちょっとやりたいことがあって、MicroPythonをダウンロードしてビルドした。 github.com micropython/micropython: MicroPython - a lean and efficient Python implementation for microcontrollers and constrained systems via kwout sudo apt install -y…

ソフトウェアデザイン11月号を購入。「なぜ,コンピュータは割り算が下手なのか!?」

スーパー台風により本屋に行けないので、ネットでPDF版を購入。 お目当ては猫、、、ではなくて第2特集の「なぜ,コンピュータは割り算が下手なのか!?」 内容は割と普通だった。せいぜい命令のレイテンシ計ってみたくらい。 ハードウェア屋さんだと割と常識で…

Halide to FPGA試行(1. HalideのコンパイルとCPU上でのテストパタン試行)

Pixel2 → Pixel Visual Core → Halideあたりを調べていたら、ちょうどFixstarsからHalide to FPGAという環境がリリースされた。 www.fixstars.com ターゲットがZedBoardだし、お、ちょうど面白そうと思って早速中身を見てみた。 Halide to FPGA via kwout 最…

プログラミング言語Rustに入門中(2. 哲学者の食事)

Rust入門中の2回目。ってか間が空くのが長いな! 食事する哲学者 食事する哲学者 via kwout 完全な写経中だけど、ちゃんと理解して自力でRustのコードが書ける日は来るのだろうか? しかも私の環境では全然並列実行出来ていない感があるのだけど、大丈夫なの…

UCBのRISC-V FPGAシミュレーション加速環境 "MIDAS"を試行する(1)

CARRVで発表された、UCBのRISC-V FPGAシミュレーション環境 MIDASのリポジトリがあったので、実験してみた。 試してみたのは以下のディレクトリ。 github.com まずは一応全部ダウンロードした。riscv-fesvrを最新に更新しないと動作しないようなので、riscv-…

Ubuntu 17.10 がリリースされたのでVirtualBox上で導入試行する

www.ubuntu.com Ubuntu 17.10がリリースされたよ!やっとUnityじゃなくなったよ!GNOMEになって多少快適になってる! 例によってVirtualBoxにインストールしてみた。ついでにRISC-Vのツール群も一通り使えるかチェックしておこうかな。 github.com github.co…

SiFive Webinar "Part II: Introduction to SiFive RISC-V Core" 聴講

途中で寝ちゃいましたけど!日本時間の2:30~は遅すぎるよ。。。 SiFive社が主催しているRISC-VのWebinar第2回、今回はSiFive社が提供しているRISC-VのIP群についての話。シングルコアの話から、マルチコアのものまでザックリと製品群のすみ分けの説明だった…

RISC-V 7th Workshop の Preliminary Agendaが公開されました

11月28~11月30日に実施される7th RISC-V Workshop、今回もPreliminary Agendaが公開された。 7th RISC-V Workshop Preliminary Agenda - RISC-V Foundation via kwout 今回も2日間に渡るセッションだが、量が多いなあ!45セッションあるらしい。 ってかセッ…

Google初のカスタムデザインチップPixel Visual Coreから考えるソフトウェアプログラミングモデル

GoogleのフラグシップスマートフォンPixel 2が発表された。スマートフォン自体についてはあまり興味が湧かなかったのだが、搭載されているチップについては興味をそそる内容だ。 www.blog.google Pixel Visual Core: image processing and machine learning …

UCBのRISC-V FPGAシミュレーション加速環境 "MIDAS"

2017/10/14-10/15にかけて、アメリカのボストンにてRISC-Vの学術的なトピックに焦点を当てたワークショップ "CARRV (Computer Architecture Research with RISC-V)" が開催された。 その際の発表資料などは、CARRVのウェブサイトにて見ることが出来る。 carr…

オープンソースGPGPUの論理合成試行

オープンソースGPGPUをいろいろと調査しているが、その中でなかなか完成度の高いもののひとつであるNyuziProcessor、テストパタンの動作までは上手く行ったが、FPGAにインプリメントしてみたい。 少し調べてみたのだが、どうやらALTERAのFPGA、そしてDE2-115…

プログラミング言語Rustに入門中(1. Rustのイントロダクション)

突然新しいプログラミング言語に入門したくなることもある。自分としてはスクリプト言語はRubyをメインに使っているのだけれども(最近Rubyistとしては隠れすぎていてRubyを使っておらず、シェルスクリプトで何とかしようとする傾向があるが)、最近徐々に知名…

RISC-Vにおける命令拡張についてのポリシー

先日Design Solution Forumで発表をしてきたのだが、その時にRocket Chipを拡張して独自命令を追加した話をした。 そのあとで他の発表の方から、RISC-Vの拡張方法についていろんな考え方が聞けたため、そういえばRISC-Vって独自の命令を追加する場合に何か考…

オープンソースGPGPU "NyuziProcessor"を試行する (2.テストパタンの構成調査)

オープンソースGPGPUであるNyuziProcessorの話続き。NyuziProcessorは、ビルドした後のリグレッションテストを自動的に実行することできる環境が用意されている。 こういうハードウェア関係のプロジェクトでリグレッションテストの環境まで提供されているの…

オープンソースGPGPU "NyuziProcessor"を試行する (1. ダウンロードとビルド, サンプル実行)

前回紹介したオープンソースのGPGPU "NyuziProcessor" はどうやらダウンロードして簡単に試行できるようだ。試してみよう。 Ubuntuで試行する場合は、必要なパッケージをダウンロードした。 sudo apt-get -y install autoconf cmake make gcc g++ bison flex…

オープンソースなGPGPUについて調査

オープンソースなCPUと言えばOpenRISC, OpenSPARC, そしてRISC-Vだったり。ところで、それ以外でオープンソースなGPGPUってあるんだろうか? 例えば、いろいろ調べてみると以下のようなものが出てきた。 NyuziProcessor https://github.com/jbush001/NyuziPr…

Facetsでプロセッサベンチマークソフトウェアの解析を試行した話2

引き続き、Facetsで遊んでいる。現在はDhrystoneプログラムを解析中。 レジスタ読み込みアドレスとレジスタ書き込みアドレスの関係を調査していたのだが、いくつか読み込ませるデータを変更して、より解析しやすくしてみた。 sed 's/C0://g' output/dhryston…

Facetsでプロセッサベンチマークソフトウェアの解析を試行した話

Facetsというのは、Googleがリリースしたデータ解析ツールだ。機械学習に使えるとしており、データを可視化するのが得意で、ダイナミックな動きが特徴のデータ可視化ツールセットとなっている。 これを使って何かできないかと考えたのだが、例えばCPUベンチ…

VHDL/VerilogのテスティングフレームワークVUnitを試行する

VUnit は VHDL/SystemVerilogのテスティングフレームワークだ。VUnitにはいくつかテストパタンが用意されているが、少し自分でもテストパタンを用意してみよう。 作ってみたのは、32bit×32bit=64bitの符号なし整数の演算器を実装して、VUnitでテストを実行し…

Design Solution Forum 2017にて発表します

そろそろ告知しておかないと自分でも忘れそう。 2017/10/13(金)に開催されるDesign Solution Forumにて、RISC-Vのトラックの一つとして発表させて頂くことになりました。 トラックB3 12:00 - 12:40 で、タイトルは "さわって分かる オープンソースプロセッサ…

RISC-V 64bit Quadコア SoC "U54-MC Coreplex"

Linuxをサポートしている64bit RISC-V 4コア + 64bit RISC-V 1コアのSoCとのこと。 Quad Coreの方はU54コアということで、アーキテクチャとしてはRV64GC(整数浮動小数点何でも入り)、シングルコアの方はE51をベースとしたRV64IMAC(整数演算のみサポート)を搭…

VHDL/Verilogのテスティングフレームワーク"VUnit"

ソフトウェア環境下においてテスティングフレームワークは、例えばJUnit, GoogleTest など。 しかしハードウェア言語向けのテスティングフレームワークというのは少ない。 以前に少し紹介したのは、cocotbというテスティングフレームワーク、こちらはPython…

Rocket Chipの足回りを理解する (7. デバッグモジュールによるデータの転送)

前回の続き。Rocket Chipがどのようにしてプログラムをロードするのかを引き続き解析している。riscv-fesvrのdtm.ccを見てその動作を解析している。 write_chunk (uint64_t taddr, size_t len, const void* src) ターゲットのアドレスtaddrからlenバイト分、…

Rocket Chipの足回りを理解する (6. デバッグモジュールによるRocket Chipの内部レジスタアクセス)

RISC-VのフラグシップモデルであるRocket Chip Generatorは、RISC-Vのほぼ全ての仕様を網羅している非常に優れているデザインだが、最初はなかなか取っつきにくい部分がある。 それはいくつかあるのだが、 ChiselというScala拡張の言語で記述されており、Ver…

RocketChipの足回りを理解する(5. Load_Elf 解析中)

前回の続き。Rocket Chipがどのようにして制御を行っているのか、またプログラムのロードや、Start,Stopの制御はどのように行っているのかなどを調査している。 前回まではload_program()関数が呼ばれるところまでを見てきた。 msyksphinz.hatenablog.com 実…