4段相联映象 在全相联、直接相联、组相联映象的基础上还可 以有各种变形,段相联就是一例。段相联实质上是 组相联的特例。他是采用组间全相联、组内直接映 象。为了与组相联加以区别,将这种映象方式称为 段相联。就是说,段相联映象是把主存和 Cache分 成具有相同的Z块的若干段,段与段之间采用全相 联映象,而段内各块之间采用直接映象。如图442 所示:
4.段相联映象 在全相联、直接相联、组相联映象的基础上还可 以有各种变形,段相联就是一例。段相联实质上是 组相联的特例。他是采用组间全相联、组内直接映 象。为了与组相联加以区别,将这种映象方式称为 段相联。就是说,段相联映象是把主存和Cache分 成具有相同的Z块的若干段,段与段之间采用全相 联映象,而段内各块之间采用直接映象。如图4.42 所示:
主存 C 段间全相联F块0 ache 块T 块0 段内直接 块2 段0(Z个段) 块T 段0[一块2 块块块 012- 段1 块 块 段2”-1[块 [z1 块块块云 0 块2段2"m-1 图42具有每段Z个块的断相联映象
块0 块1 块2 Z-1 Cache 主存 … 块0 块1 块2 Z-1 … ≈ ≈ 块0 块1 块2 Z-1 … 块0 块1 块2 Z-1 … ≈ ≈ 块0 块1 块2 Z-1 … 段0 段0(Z个段) 段1 段2 nmb/Z-1 段2 ncb/Z-1 图4.42 具有每段Z个块的断相联映象 段间全相联 段内直接
43.3替换算法的实现 当访存发生 Cache块失效,需要把主存块按所采 用的映象规则装入 Cache时,如果又出现 Cache块冲 突,就必须按某种策略选择将 Cache中的哪一块替 换出去。 Cache主存存贮层次的替换算法与虚 拟存贮器的没有什么不同,不外乎也是FIFO法或 LRU法,其中LU法最为常用
4.3.3替换算法的实现 当访存发生Cache块失效,需要把主存块按所采 用的映象规则装入Cache时,如果又出现Cache块冲 突,就必须按某种策略选择将Cache中的哪一块替 换出去。Cache——主存存贮层次的替换算法与虚 拟存贮器的没有什么不同,不外乎也是FIFO法或 LRU法,其中LRU法最为常用
1堆栈法 1)思想 我们在422中讲过,LRU法是堆栈型替换算法, 也讲了对于LRU算法,堆栈S中由栈顶到栈底的各 项(行)恒反映出到t时刻,实存中各页被访问过的 近远次序,以及每访问一页,堆栈S中各项的变换 过程。结果是此堆栈的栈顶恒存放近期最近访问过 的页的页号,而栈底恒存放近期最久没有方问过的 页的页号,即准备被替换掉的页的页号。那么,我 们在 Cache主存存贮层次中就可以按此思想实 际组成一个硬件堆栈
1.堆栈法 1)思想 我们在4.2.2中讲过,LRU法是堆栈型替换算法, 也讲了对于LRU算法,堆栈St中由栈顶到栈底的各 项(行)恒反映出到t时刻,实存中各页被访问过的 近远次序,以及每访问一页,堆栈St中各项的变换 过程。结果是此堆栈的栈顶恒存放近期最近访问过 的页的页号,而栈底恒存放近期最久没有方问过的 页的页号,即准备被替换掉的页的页号。那么,我 们在Cache——主存存贮层次中就可以按此思想实 际组成一个硬件堆栈
2)过程 寄存器堆栈 压入 近期最近访 问过的块 (块号 (块号) (块号) 需重新排列的块号 都下推一行 2cb个寄存器 (块号 被访问的块号 (经相联比较找到) 近期最久没有 访问过的块 (块号 nch位 图443全相联映象LRU法经堆栈实现(需要有相联比较功能)
2)过程 (块号) (块号) (块号) (块号) (块号) 2 ncb个寄存器 需重新排列的块号 都下推一行 被访问的块号 (经相联比较找到) • 寄存器堆栈 压入 ncb位 近期最近访 问过的块 近期最久没有 访问过的块 图 4.43 全相联映象LRU法经堆栈实现(需要有相联比较功能)