FPGA開発日記

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

2024-08-01から1ヶ月間の記事一覧

RISC-V Advanced Platform Interrupt Controller (APLIC) の概観 (2.必要なレジスタ群)

RISC-VのAdvanced Platform Interrupt Controller (APLIC) について勉強してみようと思う。 まずは以下のブログを読んで概観を掴もう。 blog.stephenmarz.com 今回はレジスタの構成についてまとめてみた。必要なのはだいたいこんな感じかなと思う。 Name Add…

RISC-V Advanced Platform Interrupt Controller (APLIC) の概観

RISC-VのAdvanced Platform Interrupt Controller (APLIC) について勉強してみようと思う。 まずは以下のブログを読んで概観を掴もう。 blog.stephenmarz.com APLICの概観 APLICはSiFiveのPLICを発展させたもので、PLICとの違いはメッセージによる割り込みの…

LLVM18を久しぶりにビルドしようとしたら失敗する問題の解析 (3. Baremetalでのコンパイル確認)

LLVM18のRISC-V Targetでのビルド方法が分からなくてずっと悩んでいたのだが、とりあえず以下の方法ならば行けるということが分かってきた。 msyksphinz.hatenablog.com msyksphinz.hatenablog.com LLVM18でC++のコンパイルを簡単なコードで確認しておく: m…

LLVM18を久しぶりにビルドしようとしたら失敗する問題の解析 (2. Baremetal版のコンパイル方法)

LLVM18のRISC-V Targetでのビルド方法が分からなくてずっと悩んでいたのだが、とりあえず以下の方法ならば行けるということが分かってきた。 msyksphinz.hatenablog.com $ cd build $ cmake -G Ninja \ ../llvm \ -DCMAKE_BUILD_TYPE=Release \ -DLLVM_ENABL…

オープンソース・アウトオブオーダCPU NaxRiscvを概観する (6. SpinalHDLで記述されたRVC Decompressor)

msyksphinz.hatenablog.com msyksphinz.hatenablog.com もうちょっとなんとかSpinal HDLのわけわからん記述が読めるようになりたい: とりあえずRVC Alignerの部分で何とか理解できる部分はないだろうか。 Aligner Pluginをもうちょっと腰を据えて解析してみ…

オープンソース・アウトオブオーダCPU NaxRiscvを概観する (7. RVCサポートのNaxRiscvをRTLシミュレーションする)

msyksphinz.hatenablog.com msyksphinz.hatenablog.com ちょっとRVC付きのNaxRiscvについてRTLシミュレーションの流し方をまとめておく。 ビルド対象について、withRvcを有効化しておく。 diff --git a/src/main/scala/naxriscv/Gen.scala b/src/main/scala/…

Netflixによるインスタンス負荷改善のための解析事例

LinkedInの記事をめぐっているうちに見つけた、マイクロアーキテクチャに関する面白い事例。 CPUのマイクロアーキテクチャのさらに奥深くまで理解が必要な問題を解決するために、どのようなツールをつかってどのように解決したかの話。 netflixtechblog.com …

オープンソース・アウトオブオーダCPU NaxRiscvを概観する (5. SpinalHDLのソースコード解析)

msyksphinz.hatenablog.com msyksphinz.hatenablog.com もうちょっとなんとかSpinal HDLのわけわからん記述が読めるようになりたい: とりあえずRVC Alignerの部分で何とか理解できる部分はないだろうか。 class AlignerPlugin(var decodeCount : Int, var i…

SiFive の P870-D が発表されたので P870 コアの詳細を振り返る (2. キャッシュ・メモリ)

前回の続き: キャッシュとメモリ・アクセス P870はアドレス生成用に3本のパイプを持っている。 2本のパイプはロードまたはストアを処理し、3本目のパイプはロードのみを処理する。 Cortex X2、A710、Zen 4で見られるものと似ている。 データ・キャッシュ・…

SiFive の P870-D が発表されたので P870 コアの詳細を振り返る (1. 概要)

SiFive の P870-Dコアが発表されたが、個人的には、これはつまりSiFiveがメインコアの開発を実質的に止めている、ということを示していると思う。 https://www.sifive.com/cores/performance-p870d より引用 このグラフは、縦軸が性能を意味するものと思われ…

GhostWriteの論文を読む (5. CPUがHALTする命令シーケンス)

GhostWrite アタックについて説明されているファジングの論文、RISCVuzzの論文を読んでいこうと思う。 ghostwriteattack.com msyksphinz.hatenablog.com msyksphinz.hatenablog.com msyksphinz.hatenablog.com もう一つの脆弱性、CPUを完全に停止させてしま…

GhostWriteの論文を読む (3. GhostWrite攻撃概要)

GhostWrite アタックについて説明されているファジングの論文、RISCVuzzの論文を読んでいこうと思う。 ghostwriteattack.com msyksphinz.hatenablog.com msyksphinz.hatenablog.com GhostWriteの攻撃に関して、以下の3ステップを踏むようになっている: マイ…

GhostWriteの論文を読む (2. RISCVuzzの仕組み)

GhostWrite アタックについて説明されているファジングの論文、RISCVuzzの論文を読んでいこうと思う。 ghostwriteattack.com RISCVuzzのフレームワークについて。 テストを制御するサーバ & クライアント (RISC-V CPU) クライアントはネットワーク経由で命令…

GhostWriteの論文を読む (1. 概要)

GhostWrite アタックについて説明されているファジングの論文、RISCVuzzの論文を読んでいこうと思う。 ghostwriteattack.com ソースコードやエミュレータを必要としないハードウェアCPUの脆弱性を検出するフレームワーク「RISCVuzz」を開発した。 基本的な考…

オープンソース・アウトオブオーダCPU NaxRiscvを概観する (4. 生成されたVerilogコードの解析)

msyksphinz.hatenablog.com msyksphinz.hatenablog.com NaxRiscvのVerilogコードだが、やっぱり何が書いてあるのかさっぱりわからない。 とりあえず、FetchPCプラグインのモジュールを切り出して、何が起きているのかを確認したい。 多分FetchPCをモジュール…

オープンソース・アウトオブオーダCPU NaxRiscvを概観する (4. 波形のトレース)

msyksphinz.hatenablog.com msyksphinz.hatenablog.com msyksphinz.hatenablog.com NaxRiscvのデザインをシミュレーションし、FST波形を出力してみようと思う。 $ sbt "runMain naxriscv.Gen64" $ cd $NAXRISCV/src/test/cpp/naxriscv $ make compile TRACE=…

オープンソース・アウトオブオーダCPU NaxRiscvを概観する (3. SpinalHDLの特殊記述について)

msyksphinz.hatenablog.com msyksphinz.hatenablog.com NaxRiscvのVerilogコードだが、やっぱり何が書いてあるのかさっぱりわからない。 とりあえずSpinalHDLのチュートリアルを読んで、基本的なところを確認していこうと思う。以下のページがよさそうだ。 s…

オープンソース・アウトオブオーダCPU NaxRiscvを概観する (2.)

msyksphinz.hatenablog.com NaxRiscvのVerilogコードだが、やっぱり何が書いてあるのかさっぱりわからない。 大まかなシステム階層は以下のようになっているのだが、これだけだと分からないよね。 module NaxRiscv ( TranslatorWithRollback integer_RfTrans…

オープンソース・アウトオブオーダCPU NaxRiscvを概観する (1.)

NaxRiscvはオープンソースのアウトオブオーダCPUコアだ。 非常に参考になるデザインだと思うのだが、SpinalHDLというScalaをベースとした謎の言語で書かれている。 spinalhdl.github.io レジスタ・リネームによるアウトオブオーダー実行 スーパースカラ(例…

RISC-V ベース SoCプラットフォームについて調査する (1. 概要調査)

X-HEEPというRISC-VをベースとしたSoCプラットフォームを教えてもらった。 x-heep.readthedocs.io SystemVerilogで記述されたRISC-Vマイクロコントローラを使ってカスタマイズ可能なSoCを構成することができる。 CPU・一般的なペリフェラル・メモリなどをカ…

RISC-V Summit China 2024のアジェンダ公開

直接参加することはないのだけれども、日本のイベントに比べて圧倒的に量と品質が高そうなのでメモっておく。 riscv-summit-china.com 时间 时长 题目 演讲者 8:30 30 签到 - 9:00 30 领导致辞、院士致辞、主席致辞 - 9:30 20 RVI keynote Calista Redmond 9…

OpenMPを使ったプログラムはどのくらいスケーラビリティがあるのか(2)

OpenMPを使った並列プログラムを試していて,いろいろ疑問に思ったことなのだが,場合によっては全然性能が上がらないことがある. msyksphinz.hatenablog.com std::vectorとかでもちゃんと動作するのか確かめた. Time : 1.52998 // Thread-1 Time : 1.1734…

RTLシミュレータ DSimに入門してみる (3. DSimをコマンドラインから立ち上げる方法の調査)

DSimをコマンドラインから立ち上げる方法について確認する。 環境は、WSL2 の Ubuntu 22.04 LTS を使用している。 DSimコマンドライン環境の有効化 前回までの環境を構築している状態で、 $ cd /home/msyksphinz/metrics-ca/dsim/20240422.9.0 $ source shel…

RTLシミュレータ DSimに入門してみる (2. Exampleデザインを開いてみる)

前回、DSimのインストールとライセンスを有効化したので、次にサンプルデザインを開いてみたいと思う。 msyksphinz.hatenablog.com 以下のチュートリアルを参考に進めていく。 help.metrics.ca 以下のサンプルデザインをダウンロードして解凍しておく: http…

RTLシミュレータ DSimに入門してみる (1. インストールとライセンスの有効化)

もう周回遅れもいいところだが、デスクトップ版ならフリーで使えるというRTLシミュレータDSimに入門してみる。 Verilatorは今のところ非常に便利に使っているが、DSimも使い物になるようなら、こちらに本格的に移行することも考えてみたい。 基本的には以下…