18

最近 Epic Answer としてタグ付けされたこの質問とその回答は、私に疑問を抱かせました。CPU 分岐予測の失敗に関して、Windows で実行中のアプリケーションのパフォーマンスを測定できますか? いくつかの静的分析ツールが存在し、分岐予測の状況で優れたパフォーマンスを得るためにコードを最適化するのに役立つ可能性があること、および変更を加えて再テストするだけで手動の手法が役立つことを知っていますが、できる自動メカニズムを探していますWindows アプリケーションの実行中に、一定期間にわたって分岐予測エラーの総数が報告されました。Visual C++ 用のプロファイラー ツールが役立つことを願っています。

この質問のために、問題のアプリケーションは、Visual C++ for Windows などのネイティブ コンパイラでビルドされているか、GCC、FreePascal、Delphi、TurboAssembler などの他のネイティブ コンパイラを使用してビルドされています。実行可能ファイルには、デバッグ情報がまったくない場合があります。おそらく、WMI などの Windows サービスを介して内部 CPU 情報を読み取るか、VirtualBox を使用するなど、Windows を実行する仮想化環境内で完全に実行し、完全にVirtualBox内でテストアプリケーションを使用し、仮想CPUのランタイム分析を行う仮想化Windows環境。または、私が知らない他のテクニック、したがってこの質問。

はい、ググってみました。有望に見える唯一のものは、AMD からのこの PDFです。18ページは、私がやりたいことに非常に近いことを述べていますが、オペレーティングシステムなしで、生の評価用ハードウェアプラットフォームで作業する人向けに書かれているようです:

5.1. 枝。適用性。条件付き分岐の予測ミスは、意思決定ロジックが多いコードでは重大な問題になる可能性があります。

真または偽のパスを選択する可能性がランダムであるか、50-50 の分割に近い場合、条件分岐は誤って予測される可能性があります。分岐予測ハードウェアはパターンを「学習」できず、分岐は正しく予測されません。コレクション。次の表のイベントを収集して、分岐予測のパフォーマンスを測定します。

分岐 次の式を使用して、分岐が行われる割合と分岐あたりの命令数の比率を計算します

更新: Intel Core i7 PMU モジュール、または他の CPU の同等の機能を読み取る方法を探していると言えます。Intel VTUNE (Adrian のコメントによる) は、私が求めていたものに非常に近いようです。

4

1 に答える 1

5

VTune パフォーマンス アナライザーならそれが可能です! ところで、これらのトピックについて学習している場合は、Intel Press の「Optimization Cookbook」をご覧ください。

注: コメントには同じ回答が示されていますが、多少の不確実性はありますが、VTune を使用して Intel CPU の分岐予測率を測定しました。だから私は100%確信しています。

ここにVTuneのリンクがあります

ここに本のリンクがあります

于 2012-07-11T18:25:26.083 に答える