FPGA開発日記

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

RISC-Vにおける割り込み処理挿入の方法確認

RISC-Vにおける割り込みの挿入方法を、テストパタンを動かしながら確認している。 以下のテストパタンで、MIP(Machine Interrupt Pending)とMIE(Machine Interrupt Enable)を制御して割り込みを挿入するテストが行われている。 動作確認には、ChipyardのRock…

自作RISC-V CPUコア実装(テストパタンデバッグ)

自作CPUのデバッグをチマチマ進めている。 TLBの問題についてはとりあえず置いておいて、テストパタンを動かしながら問題点を洗い出している。 とりあえず環境等の問題を洗い出して、基本的なケースは動くようなところまで直していった。 巨大なコンフィグレ…

Chipyardで32-bit版BOOMを生成するための調査 (4. RV32向けのF拡張限定BOOMのテスト実行)

前回RV32のF拡張限定のVerilogファイルを生成したので、これのテストを実行する方法を調査する。 msyksphinz.hatenablog.com Chipyardのドキュメントによると、以下のようにすることでriscv-testsとriscv-benchmarksを実行することができる。 make CONFIG=Me…

自作RISC-V CPUコア実装(テストパタンデバッグ)

自作CPUのデバッグをチマチマ進めている。 TLBの問題についてはとりあえず置いておいて、テストパタンを動かしながら問題点を洗い出している。 とりあえず環境等の問題を洗い出して、基本的なケースは動くようなところまで直していった。 RV32のテストケース…

自作RISC-V CPUコア実装(テストパタンデバッグ)

自作CPUのデバッグをチマチマ進めている。 現在、1つのVerilogファイルから10個程度のコンフィグレーションを生成するようにしてリグレッションを走らせている。 TLBの挙動がおかしくなってしまったので、いろいろ見ているのだが、どうもVerilatorの問題を踏…

Chipyardで32-bit版BOOMを生成するための調査 (3. RV32向けにF拡張限定BOOMを生成)

ちょっと気になったのだけれども、現在BOOMは32ビットモードでのFPUをサポートしていないらしい(アサーションが組まれている)。 じゃあ無理やりそれを外して動作する様にしたらどうなるか、ということでやってみる。つまり、以下のアサーションをコメントア…

Chipyardで32-bit版BOOMを生成するための調査 (2. コンフィグレーション調査)

メモ:Chipyard tag 1.5.0はMediumBoomConfigの生成に失敗する。master`ブランチを使った方が良い。 commit 02adf86b8261ca4b5baf35b3257e15cdbabd7f87 (HEAD, origin/master, origin/HEAD) Author: Abraham Gonzalez <abe.j.gonza@gmail.com> Date: Thu Dec 2 09:25:51 2021 -0800 </abe.j.gonza@gmail.com>…

Chipyardで32-bit版BOOMを生成するための調査 (1. コンフィグレーション調査)

32ビット版の乗除算器のVerilogだけ欲しくて、Chipyardで構成されるChiselの乗除算器のVerilogだけを持ってこようとしている。 通常、BOOMのコンフィグレーションを構成するためには、以下のようにしてVerilogファイルを生成する。 make CONFIG=MediumBoomCo…

あけましておめでとうございます 2022

あけましておめでとうございます。今年も、FPGA開発日記をよろしくお願いします。 去年は、自分のなかではかなりハードウェア開発寄りに活動を寄せていった一年だった。 もちろんソフトウェアもいろいろ見ていたけど、自作CPUとか、ハードウェア開発とか、Sy…

年末なので今年のまとめをしよう2021

FPGA開発日記は2015年1月4日開始から、おおよそ7年が経過しました。 年末年始なので、2021年をいろいろと振り返っていこうと思う。 今年の最初には、以下のような目標を設定していました。あんまり見直したくねえなあ... 引き続きRISC-Vをベースとしたエコシ…

自作RISC-V CPUコア実装(RASの動作確認2)

自作CPUの実装、ロードストア命令の物理アドレスが決まらないうえでのハザードのボトルネックを解決した。 そうこうしているうちにいつの間にかRET命令のRAS予測が怪しくなってきているので修正しておきたい。 RASの修正を行って、簡単なテストケースならば…

自作RISC-V CPUコア実装(RASの動作確認)

自作CPUの実装、ロードストア命令の物理アドレスが決まらないうえでのハザードのボトルネックを解決した。 そうこうしているうちにいつの間にかRET命令のRAS予測が怪しくなってきているので修正しておきたい。 RASの実装を確認するために、とりあえず以下の…

自作RISC-V CPUコア実装(LDQ/STQ間のフラッシュインタフェースの性能確認)

自作CPUの実装、ロードストア命令の物理アドレスが決まらないうえでのハザードが性能ボトルネックになっているのを見た。Dhrystoneの実行に当たりしばらくデバッグしていたのだが、いろいろ試行錯誤してようやくまともに動作するようになってきた気がする。 …

LLVMベースの難読化ツールoLLVMの調査 (2. 生成CFGの調査)

LLVMをベースにしたコードの難読化ツールとしてoLLVMというのがあるというのを知った。どういうものなのか少し見てみようと思う。 github.com 論文は以下で取得可能だ。 ieeexplore.ieee.org Obfuscator-LLVM: Software Protection for the Masses https://c…

LLVMベースの難読化ツールoLLVMの調査

LLVMをベースにしたコードの難読化ツールとしてoLLVMというのがあるというのを知った。どういうものなのか少し見てみようと思う。 github.com 論文は以下で取得可能だ。 ieeexplore.ieee.org Obfuscator-LLVM: Software Protection for the Masses https://c…

自作RISC-V CPUコア実装(RET命令の再考)

自作CPUの実装、ロードストア命令の物理アドレスが決まらないうえでのハザードのボトルネックを解決した。 そうこうしているうちにいつの間にかRET命令のRAS予測が怪しくなってきているので修正しておきたい。 フロントエンドのパイプラインステージをs0, s1…

自作RISC-V CPUコア実装(LDQ/STQ間のフラッシュインタフェースの実装 3)

自作CPUの実装、ロードストア命令の物理アドレスが決まらないうえでのハザードが性能ボトルネックになっているのを見た。 一応、簡単なベンチマークでこの問題が解決できることを見たので、次にDhrystoneを流してどれくらい実行速度が向上するのか見てみよう…

Chipyard v1.5.0のコンパイル手順メモ

ちょっと訳あってChipyardのバージョンアップ試行した。これまではv1.3.0を使っていたのだがあまりにも古いのでv1.5.0に切り替えてみる。 github.com Chipyardの何が面倒くさいかって、GNUツールチェインもついているのでそれのビルドに時間がかかる。バイナ…

RISC-V Summit 2021の資料が(一部)公開されている

https://events.linuxfoundation.org/riscv-summit/ RISC-V Summitは去年は完全にオンラインで実施していたようだけど、今年はハイブリッドでの開催となっているようだ。 RISC-V Summitの発表資料の一部が公開されていた。全部を見るのは厳しいけど、興味の…

自作RISC-V CPUコア実装(LDQ/STQ間のフラッシュインタフェースの実装 2)

自作CPUの実装、ロードストア命令の物理アドレスが決まらないうえでのハザードが性能ボトルネックになっているのを見た。 一応、簡単なベンチマークでこの問題が解決できることを見たので、次にDhrystoneを流してどれくらい実行速度が向上するのか見てみよう…

自作RISC-V CPUコア実装(LDQ/STQ間のフラッシュインタフェースの実装)

自作CPUの実装、ロードストア命令の物理アドレスが決まらないうえでのハザードが性能ボトルネックになっているのを見た。 ずいぶんと時間が空いてしまったが実装のデバッグを行う。以下のようなプログラムを作成して検証する。 loop: div x3, x3, x4 sd x10,…

RISC-Vの新拡張仕様概観1

2021年11月に新拡張仕様がかなりの数Ratifiedされた。その情報自体については知っていたけれども、あまり詳細を調査していなかったので見てみることにする。 RISC-Vの拡張仕様は通常MISAレジスタによってA-Zに対応付けて表記されるが、拡張が増えすぎてしま…

「Chiselで始めるデジタル回路設計」を献本いただきました

RISC-V Day Tokyo 2021 Autumnで配布されたChisel本、「Chiselで始めるデジタル回路設計」を献本いただきました。 RISC-V Day Tokyo幹事団の皆様、ありがとうございます。 本書の翻訳の進捗については私は全く関わっていないのですが、Slack上で議論が行われ…

自作RISC-V CPUコア実装(LDQ/STQ間のフラッシュインタフェースの確認)

自作CPUの実装、ロードストア命令の物理アドレスが決まらないうえでのハザードが性能ボトルネックになっているのを見た。 次に検討するのは、LDQ/STQの最適化だ。以前の記事で説明したとおり、LDQとSTQの間でインタフェースを作成し、STQからのパイプライン…

自作RISC-V CPUコア実装(LDQ/STQ間のフラッシュインタフェースの実装)

自作CPUの実装、ロードストア命令の物理アドレスが決まらないうえでのハザードが性能ボトルネックになっているのを見た。 次に検討するのは、LDQ/STQの最適化だ。以前の記事で説明したとおり、LDQとSTQの間でインタフェースを作成し、STQからのパイプライン…

「はてなブロガーに10の質問」で振り返る「FPGA開発日記」の6年間

はてなブログ10周年特別お題「はてなブロガーに10の質問」 これははてなブログの企画です。別に記念日でも何でもありませんが、せっかくなので乗っかることにしました。 FPGA開発日記は2015年からおおよそ6年間続いています。10の質問に答えることでこの6年…

RISC-VのePMP(PMP Enhancements)仕様について概観する

RISC-VのPrivileged仕様Version 1.12 ではePMPレジスタ群(PMP Enhancements)についての仕様が検討されている。 これについて調査してみよう。 仕様書は以下に置いてある。誰でもダウンロードできる。 https://raw.githubusercontent.com/riscv/riscv-tee/mai…

RISC-VのCMO(Cache Management Operation) 仕様について概観する

RISC-VのPrivileged仕様Version 1.12 ではCMO命令群(Cache Management Operation)についての仕様が検討されている。 これについて調査してみよう。 仕様書は以下に置いてある。誰でもダウンロードできる。 github.com キャッシュ操作命令については以下の3種…

自作RISC-V CPUコア実装(データキャッシュバンク化の効果)

自作CPUの実装、ロードストア命令のバンク化を実現した結果分岐予測の性能ボトルネックが明らかになった。 性能ボトルネックになっているのは、s0ステージで命令フェッチ、s2ステージで分岐先を予測とということで合計2サイクル分岐予測に必要だったため、命…

自作RISC-V CPUコア実装(データキャッシュバンク化の効果)

自作CPUの性能向上のために、これまで単一バンクだったデータキャッシュを作り変えてみよう。 バンク化の効果を確かめる。以下のようなプログラムを作ってLSUパイプラインの2つから別のバンクにアクセスをかけ、コンフリクトが発生するかどうかを確認する。 …