2024-09-01から1ヶ月間の記事一覧
特集の内容に興味があったのと、付録が気になったので買ってみた。 マルチコアOSを数千行で作れるのはとても面白そうだ。時間を取って触ってみたい。 もう一つの付録は、コンピュータ・アーキテクチャというよりも情報処理技術者試験の基本問題みたいな内容…
NaxRiscvのRAS(Return Address Stack)に関連するソースコードを読んでいきたいと思う。 基本的にはSpinal-HDLのブロックを引っ張り出してVerilogのモジュールでまとめ上げて、わかりにくい展開されたような論理をまとめていったうえで中身を解析する。 まず…
NaxRiscvのGShareに関連するソースコードを読んでいきたいと思う。 基本的にはSpinal-HDLのブロックを引っ張り出してVerilogのモジュールでまとめ上げて、わかりにくい展開されたような論理をまとめていったうえで中身を解析する。 まず、GShareのためのメモ…
ChatGPTにSpinal-HDLのstageableについて聞いてみた。 stageableは、パイプラインの各ステージ間で扱うデータや信号を定義するクラスです。これにより、複数のステージで使用されるデータを統一的に扱うことができ、ステージ間でのデータ転送や遅延の処理を…
PLRUについてだいぶ分かってきた。 このアルゴリズムはTree PLRUというものに基づいている。各ツリーにおける状態を保持するためにstateという変数が各ノードで定義されている。 このstate変数により、どのWayに最新でアクセスされたのかを記録するようにな…
NaxRiscvの実装を解析しながら、SystemVerilog化することで理解を深めていこうと思う。 FetchCachePluginには、どのWayを置き換えるのかを計算するPLRUのコードが示されている。 いろいろ解析するとこれはTree PLRUを実装しているコードのようだ。しかしSpin…
NaxRiscvの実装を解析しながら、SystemVerilog化することで理解を深めていこうと思う。 FetchCachePluginには、いくつかのRAMが定義されている。 reg [63:0] FetchCachePlugin_logic_banks_0_mem [0:511]; reg [63:0] FetchCachePlugin_logic_banks_1_mem [0…
SiFiveが新しいRISC-Vプロセッサの系列としてIntelligence XMを発表した。 www.sifive.com XMのXはIntelligenceシリーズのXシリーズから来ていて、MはMatrix拡張のことと考えて間違いない。 ただ、Matrix Engineの命令に何を使っているのかここでははっきり…
PCI Express設計の基礎と応用―プロトコルの基本から基板設計、機能実装まで (インターフェース・デザイン・シリーズ)作者:畑山 仁ほかCQ出版Amazon 今までなるべく避けていた、PCI Expressについていよいよ勉強しなければならないので買った。 基本的な用語…
NaxRiscvの実装を解析しながら、SystemVerilog化することで理解を深めていこうと思う。 FetchPluginは、PCPluginから渡されたPCをもとに命令フェッチを行うモジュールのように思われる。 module NaxRiscv_FetchPlugin ( input logic i_clk, input logic i_re…
NaxRiscvの実装を解析しながら、SystemVerilog化することで理解を深めていこうと思う。 まずはPCPluginから。このモジュールの役目は、PCの保持とアップデート、各種ハザードに応じてPCを更新することだ。 module NaxRiscv_PcPlugin ( input logic i_clk, in…
NaxRiscvのドキュメントを、改めて位置から読んでみることにしたいと思う。 spinalhdl.github.io msyksphinz.hatenablog.com msyksphinz.hatenablog.com msyksphinz.hatenablog.com msyksphinz.hatenablog.com 分岐予測 現在、分岐予測はパイプライン内の二…
NaxRiscvのドキュメントを、改めて位置から読んでみることにしたいと思う。 spinalhdl.github.io msyksphinz.hatenablog.com msyksphinz.hatenablog.com msyksphinz.hatenablog.com メモリ・システム ロードストアの統合 LSUの実装の特徴は以下の通りである…
NaxRiscvのドキュメントを、改めて位置から読んでみることにしたいと思う。 spinalhdl.github.io msyksphinz.hatenablog.com msyksphinz.hatenablog.com 実行ユニット 実行ユニットの主な特徴は、それに依存する命令をウェイクアップする方法である。 静的ウ…
PcPluginの実装の解析 github.com とりあえずまずはChatGPTにこのソースコードを解説してもらおうと思う。 - ジャンプロジックの設定: ジャンプロジックでは、登録されたジャンプ要求を優先度に応じてソートし、優先度が高いものから順に評価します。 ジャン…
NaxRiscvのドキュメントを、改めて位置から読んでみることにしたいと思う。 spinalhdl.github.io msyksphinz.hatenablog.com Frontend デコーダ 特になし。 物理レジスタ割り当て 物理レジスタ割り当ては、割り当てられていない物理レジスタのインデックスを…
NaxRiscvのドキュメントを、改めて位置から読んでみることにしたいと思う。 spinalhdl.github.io イントロダクション NaxRiscv NaxRiscv は現在、以下の特徴を持つコアである。 レジスタ・リネーミング付きアウト・オブ・オーダ実行 スーパースカラ(例:2デコ…
結構昔にRISC-VのPMP機構(Physical Memory Protection)について調査したのだった。 msyksphinz.hatenablog.com 改めて復習しているが、PMPのNAPOTについてあまり明確に理解していなかった。 PMPのアドレス範囲選択については、3つのモードがある: pmpcfg[*]…
Binary Hacks Rebooted —低レイヤの世界を探検するテクニック89選作者:河田 旺,小池 悠生,渡邉 慶一,佐伯 学哉,荒田 実樹オーム社Amazon 結構昔のBinary Hacksがまだ本棚に残っているかどうか不明だけど、Rebootedということで買いました。 自分はハードウェ…
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…
NaxRiscvの様々なコンフィグレーションでのVivado論理合成結果を見て比較してみる。 riscv32での構成で試してみた。 普通は浮動小数点演算器をつけると周波数が落ちそうなものだが、そうはなっていない。ここには誤差が載っていそうな気がする。 rv32imafとr…
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) について勉強してみようと思う。 以下においてある実装をチェックしてみることにした。 github.com APLICはいくつかのモードによって実装が切り替わるようになっているらしい。 MSI_MODE=true AIA_E…