关于伪相联Cache实现细节的讨论
来源:互联网 发布:麻生明知乎 编辑:程序博客网 时间:2024/06/08 05:50
几乎所有谈到伪相联Cache的书都采用了一种模糊不清的说明方法,以以致会对读者产生误导而心生疑惑。
书中谈到伪相联Cache的实现时,大都讲可以采用索引位最高位取反来找到“伪组”。但这样读者会产生一个疑问:如果发生了伪命中,那命中的Cache块真是我们需要的吗?我们知道Cache块的查找是通过查地址实现的。Cache地址分三部分:
标志位 索引位 块内地址
因为Cache是以块为单位选取的,所以块内地址不用考虑,当伪命中时,会出现的情况是:
标志位 索引位 块内地址
我们期望的数据地址:t…………t 1i…………im…………m
我们希望找到的Cache块:t…………t 1i…………i?…………?
而根据书中说法,命中的Cachce块:t…………t 0i…………i?…………?
由此可见,伪命中的Cache地址并非我们所需要的,它有一位与所需的不符!!
但我们相信伪相联的原理和思想是正确的,那让我们找出伪命中的真实情形吧!
产生上述疑问的根源的在于书中描述伪相联实现时用了“索引位中最高位取反”这样的表述!这种说法实际上是有问题的,因为取反的这一位实际上不应再属于索引位。
我们知道在Cache的块总数一定的情况下,相联程度越高索引位所需的位数就越少。那么,在伪相联后,相当于增加了相联程序,所以所需的索引位数较之采用伪相联之前要减少一位。
那么减少的这一位就是用来取反的那一位!这一位的实际意义是一位特殊的标志位,通过这一位将“伪2路”分成了“奇路”和“偶路”。因此这一位在判断是否命中时,也要参与比对。所以伪命中的情形应如下:
我们期望的数据地址:t…………t Ti…………im…………m
根据T取1和0找出伪2路Cache块:a…………a 1…………i?…………?和b…………b 0…………i?…………?
红色的为索引位,根据索引位选中后,将a…………a 1和b…………b 0依次与t…………t T相比较来判断是否命中,第一次比较命中,则为命中;第二次比较命中,则为伪命中!课件中的说明图表达了这一含义:
- 关于伪相联Cache实现细节的讨论
- (转)关于RSA实现细节的讨论
- CACHE与主存之间的全相联映射,直接映射和组相联映射的区别
- Cache与主存之间的"全相联映射","直接映射"和"组相联映射"的区别
- Cache与主存之间的全相联映射、直接映射和组相联映射的区别
- 关于架构的讨论:烦人的细节
- 关于架构的讨论:烦人的细节
- 基于直接相联映象方式的Cache设计
- Kafka 实现的几个技术细节讨论
- CACHE与住存之间的全相联映射,直接映射和组相联映射的区别
- (转)Cache与主存之间的全相联映射,直接映射和组相联映射的区别
- 【操作系统】Cache与主存之间的全相联映射,直接映射和组相联映射的区别
- 讨论:烦人的细节
- session的细节讨论
- 关于BVCI,TLLI,BSSGP一些细节的讨论
- 高速缓存Cache与主存间采用全相联的地址影像方式
- HBase Block Cache的重要实现细节和In-Memory Cache的特点
- HBase Block Cache的重要实现细节和In-Memory Cache的特点
- 教你一招---减少80%的交通事故
- Hibernate底层技术简介 ASM
- 我的Job Hunting之路 - ebay社招
- WinSocket模型的探讨——select模型
- 使用JavaScript写的一个删除HTML代码的函数
- 关于伪相联Cache实现细节的讨论
- Linux 下的挂载盘技巧
- 一页纸多一点的博士论文拿到诺奖(转载)
- Tapestry+Spring+Ibatis+CSS+Ajax== 中文版Digg
- freeBSD6.1安装及简单汉化
- 程序员是一盏省油的灯
- 火车车厢座位分布指南
- Web 2.0 网站成功的关键
- 学习java过程中的一些笔记.