Day-11 Set Associative Cache

Set Associative Cache

tags: IT铁人

Direct Mapped缺点

上次提到了Direct Mapped的做法,概念上就是取余数决定要放在Cache的哪个block,以下图来说

因为1,5,9 mod 4的结果都是1,所以他们都会对应到Cache Block 1,要是今天发生了1,5,9大量被存取的状况,那麽每次都会发生Cache miss,为了改正这件事发生,只要让Cache Block不要一次只能存取一个Memory Block就好了,这就是Set Associative Cache的由来。

Set Associative Cache

就如刚刚上面提到的,我们在每个Cache Block entry多增加几个Block,通常都是以2的次方来做,形成2-way/4-way/8-way set associatve。

最後还有一个最极端的作法,称为Fully associatve,就是不管甚麽余数了,每个位置每个人都可以用,所以Cache的利用程度会最高。

下图是各种Set associative cache的示意图:

不过提高数字的情况下,一方面同样的Cache Block entry数量就会变少,当一个entry有太多Block时,找Block时就要在进入entry时一个一个检查tag是否正确。

所以基本上miss rate会降低,不过hit time就会增加,所以如何选择set associative cache的类型就是一大课题,要经过实验测试,探讨不同情境下的需求後才比较好做选择。

白话说明Set Associative Cache

我们可以这样子想,假设一间学校的学生是固定的,教室的数量可以自行增加,那如果一个班只有一个学生,那麽我们要找特定同学时只要到对的班级就好了,不过这样子班级的数量就会非常大。

假设一个班级装30位同学,总共有30个班级,那麽我们找到对的班级後,还要一个一个对座号,直到找出对的同学。

怎麽样的分法比较好,取决於班级的管理难易度,如果班级能够很快速地找到特定座号,那麽提高班级中的人数也不一定是坏事,反之则尽量不要增加班级中的人数。

虽然跟Cache的特性还是有些出入,比如说Cache miss後需要替换掉Block,班级通常不会淘汰同学补进新的。不过在找班级以及对照座号的概念其实是差不多的。

找人示意图(图片取自自由时报 占不到教室位子 中年男爆气烙20人要他出来乔):

Replace

在Set Associative Cache中,因为一个entry中有多个位子,所以当满位并且又有新的Block要进来时,我们就要挑一个Block淘汰掉,选择也是一门学问,可以随机挑选,也可以把最先进来的老屁股使用,不过最常使用的是LRU(Least Recently Used),也就是要淘汰距离上次使用到的时间最久的Block,以下示范一个例子。

假设这是一个2-way set associative cache,并且共有4个Block(也就是说只有两个entry)。

index Block0 Block1
0
1

CPU要求的Block依序如下:3,4,8,5,6,3,9。
在前面四次request後Cache长这样:

index Block0 Block1
0 4 8
1 3 5

後面的6,3,9依序会发生下列的事情:
6会替换4,3原本就在Cache中(Hit),9会替换比较久没有用到的5。
所以最後Cache内容为:

index Block0 Block1
0 6 8
1 3 9

What's Next?

这次说明了Set Associative Cache的用法以及优缺点说明,还有用白话的方式举例说明,也示范了一下Replace。

下次会提出另一种减少miss rate的方式,由於Cache的做法都是用相同层级的记忆体,也就是说现在只有一层城墙,如果第一层抓不住就宣告失败了。

如果我们有两层以上的城墙,效果会变得怎样呢?

上一篇 下一篇
近水楼台先得月 Multilevel Cache


<<:  Day 11 Swift语法-进阶篇(4/5)-Protocol

>>:  大人也舍不得离开的公园 — 共融游乐场 Inclusive Playground

Vue.js介绍及开发环境准备(DAY24)

Vue.js是什麽? Vue.js是近年来蛮流行的前端框架,也是一个包装好的语言,使用上会比较便利。...

DAY10 资料室--Vuex模组化

为什麽需要Vuex模组化? 试想一个电商网站,页面繁多,资料的部分前台会有购物车、商品、评价、促销活...

学习架构

从基础到进阶,逐步学习成为一个专业 iOS App 开发者 ...

Day 6 - Using ASHX File for User Authorization Management with ASP.NET Web Forms C# 使用泛型处理常式进行权限分流

=x= 🌵 网页操作权限分流处理及 Yacht Manager - Master Page 後台主版...

软件开发流程 需求蒐集法3 - 焦点团体

来到了需求蒐集的第3篇 - 焦点团体访谈。 之前因为专案需求,有机会举办一场焦点团体访谈,常见的焦点...