じゅーるで

人間の大学生のポートフォリオ

Chronos(クロノス)

サービス

RISC-Vカスタム命令の「隙間」を可視化するプロファイラ

Chronos(クロノス)

波形ビューアよりも直感的に、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)

リンク