皆さん。Clock-Proキャッシュ交換
私は、ClockProのキャッシュ交換の改良版について、多くの記事を読んでいます。最初はやさしさのためにClockを実装しました。今ではJava Clock-Proで2つのハンド(実際のアルゴリズムでは3つのハンドの代わりにホットとコールド)を実装したいと考えています。私はいくつかの説明が見つかりました:誰もがそれを試してみました場合
The ClockPro Algorithm
On Start():
cold_block = first block
hot_block = first block
On Memory Lookup():
curr_block = NULL
If block is in cache:
Set clock bit
Return block to CPU
Else:
While curr_block == NULL:
If cold_block.clockbit == 0:
curr_block = cold_block
Else if cold_block.test == 1 :
Turn cold hand block hot
Unset the clockbit
Run Hot Hand Algorithm
Else:
cold_block.clockbit = 0
cold_block = cold_block.next
If curr_block is dirty : write
Find accessed block in memory
Return fetched block to the CPU
Replace curr_block with fetched one
Hot Hand Algorithm() :
curr_block = NULL
While curr_block == NULL:
If hot_block is cold :
hot_block.text = 0
Else if hot_block.clockbit == 0 :
Turn the block cold
Else :
hot_block.clockbit = 0
hot_block = hot_block.next
、いくつかの質問に答えてください:テスト期間がある
何?いつそれが始まり、それに対して何が使えるのか。 オブジェクトがテスト期間に入っているかどうかを教えてくれますか、それともカウンタですか? 両手はしばらくの間に1つのブロックを指すことができますか?
誰でもできる場合は、アルゴリズムのそのような動作を簡単な例でモデル化するのを手伝ってください。 ありがとう。