偽共有とは何ですか?

偽共有とは、同時に実行されている2つのアプリケーションが、各プログラムまたはプロセスが独自のキャッシュに保存した同じ論理メモリ領域の情報にアクセスしようとしたときに、コンピュータープログラムで発生する可能性のある状況です。 各アプリケーションのキャッシュ内のデータは共通のソースからコピーされるため、一方のキャッシュを変更すると、他方のキャッシュをソースから再ロードする必要があります。 共有の誤った側面は、1つのプログラムによってキャッシュラインに加えられた変更が、2番目のプログラムが使用しているデータに実際に影響を与えない場合に発生します。プログラムのパフォーマンス。 偽共有の問題は、アプリケーションに含まれるコードの直接的な結果ではないため、検出が困難です。ただし、現在共有されている行にあるデータを別の行に移動するなど、偽共有を防ぐ効果的な方法があります。

誤った共有が発生する主な理由の1つは、オペレーティングシステムまたはハードウェアがデータの読み取りと書き込みを処理する方法にあります。 ハードディスクまたは他のソースからの情報がプログラムによって読み取られたり書き込まれたりする場合、通常は一時的なキャッシュにロードされるため、迅速にアクセスできます。 ソースの場所からキャッシュされる情報の量はキャッシュラインと呼ばれ、通常は2バイトから256バイトの長さのメモリの論理ブロックです。 一部のオペレーティングシステムまたはシステムアーキテクチャでは、並列処理などでプログラムを同時に実行できます。 つまり、2つの別々のプログラムが同じキャッシュラインの情報にアクセスしようとする可能性があるため、各プログラムにはソースデータの独自のコピーがあり、一方のキャッシュの変更が他方のキャッシュに反映されない可能性があり、保持するデータ。

2つのプログラムが同じキャッシュラインにアクセスしようとする状況を処理するために採用されているメカニズムは多数ありますが、ほとんどの場合、一方のプログラムは、他方のプログラムが変更した更新情報でキャッシュを強制的にリロードすることになります。 この種のインシデントは、各プログラムがアクセスしているキャッシュライン内のデータが関連していない場合、偽共有として知られているため、1つのプログラムにキャッシュをリロードさせることは処理能力と他のリソースの浪費です。 これはほとんどの場合、キャッシュ内の情報を変更しないプログラムにとって問題であるため、他のプロセスが行った変更をアプリケーションが上書きするリスクはありません。

偽りの共有の影響を防止または軽減するための2つの一般的な方法があります。 1つは、メモリ内のデータの前後に空白の情報を追加し、本質的に別のプログラムからアクセスされていない別のキャッシュラインに強制的に追加することです。 2番目の方法は、キャッシュラインへの読み取りおよび書き込みの頻度を制限して、キャッシュラインができるだけリロードされないようにすることです。 より複雑なソリューションには、キャッシュレベルの管理や、オペレーティングシステムによる共有の処理方法の変更が含まれます。

他の言語

この記事は参考になりましたか? フィードバックをお寄せいただきありがとうございます フィードバックをお寄せいただきありがとうございます

どのように我々は助けることができます? どのように我々は助けることができます?