2017-11-15 14 views
0

注:私はStackOverflowのは、その質問に対する正しい場所であるか、またはこの同じキャッシュラインサイズのマルチレベルCPUキャッシュはどのように機能しますか?

より適しStackExchangeサブがある場合、私は本で読んだかどうかわからないんだけど、マルチレベルのCPUキャッシュのため、キャッシュことラインサイズは、レベルの合計メモリサイズごとに増加します。非常に単純なアーキテクチャで使用すると、これがどのように機能するか(少なくとも私はそう考える)それから、私はこの全体に来たquestion。問題は、同じキャッシュラインのキャッシュメモリがどのように連携できるかです。

これは、私が異なるキャッシュラインサイズの作業でキャッシュメモリの方法をどのように認知するかです。簡単にするために、データと命令のための異なるキャッシュがなく、L1キャッシュとL2キャッシュ(L3とL4は存在しない)だけを持つと仮定してください。 L1のキャッシュラインサイズが64バイトで、L2が128バイトの場合、L2キャッシュミスが発生し、メインメモリから目的のバイトまたはワードをフェッチする必要がある場合、最も近いバイトまたはワードをL2キャッシュラインの128バイト。プロセッサによって生成されたメモリ位置への参照の局所性のために、我々はL1上で欠落しているL2 wheのヒット確率が高い。しかし、キャッシュラインのサイズが等しい場合、これは当然ながら以前のアルゴリズムでは起こりません。現代のCPUが同じ行サイズのキャッシュをどのように利用するかのソート/シンプルなアルゴリズムや実装について教えてください。

ありがとうございます。

答えて

0

マルチレベルのCPUキャッシュの場合、キャッシュラインのサイズはレベルの合計メモリサイズごとに増加するという本を読んだことがあります。

これは、ほとんどのCPUでは当てはまりません。通常、ラインのサイズはすべてのキャッシュで同じですが、合計サイズが大きくなります。しばしば結合性もあるが、通常は合計サイズほどではないので、集合の数は通常増加する。

The point of multi-level cachesは、(物理的に不可能であるため)大規模で低遅延の単一のキャッシュを必要とせずに、低レイテンシと大きなサイズを得ることです。

L2および/またはL1へのHWプリフェッチは、キャ​​ッシュのアウト・レベルで、シーケンシャル・リードの動作を良好にし、ライン・サイズを大きくしないものです。。 (マルチコアCPUでは、プライベートL1/L2 +共有L3はプライベートレイテンシ+帯域幅フィルタを提供し、メモリワークロードは共有ドメインにヒットしますが、コア間で共有されるデータにDRAMを使用する代わりにL3をコヒーレンシバックストップとして使用します。異なるキャッシュに異なるラインサイズを有する)


は、特にキャッシュが互いにusing MESIでコヒーレンシを維持する必要があり、マルチコアシステムでは、より複雑です。キャッシュ間でキャッシュ全体を転送するとうまく動作します。

L1Dラインが64BでプライベートL2 /共有L3ラインが128Bである場合、別のコアが128Bの2つの半分のそれぞれを持つ場合に、1つのコアに負荷がかかるとL2キャッシュが両方の半分を別々に要求することがありますライン改造。本当に複雑な音で、より多くのロジックを外部レベルのキャッシュに入れます。

Paul Clayton's answer on the question you linked points)この問題の可能な解決策は、より大きなキャッシュラインの2つの半分、または別々のMESIコヒーレンシ状態の別々の有効ビットであるということです。しかし、同じタグを共有しているので、同じ128Bブロックの2つの半分をキャッシングする必要があります)

関連する問題