文章目录
结论
先说一下结论哈!slab中着色区的作用,是用来避免cache行的地址争用(跟缓存命中率的意思差不多),因为cache是一个固定映射,一次只能映射64k的空间,也就是说,如果两个访存操作(A,B),并不在同一片区(64k)。那么就必须要先让A完成访存操作,再切换cache的映射区间,再完成B的访问操作。然而染色区就是一个地址偏移,让A,B访问的地址位于同一片区间,防止频繁切换带来的效率低下
Cache结构
cache总共就32K,每个缓存行为64个字节,一共512行。为什么说cache行是一个固定映射呢,以内存物理地址是0x1000000为例,从0x1000000 —— 0x1008000 属于同一片空间(0x8000 = 2^14 =32K)。从0x1008000 —— 0x1010000 属于另一片空间。cache大小只有32k,也就是一次只能代表一片空间。如果两个访存操作,位于两片不同的空间,那么cache就需要进行切换,才能满足两个访存操作的要求
所以说slab为啥要进行着色
操作A要对0x10000008地址进行读写操做,而操作B要对0x10008008地址进行读