2025-07-01から1ヶ月間の記事一覧
SystemVerilogに登場するchandleについて知らなかったので調査してみることにした。 要約するとchandleはC/C++のポインタをSystemVerilogから扱うためのデータ型である。 DPI(Direct Programming Interface)を使用してC/C++の関数を呼び出す際に、特に使われ…
前回の続き: msyksphinz.hatenablog.com RVVI-APIの概要 RVVI-APIは、リファレンスモデルDVサブシステムのインターフェースとして、RISC-Vプロセッサの検証において重要な役割を果たす。 単純なPC値の比較ではなく、完全な非同期動作を含む全てのISAアーキ…
前回の続き: msyksphinz.hatenablog.com RVVI-TRACEインターフェースパラメータ RVVI-TRACEインターフェースは以下のパラメータを取る: パラメータ名 説明 ILEN 最大許可命令長(ビット) / 32-bit, 16-bit XLEN 最大汎用レジスタサイズ(ビット) FLEN 最大浮…
msyksphinz-self.github.io riscv-isadoc ドキュメンにZicond拡張の命令一覧を追加した。
RVVIは、RISC-Vプロセッサの設計検証に必要な複数のサブシステムを統合するためのインターフェースを定義している。 RVVIの目的と意義 RVVIの主な目的は、ハードウェア設計検証(HW DV)プロセスを効率化することである。 RVVI標準を採用することで、以下の利…
前回の続き。 msyksphinz.hatenablog.com コストを削減するために、開発用サーバ(dev-server)とビルド用サーバ(build-server)を明確に分離してTerraformで管理することにした。 ディレクトリ構成を以下のように変更してみた。 terraform-root/ ├── build-ser…
Terraformとは何か Terraformは、HashiCorp社が開発したオープンソースのインフラストラクチャ自動化ツールだ。 インフラの構成をコード(Infrastructure as Code: IaC)として記述し、クラウドやオンプレミス環境のリソース(サーバ、ネットワーク、ストレ…
ISCA 2025で発表された "The XOR Cache A Catalyst for Compression" を読んでみることにした。 6. 評価 6.1 評価手法 シミュレータ: Gem5を用いて、XORキャッシュおよびコヒーレンス・プロトコルを実装・評価した。 キャッシュやタグ構造の面積・電力・レイ…
ISCA 2025で発表された "The XOR Cache A Catalyst for Compression" を読んでみることにした。 msyksphinz.hatenablog.com 5. XORキャッシュアーキテクチャ バンク内で任意の2つのラインをXOR可能にするため、XORキャッシュはタグ・アレイとデータ・アレイ…
RISC-V Vector Extensionでは、ベクトルレジスタの演算対象となる要素をマスクによって制御できる。 Intrinsic においてこのマスクを使用するためには、 Intrinsicの関数の最後に _m を付けるのが基本だ。 vint64m1_t __riscv_vadd_vv_i64m1 (vint64m1_t op1…
以下の論文を読んでみることにした: はじめに グラフ解析や疎行列演算などの分野で頻繁に登場する「間接メモリアクセス(IMA)」は、アクセスパターンが不規則で、キャッシュの恩恵を受けにくい。そのため、DRAMへのアクセスが増え、システム全体のパフォー…
RISC-V Vector拡張のIntrinsicを使用してベクトルレジスタの内容をダンプする簡易なC++関数を用意した。 実装概要 以下のコードは、ベクトル整数レジスタ(vireg)とベクトルマスクレジスタ(vmreg)の内容を人間が読みやすい形式で出力する関数である。 inl…
riscv-testsのbenchmarksに付属しているprintf()は、シンプルな実装である代わりに浮動小数点表記などをサポートしていない。この問題を解決するために、必要な機能を追加してみた。 問題の概要 https://github.com/riscv-software-src/riscv-tests/blob/mas…
これが、rv64ui-v-simpleだとどのように使われているのかな? rv64ui-v-simpleでは、ユーザコードに移る際に Instruction Page Falut が起きているようだ。 この時にジャンプする先はstvecに設定されている。 void vm_boot(uintptr_t test_addr) { /* ... 途…
ここで、 DRAM_BASE が 0x4_0000_0000_0000 であると仮定して、どのようにアドレス変換が行われるかを考えてみよう。 仮想アドレス 0x12345 がどのように変換されるかを考える。 アドレスと、VPNへのマッピングは図のようになる VPN[2] = 0x0 VPN[1] = 0x0 V…
riscv-tests には 仮想アドレスをサポートするためのシンプルな実装がある。 env/v/vm.c に仮想アドレスをサポートするためのコードがある。 これを読み解いて、実際に仮想アドレスが有効になった場合の動作を解析していこう。 基本的に、 vm_boot()の流れを…
ISCA 2025で発表された "Insights into DeepSeek-V3: Scaling Challenges and Reflections on Hardware for AI Architectures" を読んでみることにした。 3. 低精度駆動設計(Low-Precision Driven Design) Deepseek-V3では、 FP8混合精度学習 と LogFMT (Log…
ISCA 2025で発表された "Insights into DeepSeek-V3: Scaling Challenges and Reflections on Hardware for AI Architectures" を読んでみることにした。 大規模言語モデル(LLM)の急速なスケーリングは、現在のハードウェアアーキテクチャにおけるメモリ容…
ISCA 2025で発表された "The XOR Cache A Catalyst for Compression" を読んでみることにした。 2. 背景 2.1. 現代のキャッシュ階層 キャッシュ階層は通常、包含型 (inclusive) 、非包含、非排他的 (NINE) 、 排他的 (exclusive) に分類される。 Inclusiveキ…
仕様書を読みながら、RISC-VのZc拡張について勉強する。 もうちょっと詳細に読み解いていくことにする。 PUSH/POP レジスタ命令 PUSH/POP 命令は、レジスタの保存および復元を一括で行うための命令群である。 cm.push 命令は指定されたレジスタ群をスタック…
msyksphinz-self.github.io riscv-isadoc ドキュメンにZc拡張の命令一覧を追加した。 追加している最中に、Zc拡張の実装については結構ややこしいな。とくにpush/pop命令。
仕様書を読みながら、RISC-VのZc拡張について勉強する。 Zc拡張は、コードサイズの削減を主目的とした一連の拡張群であり、組み込み用途や省メモリ環境において特に有用である。 Zc拡張とは Zc拡張は、既存のC(Compressed)拡張のサブセットや、16ビット命…
msyksphinz-self.github.io riscv-isadoc ドキュメンにZfh拡張の命令一覧を追加した。 追加している最中に、F/Dのエンコーディングにも間違いがある気がするから、これも修正しないと。
ISCA 2025で発表された "The XOR Cache A Catalyst for Compression" を読んでみることにした。 現代の計算機システムは、ラスト・レベル・キャッシュ(LLC)に対して多大なリソースを割り当てている。 このLLCを圧縮する可能性について考え、プライベートキャ…
msyksphinz-self.github.io riscv-isadoc ドキュメンにB拡張の命令一覧を追加した。 WaveDromの資料作成自体は、riscv-isa-manualリポジトリのものを持ってくるだけなので簡単にできた。
RISC-V仕様書の更新をするために、B拡張についてまとめている。 RISC-Vアーキテクチャは、柔軟かつ拡張性の高い命令セットを特徴としている。 B拡張(Bit Manipulation Extension)は、ビット操作に特化した命令群を提供し、コードサイズの削減、性能向上、消…
HPCA 2025で発表された以下の論文を読んでみることにした。 www.computer.org msyksphinz.hatenablog.com 実験環境 Alectoの性能を評価するための実験環境と評価対象を示す。 評価環境: Gem5-Fusionシミュレータをベースに、ハイブリット・プリフェッチャ構…
msyksphinz-self.github.io riscv-isadoc ドキュメントのCompressed命令に関する章をアップデートした。 今回のアップデートにより、とりあえず既存の命令一覧についてはすべてアップデートが完了したことになる(まあバグは残ってるかもしれないけど)。 次は…