FPGA開発日記

FPGAというより、コンピュータアーキテクチャかもね! カテゴリ別記事インデックス https://sites.google.com/site/fpgadevelopindex/

「リーダブルコード」を読む (第3章「理解しやすいコード」第4章「美しさ」)

諸事情で週末はネットワークをあまり使えないので、RISC-Vに関連する調査は中止。 あまりやることが無いので例によって一人読書会をしている。 今回は「リーダブルコード」。名著と呼ばれており、私も一度さっくりと読んだ。 ただし忘れていることもあるし、…

「リーダブルコード」を読む (「第1章: 理解しやすいコード」「第2章: 名前に情報を埋め込む」)

諸事情で週末はネットワークをあまり使えないので、RISC-Vに関連する調査は中止。 あまりやることが無いので例によって一人読書会をしている。 今回は「リーダブルコード」。名著と呼ばれており、私も一度さっくりと読んだ。 ただし忘れていることもあるし、…

Rocket-Chipにおけるコンフィグレーション別の面積比較 (BOOMConfigで同様の合成調査)

前回のRocket Chipの面積比較に続いて、BOOMでも同様のことを実施した。 BOOMはVersion 1とVersion 2があり、それぞれでVerilogを生成してVivadoで合成してみる。 まだ集計できていないが、だいたいの面積の概要は以下のようになっている。BOOM v1の方が少し…

Rocket-Chipにおけるコンフィグレーション別の面積比較 (BlockRAMを推論させる方法調査)

前回のRocket Chipの標準論理合成では、FPGA向けにVivadoで合成してもBlockRAMが正常に推論されず、Dcacheが面積のほとんどを消費してしまう構成になってしまっていた。 msyksphinz.hatenablog.com どうにかしてBlockRAMを使うように変更することはできない…

「GPUを支える技術」を読了

GPU

Hisa Ando氏の「GPUを支える技術」を、とりあえず読了した。最後の方はだいぶ適当に省略してしまったが、メインの部分はかなりちゃんと読み込んだと思う。 GPUの基礎を分かっていない私にとって、一から解説してくれる良い本だった。詳細までは触れることは…

Verilog-HDLで記述されたオープンソースのハードウェアライブラリ"BaseJump"

HotChips29 で発表された、学生が開発したRISC-V SoC ”Celerity”について資料を読んだ。 news.mynavi.jp Celerityは学生の作ったRISC-Vのメニーコアチップで、4大学が共同して9か月で作成したチップとなっている。 9か月という短期間で作るための秘訣として…

「GPUを支える技術」を読む(第6章 GPUの周辺技術)

GPU

Hisa Ando氏の著書「GPUを支える技術」を買っていたのだが、ずいぶんと積ん読にしているのだった。 なので、一応最後まで読んでいきたい。こういうのは、きちんと宣言しないと途中で辞めちゃうので宣言する。頑張って最後まで読んでいこう。 今回は第6章。PC…

「GPUを支える技術」を読む(第5章 GPUプログラミングの基本)

GPU

Hisa Ando氏の著書「GPUを支える技術」を買っていたのだが、ずいぶんと積ん読にしているのだった。 なので、一応最後まで読んでいきたい。こういうのは、きちんと宣言しないと途中で辞めちゃうので宣言する。頑張って最後まで読んでいこう。 今回は第5章。NV…

Rocket-Chipにおけるコンフィグレーション別の面積比較 (BlockRAMへのマッピングの問題)

Rocket Chipは構成によってどのようなコンポーネントが含まれているのかが変わっているのだが、それ以外にもリビジョンによっても結構構成が変わって、FPGAへのインプリメントに使用する面積が変わったりもする。 比較対象として、以下のリビジョンを使用し…

「GPUを支える技術」を読む(第4章 後半)

GPU

Hisa Ando氏の著書「GPUを支える技術」を買っていたのだが、ずいぶんと積ん読にしているのだった。 なので、一応最後まで読んでいきたい。こういうのは、きちんと宣言しないと途中で辞めちゃうので宣言する。頑張って最後まで読んでいこう。 今回は第4章後半…

「GPUを支える技術」を読む(第4章 前半)

GPU

Hisa Ando氏の著書「GPUを支える技術」を買っていたのだが、ずいぶんと積ん読にしているのだった。 なので、一応最後まで読んでいきたい。こういうのは、きちんと宣言しないと途中で辞めちゃうので宣言する。頑張って最後まで読んでいこう。 今回は第4章前半…

「GPUを支える技術」を読む(第3章)

GPU

Hisa Ando氏の著書「GPUを支える技術」を買っていたのだが、ずいぶんと積ん読にしているのだった。 なので、一応最後まで読んでいきたい。こういうのは、きちんと宣言しないと途中で辞めちゃうので宣言する。頑張って最後まで読んでいこう。 今回は第3章。 I…

プログラミング言語Rustに入門中 (goblinを使ってelfファイルを解析する3.)

Rustのライブラリを使えばElfの解析だってできる。 バイナリファイルを読み込んで、HashMapにアドレスとデータの対を格納するプログラムを作成した。 各セクション毎にデータを読み込んで一つのHashMapにバイト単位でデータを書き込む。このモデルを作成すれ…

「GPUを支える技術」読む (第2章)

GPU

Hisa Ando氏の著書「GPUを支える技術」を買っていたのだが、ずいぶんと積ん読にしているのだった。 なので、一応最後まで読んでいきたい。こういうのは、きちんと宣言しないと途中で辞めちゃうので宣言する。頑張って最後まで読んでいこう。 今回は第2章。 G…

「GPUを支える技術」読む (第1章)

GPU

Hisa Ando氏の著書「GPUを支える技術」を買っていたのだが、ずいぶんと積ん読にしているのだった。 なので、一応最後まで読んでいきたい。こういうのは、きちんと宣言しないと途中で辞めちゃうので宣言する。頑張って最後まで読んでいこう。 一応、Jupyter N…

プログラミング言語Rustに入門中 (goblinを使ってelfファイルを解析する2.)

RustのライブラリであるGoblinを使って、バイナリファイルを解析のプログラムを作成している。Rustの構造はなかなか慣れないので、進めるのが大変だ。 Goblinを使った場合、Sectionを一つずつ解析して、バイナリの入っている部分を取り出していく必要がある…

プログラミング言語Rustに入門中 (goblinを使ってelfファイルを解析する)

Rustを使うなら何を作ってみたいって、並列性をうまく利用してメニーコアのシミュレータとかを作るのが、CPUアーキテクチャの勉強にとっても、Rustの勉強にとっても良さそうだ。 でも、RustでElfファイルを扱う方法ってあるのか?いろいろと調べていると、ラ…

MicroPython試行(3. RISC-V移植環境の調査 → Spikeでの動作)

MicroPythonをRISC-Vのプラットフォームで動作させたくて、調査している。 MicroPythonはQEMUの環境も用意されていて、ARMやXtensaなどの環境も用意されている。これらを参考にしながら、実装を進めていこう。 RISC-V用に用意しなければならないのは、 nlr_p…

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

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

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…