FPGA開発日記

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

2026-05-01から1ヶ月間の記事一覧

SPEC CPU 2006 を SimPoint (100M interval) と Full-run で比較してみる (8. サブクラスタリングを他 subcmd でも試した)

msyksphinz.hatenablog.com 前回で、403.gcc subcmd 1 に対して QEMU cachevec.so プラグインで per-interval cache stats を取得 元の SimPoint で broken だったクラスタ (cluster 8) を L2 miss density で sub-cluster 3 つの sub-rep を Sniper で追加…

SPEC CPU 2006 を SimPoint (100M interval) と Full-run で比較してみる (7. QEMU プラグインでGapの緩和策の実装)

msyksphinz.hatenablog.com 前回で、 403.gcc subcmd 1 の cycle gap (−13%) の主因は cluster 8 の代表点バイアス cluster 8 内 variance の主因は メモリ階層ストレス (DRAM access 密度) DRAM access 数で cycle の 97% が説明できる (r=0.986) BBV クラ…

SPEC CPU 2006 を SimPoint (100M interval) と Full-run で比較してみる (6. cluster 8 の variance を解析する)

msyksphinz.hatenablog.com 前回で、 403.gcc subcmd 1 の cycle gap (−13%) のうち 71% は cluster 8 (rep simpoint 359) の代表点バイアスで説明できる cluster 8 はクラスタ内 IPC 0.16 〜 1.01 (6.3×) の極めて wide な分布 mean 236M / median 144M で …

SPEC CPU 2006 を SimPoint (100M interval) と Full-run で比較してみる (5. クラスタリングバイアスの解析)

msyksphinz.hatenablog.com 前回、cluster 9 (代表は simpoint 410) のメンバー 75 個を全部実走してみた。その結果、 クラスタ内のばらつき (variance) は確かにある でも cluster 9 単体の bias は −5.7% しかなく、benchmark 全体の −13% gap にはほとん…

SPEC CPU 2006 を SimPoint (100M interval) と Full-run で比較してみる (4. クラスタリングバイアス)

これまでの流れを振り返ると、 # 内容 結果 1. 403.gcc を SimPoint と Full-run で比較 cycle が −13% で過小評価。cold-cache が原因と仮説提示 2. 20M warmup を入れて再シミュレーション cycle 変化 +0.06〜+1.0%、ほぼゼロ 3. warmup を 50M に伸ばして…

SPEC CPU 2006 を SimPoint (100M interval) と Full-run で比較してみる (3. SimPoint の cold-cache 仮説、warmup を 50M に伸ばしてもダメだった)

前回の記事: msyksphinz.hatenablog.com 前回では、 SIFT に 20M 命令の warmup 領域を入れて再シミュレーション 高重み 3 simpoint (合計重み 52%) で cycle 変化は +0.06〜+1.0% でほぼゼロ 「cold-cache が cycle 過小評価の主因」という仮説は 20M レベ…

SimPoint の interval を 20M と 100M に振って SPEC CPU 2006 の実行サイクル数を比較してみる (2. 「指定した命令数より 1M 命令ぶん少なく ROI が取れる」問題を追う)

SPEC CPU 2006 を SimPoint + Sniper で回すとき、SIMPOINT_INTERVAL を 20M / 100M に振った結果を素朴に突き合わせると、 全ベンチマークで一律 +4.21% の命令数オフセット が観測される、という現象に遭遇した。 この値があまりにきれいに固定されている…

SPEC CPU 2006 を SimPoint (100M interval) と Full-run で比較してみる (2. SimPoint の cold-cache 仮説を warmup 付き SIFT で検証)

前回の記事: 前回の記事で、SPEC CPU 2006 / 403.gcc を SimPoint (100M interval) と Full-run の 2 通りで比較したところ、 命令数: −1.1% で実質一致 サイクル数: −8〜−13% で SimPoint が過小評価 DRAM アクセス回数: −15〜−26% で SimPoint が過小評価…

SimPoint の interval を 20M と 100M に振って SPEC CPU 2006 の実行サイクル数を比較してみる

SPEC CPU 2006 を Sniper でサイクルレベルにまわすときは、SimPoint で代表区間を切り出してから流すのが定番だ。 このとき悩ましいのが SimPoint のクラスタリングに使う interval 長 の設定で、 小さくする (例: 20M 命令) ほどクラスタリングは細かくな…

SPEC CPU 2006 を SimPoint (100M interval) と Full-run で比較してみる

SPEC CPU 2006 をサイクルレベルで全区間 (Full-run) シミュレーションしようとすると、1 ベンチマークで数百億〜数兆命令のシミュレーションが必要になる。 これを Sniper のようなサイクル近似シミュレータでまわしても、1 つの subcmd を完走させるのに数…

SPEC CPU2026を読む(6. Rolling Round-Robin Rateによるヘテロジニアス負荷評価)

今回は、SPEC CPU2026で導入された Rolling Round-Robin Rate、略して RRR を整理する。論文では、RRRはヘテロジニアスなmultiprogrammed workloadを評価するための新しい実行方式として説明されている。 従来のSPECrate SPEC CPUの従来のmulti-copy benchma…

SPEC CPU2026を読む(5. 長く使えるベンチマークにするための移植性と検証)

今回は、SPEC CPU2026を長期間利用できるベンチマークスイートにするための取り組みを見る。論文では、Longevity and Portability の章で、標準準拠、未定義動作の除去、エンディアン対応、Windows対応、I/O削減、メモリ安全性検証について説明している。 長…

SPEC CPU2026を読む(4. 採用されなかったワークロードから見る選定方針)

今回は、候補に上がりながら採用されなかったワークロードを整理する。論文では、除外された候補について具体例を挙げながら、SPEC CPU2026の選定方針を説明している。 除外の主な理由 SPEC CPU2026では、候補アプリケーションを以下の観点で評価している。 …

SPEC CPU2026を読む(3. 実アプリをベンチマークに変換する)

前回は、SPEC CPU2026に含まれるベンチマーク一覧を見た。 gcc、llvm、sqlite、cpython、gem5、zstd、cactus、roms、namd、marianなど、かなり現代的な実アプリケーションが含まれていることが分かった。 ただし、ここで一つ注意が必要である。 SPEC CPU2026…

SPEC CPU2026を読む(2. ベンチマーク一覧から見る現代CPUワークロード)

前回は、SPEC CPU2026の全体像を見た。 SPEC CPU2026は、単にCPU2017のベンチマークを入れ替えたものではなく、現代のCPU、コンパイラ、ソフトウェアスタック、サーバ環境を反映するために、かなり大きく作り直されている。 今回はSPEC CPU2026に含まれるベ…

SPEC CPU2026を読む(1. 次世代CPUベンチマークは何を測ろうとしているのか)

CPUの性能評価でよく出てくるベンチマークとして、SPEC CPUがある。 CPUを作っている会社の資料や、サーバ向けCPUの性能比較、コンパイラ最適化の評価、アーキテクチャ研究の論文などを見ていると、SPEC CPUのスコアがよく使われている。個人的にも、CPU性能…

Top-Down Microarchitecture Analysisとは何か(8. 現代CPUにおける Top-Down Analysis)

前回の続き。 msyksphinz.hatenablog.com ここまで見てきたように、Top-Down Analysis は単なる PMU event collection ではなく、CPU resource accountingとして設計されている。 今回は、現代 CPU においてTop-Down Analysis がどのように使われているかを…

Top-Down Microarchitecture Analysisとは何か(7. ケーススタディから見る性能最適化)

前回の続き。 msyksphinz.hatenablog.com 前回は論文の評価パートを読みながら、実際の workload がTop-Down Analysis でどう分類されるのかを整理した。 本稿では論文後半の case study を読みながら、Top-Down Analysis が実際の性能最適化でどのように使…

Top-Down Microarchitecture Analysisとは何か(6. SPEC CPU2006 の結果を読む)

前回の続き。 msyksphinz.hatenablog.com 前回は Top-Down Analysis を実現するためのPMU Counters Architectureについて整理した。 次は、評価パートを読みながら、Top-Down Analysis を適用すると実際の workload はどのように見えるのかを整理していく。 …

Top-Down Microarchitecture Analysisとは何か(5. PMU Counters Architecture を読む )

前回の続き。 msyksphinz.hatenablog.com 前回は Top-Down Analysis におけるMemory Boundの考え方について整理した。特に重要だったのは、cache miss があったかではなくexecution resource が idle になったかを基準に stall を定義している点である。次は…

Top-Down Microarchitecture Analysisとは何か(4. Memory Bound はどのように分類されるのか)

前回の続き。 msyksphinz.hatenablog.com 前回は Top-Down Analysis の4分類、 Retiring Bad Speculation Frontend Bound Backend Bound について整理した。次は Backend Bound の中でも特に重要な「Memory Bound」について論文の Section 3.7 を中心に読み…

Top-Down Microarchitecture Analysisとは何か(3. Top-Down Analysis の主要カテゴリと計算要素)

前回の続き。 msyksphinz.hatenablog.com Top-Down Analysis の主要カテゴリと計算要素 カテゴリ 計算式(概念) 主な構成イベント 意味 Bad Speculation (SlotsIssued − SlotsRetired + RecoveryBubbles) / TotalSlots SlotsIssued, SlotsRetired, Recovery…

SPEC CPU2006 SimPoint CI パイプラインまとめ (7. SPEC2006 ワークフローに「外部 SIFT」を読むオプションを足した)

SIFT トレースの生成は QEMU 周りに依存するため、環境を分けていると「別環境で SIFT まで作り、Sniper と IPC 集計だけ手元で回したい」ということがある。 spec2006_work/Makefile に、事前に別環境で生成した SIFT と SimPoint の重みを指す EXTERNAL_SI…

Top-Down Microarchitecture Analysisとは何か ― Intelの性能解析手法の基本思想を読む (2)

前回の続き。 msyksphinz.hatenablog.com Top-Down Analysis の出発点は次の4分類である。 Retiring Bad Speculation Frontend Bound Backend Bound この4分類がそれぞれ何を意味しているのか、そしてどのように性能解析に利用されるのかを論文の Section 3 …

CHI(Coherent Hub Interface)のチャネル構造を勉強する (6. CHI 代表的なトランザクションフロー集)

前回の続き: この記事は Claude (AI) にまとめてもらいました。 msyksphinz.hatenablog.com Flow 4: ダーティラインへのスヌープ (SnpShared: UD → SD) 発生条件: CPU0 が UD でラインを保持しているときに CPU1 が ReadShared を発行する sequenceDiagram …