In order to find avg memory access time we have the formula :
Tavg = h*Tc +(1-h)*M
where h = hit rate
(1-h) = miss rate
Tc = time to access information from cache
M = miss penalty (time to access main memory)
私は最近、この概念に関するかなりの数の問題を解決しています。時々私はこの不穏な矛盾があることに気づきます:
Case 1: M = Tm + Tc
Case 2: M = Tm
つまり、解は、「M」の値が上記の「ケース1」のようにいくつかの質問Xに対して計算されるのに対し、他のいくつかの質問Yの場合は上記の「ケース2」と同じように計算されることを示します。私はこれらの質問を最善の方法で分析して、計算を変える要因を見つけました。助け無し。 XとYがまったく同じで、値が異なるだけの状況に遭遇しましたが、計算はケース1のようにXに対して行われ、ケース2のようにYに対して行われます。
私が知らない他の理由で、計算が異なる理由は何ですか?前もって感謝します。
違いは、ミスのレイテンシがカウントされるときです。時間にミスがあることが問題で示されている場合ペナルティ、それはすべきは、キャッシュヒットの時間に加えて時間であることを意味します。したがって、合計ミスレイテンシは、キャッシュヒットのレイテンシにペナルティを加えたものです。 (明らかに、数式と変数はこのアプローチを採用せず、M(実際にはミス時の合計アクセス時間)をミスペナルティとしてラベル付けします。)
悲しいことに、問題が「メモリアクセスレイテンシ」または「L2アクセスレイテンシ」を示している場合、totalアクセスレイテンシが意図されているか(つまり、L1ヒットの時間を含む)か、それとも余分かL1ミスに必要な時間。前者にはいくつかの概念的な利点があります(たとえば、ヒット時にデータが返される前にL2アクセスなどの詳細を隠すことができます-たとえば、早期のミス検出またはミス予測、またはL1とL2の並列タグルックアップを使用することによって)。後者の場合、L2サイズまたは結合性のレイテンシ効果の説明が簡単になる場合があります(たとえば、サイズを2倍にすると、L2のみのレイテンシが50%増加する場合、サイズを2倍にすると、L2のみのレイテンシが8サイクルから12サイクルに増加することを理解しやすくなります。サイズを4倍にすることで18サイクルになり、合計レイテンシが10サイクル[Tc = 2の場合]から14サイクル、20サイクルに増加します。
(また、ミスペナルティ数を使用すると、アクセス時間の式を少し簡略化できます-Tavg = Tc +(1-h)Tm-Tcは常に費やされるためです。)
実行レイテンシについても同様の問題が発生します。スカラーパイプラインを使用すると、後続の依存する命令の実行に遅延がないため、実行に1サイクルかかる命令は、多くの場合、レイテンシがゼロであると言われます。ただし、スーパースカラーの実装を検討する場合、この待ち時間の使用は混乱を招く可能性があります。
平均メモリアクセス時間=%命令*(ヒット時間+命令ミス率*ミスペナルティ)+%データ*(ヒット時間+データミス率*ミスペナルティ)
関連する質問がコメントで提起されました:
コメント:数式にヒット率がないのはなぜですか? – enitihas 5月13日18:09
式にヒット率がない理由は、1次レベルキャッシュにヒットするかミスするかに関係なく、すべてのアクセスが1次レベルにアクセスする必要があるため、ヒット時間、つまり1次レベルキャッシュのアクセスレイテンシがあります。
そのため、アクセスがヒット/ミスであるかどうかに関係なく、平均アクセス時間を計算するには、ヒット時間(1次キャッシュのアクセス待機時間)を式に含める必要があります。