Multi-Processors」の日本語参考訳です。現在、コアごとに複数のローカルキャッシュ階層を持つ、マルチコア、シングルノードのシステムが一般的になっています。以上のコアが備わっており、サーバーシステムでは数十のコアに至ります。ソフトウェアは、マルチスレッドによってこれらのコアを利用します。スレッドは共通アドレス空間の共有データ構造で動作するため、異なるコアのローカルキャッシュに存在するデータのコピーを互いに調整する必要があります。(これは、マルチスレッド・プログラムが共有メモリーのアトミック更新を保証するために使用する同期メカニズムとは関連性がありません)。メモリー・サブシステムは、複雑なキャッシュ一貫性プロトコルを実装することで、この一貫性を保証します。これは、複数のスレッドが共有メモリーにアクセスして更新を行う際に、パフォーマンスに影響します。この記事では、キャッシュの一貫性プロトコルと、それらがマルチスレッド・プログラムのパフォーマンスに与える影響について説明します。備える少容量ですが高速なメモリーの一種です。メインメモリーのコピーを保持する個別のキャッシュが備わっています。実行中にこれらのキャッシュの内容を相互に同期および更新します。バイトのブロック単位でメモリーからキャッシュに転送されます。メモリーを読み書きする場合、最初にキャッシュラインのいずれかにそのアドレスが存在するか確認します。そのキャッシュラインをフェッチします。存在しない場合は、以降に使用することを想定し新しいキャッシュラインのエントリーが割り当てられます。メモリーからデータを取り込むかどうか決定する前に、ローカルキャッシュだけでなく他のコアのキャッシュをチェックする必要があります。すべてのコアのすべてのキャッシュにわたってメモリーアクセスごとに生じるチェックの回数を減らすため、すべてのキャッシュラインには特定の情報が保持されています。(Exclusive)」アクセスとしてマークします。排他モードである限り、以降のロードはすべてこのデータにアクセスします。(Shared)」としてマークされます。(Invalid)」メッセージが送られます。(Shared)」としてマークされます。キャッシュミスを引き起こし、メインメモリーから更新されたコピーをフェッチします。アクセスすると、以下が発生することが分かります。メモリーへの書き込みメモリーからの読み取り異なるコアで実行される複数のスレッドがアクセスするメモリー位置では、これは最新の値を提供し、メモリーモデルの一貫性を保証するために必要です。効率のため、キャッシュの一貫性プロトコルは、個別のバイト単位ではなくキャッシュライン単位で動作します。フォルス・シェアリングでは、同じキャッシュラインに存在する異なるメモリー位置にアクセスするスレッドにもキャッシュ一貫性プロトコルのメカニズムが適用されるため、パフォーマンスが低下します。場合によっては、このパフォーマンス・ペナルティーは大きくなる可能性があります。つのメモリー位置にアクセスします。つのスレッドが同じ変数にアクセスしているかのようにパフォーマンス・ペナルティーが生じます。プログラムの実行中にマイクロアーキテクチャーで発生する各種イベントを監視する機能があります。(shared)」状態のメモリー位置の参照に関連するいくつかのイベントがあります。いう文字列が示されます。このイベントを監視することで、コア間のキャッシュライン相互参照があるか確認できます。キャッシュの変更状態のキャッシュラインへの参照数を知ることができます。必要なすべてのメトリックを自動的に計算します)。続きはこちらコンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。マガジンの最新号が公開されました。プロセッサー向けのコードの現代化について説明します。マガジンの最新号が公開されました。命令セットにより以前は不可能だったベクトル化を行う方法について紹介します。パフォーマンスを向上する方法に関する章を抜粋翻訳したものです。サイトはエクセルソフト株式会社が運営しています。社名、製品名などは一般に各社の表示、商標または登録商標です。