[Q2HB] Performance Counter Core
[Altera][Q2HB][IP] Performance Counter Core
refer to:"Volume 5: Embedded Peripherals","Section V. Test and Debug Peripherals", "29. Performance Counter Core"
注意
performance counterは,複数clockを使用するシステム上では,CPU clockと同じdomainに配置すること.異なる場合はサイクル数から実時間へ正しく変換できない.(p.2453 "Multiple Clock Domain Considerations")
Core Overview
高精度パフォーマンスカウンタを提供するらしい.GNU profiler, gprofでも使得る模様.通常のInterval timerを利用することも可能.
3種類の測定方法については,"AN 391: Profiling Nios II Systems."にて述べる.
機能としては,クロックサイクルの計数と,イベント回数の記録である.それぞれ64bit/32bit精度を有す.
Software Programming Model
便利なマクロや関数が用意されている.カウンタの初期化,開始,停止,測定対象セクションの開始・終了を行う.測定結果についても,テキストベースで表を出力する関数を用意してある.
パフォーマンスカウンタの名称を"performance counter"とした場合で,section counterは1番目を用いる例である.
PERF_RESET( PERFORMANCE_COUNTER_BASE ); PERF_START_MEASURING( PERFORMANCE_COUNTER_BASE ); PERF_BEGIN( PERFORMANCE_COUNTER_BASE, 1); // 測定対象となる処理 // PERF_END(PERFORMANCE_COUNTER_BASE, 1); PERF_STOP_MEASURING(PERFORMANCE_COUNTER_BASE) ; printf("%qu cycle \n", perf_get_section_time(PERFORMANCE_COUNTER_BASE, 1));
注意点としては,section timeのみを図りたい場合でも,total counterも起動する必要があること.また,printfでalt_u64の表示を行う場合には,書式装飾子"q"*1を付与する必要がある.
注意事項
英語力の弱い人が適当に訳して抜粋,補強しています.
あやしいな,と思ったらご指摘いただけますと幸いです.
なお,オリジナルの英文を参照されることを強く推奨いたします.