波形ビューアよりも直感的に、printfデバッグよりも詳細に。 シミュレータのログを貼るだけで、ボトルネックを瞬時に特定するWebツール。
概要
Chronosは、RISC-Vプロセッサ(特にカスタム命令拡張)の開発効率を最大化するために開発された、サイクル精度のプロファイリング・可視化ツールです。 シミュレータが出力するテキストログを解析し、命令の実行、メモリストール、そしてソフトウェア制御によるオーバーヘッド(Gap)をインタラクティブなガントチャートとして描画します。

開発の背景:波形とログの間にある「見えない時間」
カスタム命令の実装において、「理論値よりも遅い」という問題は避けて通れません。しかし、その原因を特定するのは困難です。
- 波形ビューア (.vcd) は詳細すぎます。数万サイクルに及ぶ処理全体を俯瞰し、どこで詰まっているかを探すのには向きません。
- 単純なサイクルカウント だけでは、「計算が遅い」のか「メモリアクセスを待っている」のか、あるいは「命令発行前のfor文の処理(Gap)」が重いのか判別できません。
Chronosはこの課題を解決するために作られました。
主な特徴
1. サイクル精度の可視化 (Cycle-Accurate Visualization)
命令が「実行中(EXEC)」なのか、「データ待ち(STALL)」なのかを色分けして表示します。1サイクル単位での拡大縮小が可能で、キャッシュミスによる遅延なども視覚的に一発で発見できます。
2. 隠れたオーバーヘッドの検出 (Gap Detection)
ハードウェアが高速でも、それを駆動するソフトウェア(コンパイラの出力コード)に無駄があれば性能は出ません。Chronosは命令と命令の間に存在する「ログが出力されていない期間」を自動検出し、ソフトウェア・オーバーヘッドとして可視化します。
3. クライアントサイド完結の安全性
機密性の高いシミュレーションログを扱うため、セキュリティには最大限配慮しました。解析処理はすべてブラウザ上のJavaScript(Next.js)で完結しており、外部サーバーへのデータ送信は一切行われません。
技術スタック
- Framework: Next.js (App Router), TypeScript
- Visualization: Custom Gantt Chart Engine (CSS)
- License: MIT License (Open Source)
リンク
- Web Tool: chronos.jzurde.jp
- GitHub: github.com/Jzurde/chronos
