サイクルカウントを使用したスループット計算
-
28-09-2019 - |
質問
アプリケーションで消費されるサイクルカウント(プロセッサ命令サイクル)からプロセッサ上のアプリケーションのスループットを決定することは可能ですか?はいの場合、それを計算する方法は?
解決
プロセスが完全にCPUバインドされている場合、プロセッサ速度をサイクル数で分割してスループットを取得します。
実際には、完全にCPUバインドされたプロセスはほとんどありません。その場合、他の要因(ディスク速度、メモリ速度、シリアル化など)を考慮する必要があります。
他のヒント
単純:
#include <time.h>
clock_t c;
c = clock(); // c holds clock ticks value
c = c / CLOCKS_PER_SEC; // real time, if you need it
あなたが得る値は近似であることに注意してください。詳細については、 clock()
男ページ.
一部のCPUには内部があります パフォーマンスレジスタ これにより、命令サイクル(場合によっては実行ユニットベースでも)、キャッシュミス、キャッシュ/メモリの読み取り/書き込みなど、あらゆる種類の興味深い統計を収集できます。これらに直接アクセスできますが、何に応じてアクセスできます。そこに使用しているCPUとOSは、GUIを介してすべての詳細を管理する既存のツールがある場合があります。多くの場合、優れたプロファイリングツールはパフォーマンスレジスタをサポートし、それらを使用して統計を収集できます。
使用する場合 皮質-M3 ti/luminary microから、あなたは driverlib Ti/Luminar Microによって配信されます。 Systick関数を使用すると、Systickperiodを1プロセッササイクルに設定できます。したがって、割り込みの間に1つのプロセッサクロックがあります。割り込みの数をカウントすることにより、関数または関数ブロックがどれだけの時間をかけるかについて「十分に推定される」を取得する必要があります。