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
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
相关文章推荐
- slab着色与cpu硬件高速缓存
- slab着色与cpu硬件高速缓存
- slab着色与cpu硬件高速缓存
- slab着色与cpu硬件高速缓存
- Linux 查看CPU信息、机器型号等硬件信息
- Linux中查看CPU、内存等硬件信息
- asp.net 获取机器硬件信息(cpu频率、磁盘可用空间、内存容量等)
- 硬件 CPU类型 个数
- Linux 查看CPU信息、机器型号等硬件信息
- AIX系统cpu、内存、网卡、硬盘、HBA卡等硬件信息查看
- CPU硬件辅助虚拟化技术
- 计算机 锁 的cpu硬件级别支持原理
- LDD3源码分析之slab高速缓存
- Linux 多核下绑定硬件中断到不同 CPU(IRQ Affinity)
- CPU高速缓存行对齐
- 获取硬盘ID ,cpu序列号 ,网卡硬件地址
- 每个程序员都应该了解的内存知识2——CPU 高速缓存
- 嵌入式 Linux 查看CPU信息、机器型号等硬件信息
- linux下绑定硬件中断到不同的cpu