5

使用されるメモリ (RAM) 帯域幅をどのように計算しますか? どのパフォーマンス カウンターが必要ですか?

それを実行できるツール、「Rightmark マルチスレッド メモリ テスト」に出くわしました。しかし、Rightmark の他のテストとは異なり、ソース コードは見つかりませんでした。バイナリだけです。

4

2 に答える 2

1

コードを Linux で実行できる場合は、Cachegrindを使用します。

Cachegrind はキャッシュ プロファイラーです。CPU の I1、D1、L2 キャッシュの詳細なシミュレーションを実行するため、コード内のキャッシュ ミスの原因を正確に特定できます。ソースコードの各行で実行されたキャッシュミス、メモリ参照、および命令の数を、関数ごと、モジュールごと、およびプログラム全体の要約で識別します。これは、任意の言語で作成されたプログラムで役立ちます。Cachegrind は通常より 20 ~ 100 倍遅くプログラムを実行します。

KCacheGrind GUIを使用することもできます。

于 2010-11-30T11:13:34.943 に答える
1

メモリ帯域幅の使用量を「計算」するのは非常に困難です。取り組むべき重要なキャッシュと MMU の問題がたくさんあります。それを行う唯一の実際の方法は、シミュレーションまたは実世界での測定を使用することです。

コードをデバッグし、実行されたメモリのロードおよびストア操作の数を数えることで、「大まかな」アイデアを得ることができます。ただし、それがキャッシュのヒット/ミスかどうかを知ることは別の問題です。

それはあなたの目的によります。推定値を取得する場合は、汎用コードの約 30% がメモリのロードとストアであるという経験則を使用できます。最悪のケースを想定している場合は、キャッシュが常に失われると想定して解決できます。

あなたができる可能性のあることの 1 つは、仮想化を検討することです。いくつかのオープン ソース オプションがあります (QEMU が思い浮かびます)。それらから特定のハードウェア測定値をエクスポートできる場合があります。

于 2009-05-28T14:21:24.137 に答える