0

私は次のプログラムに取り組んでいますが、情報が不足しているように感じます.a)とb)はちょっとしたトリックです:

ループは、4KB ページを使用する仮想メモリ システム上のプログラムの一部として実行されます。必要に応じてメモリ内で置換するページを選択するために LRU 置換アルゴリズムが使用されると仮定します。「Start」というラベルの付いた命令はページ境界で始まり、ループの本体には 4601 組のシフト命令 (sll と srl) が含まれています。

Start:  addi    $3,$0,32

Loop:   sll $4,$4,1

srl $4,$4,1

...         # previous two instructions are

...         # repeated  4600 times

addi    $3,$3,-1

bne $3,$0,loop

a) メモリに 8 つの 4KB フレームが含まれている場合、ループの実行中にページ フォールトはいくつ発生しますか?

b) メモリに 9 つの 4KB フレームが含まれている場合、ループの実行中にページ フォールトはいくつ発生しますか?

a) と b) はどちらも 5 ページ フォールトではないでしょうか? ループするたびに 4602 の命令があり、MIPS 命令は 4B、ページ サイズは 4KB です。4KB/4B = 1 ページあたり 1024 命令なので、最初のループは次のようになります。

命令 0 - 1023 フレーム 0 ページフォルト あり

指示 1024 - 2047 フレーム 1 ページ フォルトあり

指示 2048 - 3071 フレーム 2 ページ フォルトあり

指示 3072 - 4096 フレーム 3 ページ フォルトあり

指示 4096 - 4602 フレーム 4 ページ フォルトあり

そのため、2 回目の反復でループに戻ったとき、ページはまだ LRU ポリシーによって置き換えられていないため、それらを再度参照できます。32 回のループ反復で 8 フレームか 9 フレームかによって、なぜこれが変わるのでしょうか?

4

1 に答える 1