みんな。
私は、ClockPro キャッシュ置換アルゴリズム (Clock キャッシュ置換の改良版) に関する記事をたくさん読みました。簡単にするために、最初は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 つのブロックを指すことができますか?
誰かができる場合は、単純な例でアルゴリズムのそのような動作をモデル化するのを手伝ってください..ありがとう。