发布网友 发布时间:2022-04-23 17:42
共1个回答
热心网友 时间:2023-10-01 20:53
根据E的数值,高速缓存可以被分为不用的类,包括直接映射缓存,组相联缓存和全相联缓存。 在组相联缓存里,E大于1,就是说一个组里面有多个cacheline。E等于多少,就叫有多少路,所以叫E路组相联。
组相联的行匹配就要复杂一些了,因为要检查多个行的标记位和有效位。如果最终找到了,还好。当然,找不到会从下一级存储器中取出包含所需求数据的行来替换,但一个组里面这么多行,替换哪个行。如果有一个空行,自然就是替换空行,如果没有空行,那就引发了一些其他的替换策略了。除了刚才介绍过的随机策略,还有最不常使用策略,最近最少使用策略。这些策略本身是需要一定开销的,但要知道,不命中的开销是很大的,所以为了保证命中率,采取一些相对复杂的策略是值得的。 所谓全相联,就是由一个包含所有缓存行的组组成的缓存。由于只有一个组,所以组选择特别简单,此时地址就没有组索引了,只有标记和偏移,也就是t部分和b部分。其他的步骤,行匹配和数据选择,和组相联原理是一样的,只是规模大得多了。如果说上面关于这三种映射方法的描述非常抽象,为了能理解得更加透彻,把存储器比作一家大超市,超市里面的东西就是一个个字节或者数据。为了让好吃好玩受欢迎的东西能够容易被看到,超市可以将这些东西集中在一块放在一个专门的推荐柜台中,这个柜台就是缓存。如果仅仅是把这些货物放在柜台中即完事,那么这种就是完全关联的方式。
可是如果想寻找自己想要的东西,还得在这些推荐货物中寻找,而且由于位置不定,甚至可能把整个推荐柜台寻找个遍,这样的效率无疑还是不高的。于是超市老总决定采用另一种方式,即将所有推荐货物分为许多类别,如“果酱饼干”,“巧克力饼干”,“核桃牛奶”等,柜台的每一层存放一种货物。这就是直接关联的访问原理。这样的好处是容易让顾客有的放矢,寻找更快捷,更有效。
但这种方法还是有其缺点,那就是如果需要果酱饼干的顾客很多,需要巧克力饼干的顾客相对较少,显然对果酱饼干的需求量会远多于对巧克力饼干的需求量,可是放置两种饼干的空间是一样大的,于是可能出现这种情况:存放的果酱饼干的空间远不能满足市场需求的数量,而巧克力饼干的存放空间却被闲置。为了克服这个弊病,老板决定改进存货方法:还是将货物分类存放,不过分类方法有所变化,按“饼干”,“牛奶”,“果汁”等类别存货,也就是说,无论是什么饼干都能存入“ 饼干”所用空间中,这种方法显然提高了空间利用的充分性,让存储以及查找方法更有弹性。