3

命令ごとのミスとコンピューター実行時間のミスペナルティの違いは何ですか? この質問は、コンピューター アーキテクチャに関連しています。

4

1 に答える 1

5

命令あたりのミス数 (MPI、または 1000 命令あたりの MPKI ミスとして知られている) は、特定のワークロードが特定のキャッシュ階層を持つ特定のマシンでどのように動作するかを説明する統計です。これは、アクセス パターン (コードが同じアドレスに何度もアクセスしているのか、それとも常に新しいアドレスにアクセスしているのか? 繰り返しアドレスの「再利用距離」とは?) と、キャッシュ サイズ、連想性、置換の両方に依存します。ポリシーなど。また、キャッシュごとに固有です。特定のワークロードでは、L1 キャッシュ、L2、および L3 (またはその他のキャッシュ階層) に対して異なる MPKI 値が設定されます。

ちなみに、同様の別の統計はキャッシュ ヒット率 (総アクセス数に対するヒット数) です。これら 2 つは、X 命令あたりのメモリ操作の数に応じて関連しています。

上記のすべては、指定されたコードに対してキャッシュがどの程度効果的に動作するかを示唆している可能性があります (このコードがキャッシュの動作によりメモリのボトルネックを経験しているかどうか)。ただし、各アクセスの速度はわかりません。そのためには、ミス ペナルティを測定する必要があります。キャッシュの次のレベルからラインがフェッチされるまでに何サイクル待機する必要があるかです。もちろん、これはシステムごとに異なりますが、最新の CPU では、たとえば、L1 にヒットするアクセスに対して数回 (3 ~ 5 サイクル)、L1 にヒットせず L2 にヒットするアクセスに対して数サイクル (3 ~ 5 サイクル)、最大 30 を期待するのが一般的です。 L3 に到達するアクセスの場合は 100 サイクル、すべてのキャッシュ レベルが失われメモリに到達するアクセスの場合は 100 サイクル以上になります。

これら 2 つの統計の組み合わせは、コード内のメモリ アクセスに費やす時間を大まかに説明できますが、実行時間がどのくらいかはわかりません。アクセスがどのようにインターリーブされるかによって異なります (依存関係がなく、 CPU がサポートするアウトスタンディング リクエストの数を考えると (各レベルは、ライン フィル バッファ、メモリ クレジット、バス帯域幅など、さまざまなリソースと制限によって異なります)。たとえば、リンクされたリストをトラバースすることは、すべてのアクセスがシリアル化されることを意味するため、ミス率が高い場合は、ミス ペナルティを蓄積する必要があります。私が言ったように、並列アクセスはより高速になりますが、それでも物理的な制限があります。

全体として、これらの統計は、コードのプロファイリングと最適化を行う場合に非常に役立ちます。これらの統計は、ボトルネックがどこにあるか、およびシステムがボトルネックに対して支払う金額を示している可能性があるためです。

于 2013-10-14T13:06:48.783 に答える