Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3470972
  • 博文数量: 1450
  • 博客积分: 11163
  • 博客等级: 上将
  • 技术积分: 11101
  • 用 户 组: 普通用户
  • 注册时间: 2005-07-25 14:40
文章分类

全部博文(1450)

文章存档

2017年(5)

2014年(2)

2013年(3)

2012年(35)

2011年(39)

2010年(88)

2009年(395)

2008年(382)

2007年(241)

2006年(246)

2005年(14)

分类: LINUX

2012-12-17 11:51:20

现代的cache设计大都采用set-association方式,即提高利用率又节省硬件。color只能提高这种cache的使用率。
简单说来,整个内存被分为n个cache page,每个cache page包含数量固定的cache line。 
整个cache被分为m个cache way,每个cache way有相同数量的cache line,而且和内存的cache page所含有的cache line数目相同。 
内存中的数据依据自己在内存中的cache line索引只能被放入某一个cache way中相对应的cache line里面。而不能任意放入其他cache地址。 
比如一个cache有2个cache way,每个cache way有10个cache line。某个数据结构的内存地址的cache line索引为2,则它只能被放入某个cache way的第2个cache line中。假使所有的cache way的第二个cache line都被使用,则必须换出某一个。即使此时2个cache way中的第3个,第4个cache line都未被使用,也无法利用。 
因此如果多个数据地址的cache line相同,即使cache中还有很大的空间,还是竞争激烈。 

而使用slab的数据结构都是分配和释放频繁的小的数据结构,而且数目很多,比如dentry,如果没有color,他们在内存中相对于页的偏移量很可能相同,则其cache line索引也相同,对于x86这种2way 的cache结构,即使cache size很大,也一样使用率低下。color则将不同slab中的同样的数据结构的地址进行一个偏移,因此这些数据结构的cache line索引就错开了。从而能更好的利用cache 

这里用简短的文字描述还是比较抽象,最好能读一下x86的cache工作原理,则很容易就明白了。
阅读(3782) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~