FPGA開発日記

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

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

オープンソース・アウトオブオーダCPU NaxRiscvを概観する (13. PCPluginをSystemVerilogに変換する)

NaxRiscvの実装を解析しながら、SystemVerilog化することで理解を深めていこうと思う。 まずはPCPluginから。このモジュールの役目は、PCの保持とアップデート、各種ハザードに応じてPCを更新することだ。 module NaxRiscv_PcPlugin ( input logic i_clk, in…

オープンソース・アウトオブオーダCPU NaxRiscvのドキュメントを読んでいく (5. 分岐予測ユニット)

NaxRiscvのドキュメントを、改めて位置から読んでみることにしたいと思う。 spinalhdl.github.io msyksphinz.hatenablog.com msyksphinz.hatenablog.com msyksphinz.hatenablog.com msyksphinz.hatenablog.com 分岐予測 現在、分岐予測はパイプライン内の二…

オープンソース・アウトオブオーダCPU NaxRiscvのドキュメントを読んでいく (4. メモリアクセスユニットについて)

NaxRiscvのドキュメントを、改めて位置から読んでみることにしたいと思う。 spinalhdl.github.io msyksphinz.hatenablog.com msyksphinz.hatenablog.com msyksphinz.hatenablog.com メモリ・システム ロードストアの統合 LSUの実装の特徴は以下の通りである…

オープンソース・アウトオブオーダCPU NaxRiscvのドキュメントを読んでいく (3. 実行ユニットについて)

NaxRiscvのドキュメントを、改めて位置から読んでみることにしたいと思う。 spinalhdl.github.io msyksphinz.hatenablog.com msyksphinz.hatenablog.com 実行ユニット 実行ユニットの主な特徴は、それに依存する命令をウェイクアップする方法である。 静的ウ…

オープンソース・アウトオブオーダCPU NaxRiscvを概観する (12. PcPluginの実装解析)

PcPluginの実装の解析 github.com とりあえずまずはChatGPTにこのソースコードを解説してもらおうと思う。 - ジャンプロジックの設定: ジャンプロジックでは、登録されたジャンプ要求を優先度に応じてソートし、優先度が高いものから順に評価します。 ジャン…

オープンソース・アウトオブオーダCPU NaxRiscvのドキュメントを読んでいく (2. )

NaxRiscvのドキュメントを、改めて位置から読んでみることにしたいと思う。 spinalhdl.github.io msyksphinz.hatenablog.com Frontend デコーダ 特になし。 物理レジスタ割り当て 物理レジスタ割り当ては、割り当てられていない物理レジスタのインデックスを…

オープンソース・アウトオブオーダCPU NaxRiscvのドキュメントを読んでいく (1. イントロダクション)

NaxRiscvのドキュメントを、改めて位置から読んでみることにしたいと思う。 spinalhdl.github.io イントロダクション NaxRiscv NaxRiscv は現在、以下の特徴を持つコアである。 レジスタ・リネーミング付きアウト・オブ・オーダ実行 スーパースカラ(例:2デコ…

RISC-Vのメモリプロテクション機構のおさらい(PMP: Physical Memory Protection)

結構昔にRISC-VのPMP機構(Physical Memory Protection)について調査したのだった。 msyksphinz.hatenablog.com 改めて復習しているが、PMPのNAPOTについてあまり明確に理解していなかった。 PMPのアドレス範囲選択については、3つのモードがある: pmpcfg[*]…

Binary Hacks Rebootedを購入しました

Binary Hacks Rebooted —低レイヤの世界を探検するテクニック89選作者:河田 旺,小池 悠生,渡邉 慶一,佐伯 学哉,荒田 実樹オーム社Amazon 結構昔のBinary Hacksがまだ本棚に残っているかどうか不明だけど、Rebootedということで買いました。 自分はハードウェ…

オープンソース・アウトオブオーダCPU NaxRiscvを概観する (11. NaxRiscvで生成されるデザインの比較)

NaxRiscvの様々なコンフィグレーションでのVivado論理合成結果を見て比較してみる。 次はRV64の構成で試してみた。 Slice LUT Slice Registers WNS (ns) rv32ima 13478 7899 3.408 rv32imaf 18071 10655 3.150 rv32imafd 17669 9786 2.708 rv32imac 13702 81…

オープンソース・アウトオブオーダCPU NaxRiscvを概観する (10. NaxRiscvで生成されるデザインの比較)

NaxRiscvの様々なコンフィグレーションでのVivado論理合成結果を見て比較してみる。 riscv32での構成で試してみた。 普通は浮動小数点演算器をつけると周波数が落ちそうなものだが、そうはなっていない。ここには誤差が載っていそうな気がする。 rv32imafとr…

オープンソース・アウトオブオーダCPU NaxRiscvを概観する (8. オプションで生成されるVerilogデザインを制御できるか?)

msyksphinz.hatenablog.com msyksphinz.hatenablog.com msyksphinz.hatenablog.com msyksphinz.hatenablog.com msyksphinz.hatenablog.com msyksphinz.hatenablog.com msyksphinz.hatenablog.com msyksphinz.hatenablog.com もうちょっとまともに読めるSyste…

RISC-V Advanced Platform Interrupt Controller (APLIC) の概観 (3. RTL実装の概観)

RISC-VのAdvanced Platform Interrupt Controller (APLIC) について勉強してみようと思う。 以下においてある実装をチェックしてみることにした。 github.com APLICはいくつかのモードによって実装が切り替わるようになっているらしい。 MSI_MODE=true AIA_E…