コンピュータは、メイン メモリとプロセッサの間で直接マップされた小さなキャッシュを使用します。図 (a) に示すように、キャッシュには 4 つの 16 ビット ワードがあり、各ワードには関連する 13 ビット タグがあります。読み取り操作中にミスが発生すると、要求されたワードがメイン メモリから読み取られ、プロセッサに送信されます。同時に、キャッシュにコピーされ、そのブロック番号が関連付けられたタグに格納されます。すべての命令とオペランドが 16 ビット長のプログラムで、次のループを考えてみましょう。
LOOP: Add (R1)+,R0
Decrement R2
BNE LOOP
<-13 bits-> <--16bit->
0|TAG |DATA |
2| | |
4| | |
6|_______ | ______ |
(a)Cache
.
.
| A03C |<---ADDRESS 054E
| 05D9 |
| 10D7 |
.
.
(b)Main Memory
このループに入る前に、レジスタ R0、R1、および R2 にそれぞれ 0、054E、および 3 が格納されていると仮定します。また、メイン メモリには図 (b) に示すデータが含まれていると仮定します。ここで、すべてのエントリは 16 進数表記で示されます。ループは LOOP = 02EC の位置から始まります。(a) ループの各パスの最後にキャッシュの内容を表示します。