当遇到cache miss时的替换策略

当遇到cache miss发生时,缓存管理需要选择一个block替换需要存储的数据

当直接映射时非常简单,因为直接映射只有一个block,正好对应,选择block替换即可

当是多路组相联和全相联时,由于有许多block可以被挑选替换,就需要进行选择,主要有三种方法:

  1. 随机:随机挑选一个block进行替换
  2. 最近最少使用(LRU):为了减少信息最近需要被使用的几率,使用的block被记录,根据每个block的记录来预测未来的情况。挑选最长时间未被使用的block,LRU来源于时间局部性和空间局部性。最近被使用的块是很有可能再一次被使用的,那么最近使用最少的块是一个很好的处理候选者
  3. 先进先出(FIFO):因为LRU的计算比较复杂,这种选择最旧的块而不是 LRU 来近似 LRU

随机置换算法很容易在硬件中实现。而随着blocks数的逐渐增大,LRU的成本变得越来越大,因为它需要保存每个block最近被使用的记录,而随着blocks数的增大,这个记录也会增大,而且LRU经常只近似(and is usually only approximated)

通常的近似算法每个cache set中都有一组位,这组位的每位都跟这个set中的cache line对应,比如四路组相联中这组位的长度就是4bit,每一bit都跟一个cache line对应,当set被访问时,与被使用的block对应的位被打开(应该是调为1),当所有位被打开时,除了最近被使用的位其他的都重置,如果block需要被替换,处理器会挑选一个位被关闭的block进行替换,如果有多个block的位都是关闭的,那么会随机挑选一个

这种近似于LRU的置换算法相较于原来的LRU算法,其记录位不会随着block的数量增多而变大,因为记录的位数只跟几路组相联有关,原本的LRU没有使用set这个特性,使用block作为单位,虽然更细化,但是计算成本也比较高

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇
Theme Argon
本网站自 2020-12-24 12:00:00 起已运行