FPGA開発日記

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

2025-11-01から1ヶ月間の記事一覧

RISC-VのN-Traceの仕様について調べる (2. レジスタ群とブートアップシーケンス)

前回: RISC-VのN-Traceの仕様について調べる (1. RISC-V Trace Control Interface の仕様について) - FPGA開発日記 レジスタ群 1. Trace Encoder 周りのレジスタ群 1.1 Trace Encoder 本体 (trTe??) ベース: trBaseEncoderN RISC-V-Trace-Control-Interface…

RISC-VのN-Traceの仕様について調べる (1. RISC-V Trace Control Interface の仕様について)

RISC-V トレース機能は、プログラム実行時の挙動を外部へ記録し、デバッグ・性能解析・実行経路再現などを可能とする仕組みである。 本機能は主として、Trace Encoder がトレース情報を生成し、各種 Sink がそれを保存・出力するという構造で成り立っている…

TerraformでAWS Devサーバを構築する手順をしらべる (6. Terraformの自動セットアップ, ジョブサーバ側)

ジョブサーバーの自動セットアップフロー ジョブサーバーでは、以下の処理が自動実行される: ホスト名の設定 パッケージのインストール EFSのマウント フロントエンドサーバーからのNFSマウント Slurm設定ファイルとMunge keyの取得 Slurmワーカーのインス…

TerraformでAWS Devサーバを構築する手順をしらべる (5. Terraformの自動セットアップ, フロントエンドサーバ側)

user_dataとは user_dataは、EC2インスタンス起動時に実行されるスクリプトである。Terraformのaws_instanceリソースでuser_dataパラメータを指定すると、インスタンスの初回起動時にそのスクリプトが自動実行される。 resource "aws_instance" "frontend" {…

TerraformでAWS Devサーバを構築する手順をしらべる (4. Terraformの実行)

Terraformを設定したので、使い方をまとめておく。 変数ファイルの設定 example.tfvarsを編集して、VPC ID、サブネットID、キーペア名を設定した: vpc_id = "vpc-xxxxxxxx" subnet_id = "subnet-xxxxxxxx" key_name = "your-key-name" frontend_instance_ty…

TerraformでAWS Devサーバを構築する手順をしらべる (3. AWS Slurmクラスターの構築)

作業の目的 AWS上にSlurmクラスターを構築する必要があったので、Terraformを使って完全自動化で構築できるようにした。 構築した環境 フロントエンドサーバ: Slurmコントローラー(slurmctld)を実行 ジョブサーバ: Slurmワーカー(slurmd)を実行 固定IPア…

SPEC2006/SPEC2017をRISC-V環境で実行するためのリポジトリを構築する (Sniperフロントエンドのデバッグ作業)

SIFTファイルを生成してデバッグできるようになったが、いくつか問題があるのでデバッグしていこう。 SniperシミュレータのQEMUフロントエンドにおいて、RISC-V命令のメモリアクセスのレコード機能についてデバッグする。 実行時に以下のようなデバッグ出力…

QEMUを用いてPCIeデバイスを自作する勉強 (2. QEMUを用いたビルドの試行)

幾つかの修正を行い、最終的なコードにおいて、主要な部分は以下のようになった。 #include "qemu/osdep.h" #include "hw/pci/pci_device.h" #include "hw/qdev-properties.h" #include "qapi/error.h" #include "qemu/module.h" #define TYPE_MY_ACCEL "my-…

QEMUを用いてPCIeデバイスを自作する勉強 (1. my_accel.c を理解する)

PCIeの勉強をするために、QEMUを用いて実際の簡単なデバイスを作って、理解をしていこうと思う。 my_accel.c の仕組みを、QEMU デバイスモデルの構造から理解していこうと思う。 本記事で扱うサンプルデバイス my-accel は、PCIe の BAR0 に簡単な MMIO レジ…

SimPoint を用いたベンチマーク高速評価フローまとめ

SimPoint は、長大な実行トレースから代表的な実行区間(Simulation Points)を抽出して、アーキテクチャ評価の計算量を劇的に削減するための技術である。 SimPoint に基づく Fast-Forward → Warmup → Detailed Simulation のフローをまとめる。 全体の流れ …

SPEC2006/SPEC2017をRISC-V環境で実行するためのリポジトリを構築する (Sniperシミュレーションの実行)

生成したSIFTトレースを使用して、Sniperシミュレータで詳細な性能評価を行う。 Sniperの設定 Sniperシミュレーションでは、複数の設定ファイルを使用する: CONFIG_BASE="${CONFIG_DIR}/riscv-base.cfg" CONFIG_MEDIUMBOOM="${CONFIG_DIR}/riscv-mediumboom…

RISC-Vの割り込み受付機構IMSICについて調査する

各HARTに1個のIMSICが定義されている。各HARTの外部割り込み専用コントローラとして動作する。 MSIのアドレスとデータに基づき、どのHART向けの割り込み要求か、どの特権レベル / どの仮想 HART(ゲスト)向けの割り込み要求かを識別する。 識別した結果を割り…

SPEC2006/SPEC2017をRISC-V環境で実行するためのリポジトリを構築する (SIFTトレース生成の実装)

MakefileにおけるSIFT生成ターゲットの実装 基本設定 Makefileでは、SIFT生成に必要な各種パスと設定を定義している。 # Generate SIFT traces based on SimPoint results run_sift: $(RUN_SIFT_TARGETS) $(RUN_SIFT_TARGETS): benchmark=$(subst run_sift_,…

QEMUでRISC-V Linuxのブート環境を構築する

RISC-Vアーキテクチャ向けのLinuxカーネルをQEMU上で動作させる環境を構築する。 この環境では、Dockerを使用してビルド環境を統一し、BusyBoxベースのルートファイルシステムとLinuxカーネル、OpenSBI、QEMUを組み合わせてRISC-V Linuxのブート環境を構築す…

RISC-V Summit 2025を概観する (Day-3)

続いて、Day-3の資料の要約をChatGPTで行った。 State of the Union Krste Asanović (Chief Architect, RISC-V International) KrsteはRISC-Vの現状を「強い」と総括し、組込みからAIアクセラレータまで業界全域で採用が本格化していると説明。RVA23p1の進展…

RISC-V Summit 2025を概観する (Day-2)

続いて、Day-2の資料の要約をChatGPTで行った。 Paving the Road to Data Center-Scale RISC-V Martin Dixon(Google) GoogleのMartin Dixonは、データセンター規模でのRISC-V展開に向けたロードマップを示した。講演では、x86→Armへの移行経験から得た知見…

RISC-V Summit 2025を概観する (Day-1)

ChatGPT に頼んで、Day-1の資料を読み込みつつだいたいの概要を掴めるようにした。 Building RISC-V Together: Progress, Process, and Participation Rafael Sene (RISC-V International) RISC-V Internationalの標準化プロセスとコミュニティ構造を体系的…

RISC-V Summit 2025を概観する (全体スケジュール)

ChatGPT に頼んで、RISC-V Summit 2025の全体的なスケジュールを表に変換してもらった。 10/21 (Tue) – Member Day / Committees セッションタイトル 登壇者 / 所属 分類タグ Building RISC-V Together: Progress, Process, and Participation Rafael Sene (…

RISC-V Summit 2025: State of the Union を読み解く

今年のRISC-V Summit 2025でのKrste Asanovic のState of the Union(一般教書演説) を読んでいく。 events.linuxfoundation.org RISC-Vは今どこにいるのか RISC-Vは今や安定した成長期に入っている。 RISC-Vは組み込み用途での地位を確立した上で、現在はア…

SPEC2006/SPEC2017をRISC-V環境で実行するためのリポジトリを構築する (SimPoint / BBVの並列取得)

BBVは、プログラムの実行特性を分析するための情報で、SimPointでの計算に利用する。QEMUのBBVプラグインを使用してBBVデータを収集する。 BBVプラグインの設定 BBV_PLUGIN := $(QEMU_BUILD_DIR)/contrib/plugins/libbbv.so BBV_DIR := bbv_results BBV収集…

SPEC2006/SPEC2017をRISC-V環境で実行するためのリポジトリを構築する (ベンチマークの並列実行)

前回までで、SPEC Benchmarkのビルド環境を構築したので、QEMUでベンチマークを実行する際の並列化する。 GNU parallel を使用してベンチマークの実行を並列化する仕組みを構築する。 並列化の設計方針 並列化は以下の2つのレベルで実現する: 1. ベンチマー…

SPEC2006/SPEC2017をRISC-V環境で実行するためのリポジトリを構築する (ベンチマークの並列実行)

spec2006_work/Makefile では、GNU parallel を使用してベンチマークの実行を並列化している。 ベンチマークの並列実行 ベンチマーク実行時、specinvoke コマンドを使用してサブコマンドを抽出し、それらを parallel で並列実行する: $(RUN_BENCH_TARGETS):…

SPEC2006/SPEC2017をRISC-V環境で実行するためのリポジトリを構築する

SPEC CPU2006およびSPEC CPU2017は、プロセッサの性能を評価するための標準的なベンチマークスイートであり、これをRISC-V向けにコンパイルするリポジトリを構築している。 リポジトリの全体構成 本リポジトリは、SPEC CPU2006/2017をRISC-V向けにクロスコン…

SPEC Benchmarkのビルド環境を作る (SPEC2006 / SPEC2017)

SPEC2017をビルド・実行できる環境を作ろう (1. ビルド環境の構築) - FPGA開発日記 SPEC2017をビルド・実行できる環境を作ろう (2. RISC-V向けバイナリを作成する試行) - FPGA開発日記 SPEC2017をビルド・実行できる環境を作ろう (3. RISC-V向けバイナリを作…