您的位置:首页 > 其它

slab着色与cpu硬件高速缓存

2010-11-05 18:35 148 查看
同一硬件高速缓存行可以映射
RAM

中多个不同的块,相同大小的对象倾向于存
放在高速缓存内相同的偏移量处。在不同
slab

内具有相同偏移量的对象最终很可能映射到
同一高速缓存行中。而使用
slab

分配器的对象通常是频繁使用的小对象,高速
缓存的硬件可能因此而花费内存周期在同一高速缓存行与
RAM

内存单元之间来来往往的传送两个对象。

如下例:假设
cache

行为
32Bytes


CPU

包含
512


cache

行(缓存大小
16K

)。

假设对象
A,B

均为
32B

,且

A

的地址从
0

开始,
B

的地址从
16K

开始,则根据组相联或直接相联映射方式
(全相联方式很少使用),
A,B

对象很可能映射到
cache

的第
0


,此时,如果
CPU

交替的访问
A,B


50

次,每一次访问
cache


0

行都失效,从而需要从内存传送数据。而
slab

着色就是为解决该问题产生的,不同的颜色
代表了不同的起始对象偏移量,对于
B

对象,如果将其位置偏移向右偏移
32B

,则其可能会被映射到
cache

的第
1

行上,这样交替的访问
A,B


50

次,只需要
2

次内存访问即可。

这里的偏移量就代表了
slab

着色中的一种颜色,不同的颜色代表了不同
的偏移量,尽量使得不同的对象的对应到不同的硬件高速缓存行上,以最大限度的提高效率。实际的情况比上面的例子要复杂得多,
slab

的着色还要考虑内存对齐等因素,以及
slab

内未用字节的大小,只有当未用字节数足够
大时,着色才起作用。
http://blog.chinaunix.net/u2/87570/showart_2369813.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: