ダーティ キャッシュ ラインが (何らかの理由で) フラッシュされると、キャッシュ ライン全体がメモリに書き込まれますか、それとも CPU がどのワードに書き込まれたかを追跡し、メモリ書き込みの数を減らしますか?
これがアーキテクチャ間で異なる場合、私は主に Blackfin についてこれを知りたいと思っていますが、x86 や ARM などでの実践を聞くとよいでしょう...
通常、書き込みバッファーがある場合、書き込みバッファー (キャッシュ ライン全体) を介してフラッシュします。次に、ある時点で書き込みバッファが RAM への書き込みを完了します。行内のアイテムごとにどの部分が汚れているかどうかを追跡するキャッシュについては聞いたことがありません。そのため、キャッシュ行があります。そのため、私が聞いたケースでは、回線全体が消えます。もう 1 つのポイントは、たとえば、キャッシュ DDR の裏側にある低速メモリが、一度に 32 ビット、一度に 64 ビット、一度に 128 ビット、または各部分が固定幅でアクセスされることは珍しくありません。その幅で、複数のパーツがあります。そのようなことなので、読み取り-変更-書き込みを避けるために、完全な RAM 幅のサイズで書き込みたいと考えています。確かに、キャッシュラインはその倍数であり、書き込みを行わない機会があります。
キャッシュラインの書き込み可能なアイテムごとにダーティビットが必要になるため、ダーティビットストレージがいくらか増加し、サイズやコストなどに実際の影響がある場合とない場合があります。オーバーヘッドがある場合とない場合があります。トランザクションごとのRAM側であり、2つの個別のトランザクションよりもマルチワードトランザクションを実行する方が安価な場合があるため、このスキームは、パフォーマンスを向上させるのではなく、パフォーマンスを低下させる可能性があります(開始アドレスを持つ1つのトランザクションではなく、書き込みバッファ内で同じ問題が発生します)および長さ、現在は複数のトランザクション)。
利益をもたらすかもしれないし、もたらさないかもしれない何かのために、それは大変な作業のように思えます. 該当するものを見つけたら、ここに投稿してください。