首页 > 代码库 > page coloring小结

page coloring小结

 页着色是一种通过选择性物理页分配来实现把虚存映射到特定cache位置的软件方法。

  

最早引入页着色概念是在计算机体系结构,是为了解决地址别名问题引入的。

 

 

首先对cache是使用虚拟地址还是物理地址的问题,有很多讨论,而在使用虚拟地址时,存在一个问题叫做别名问题。所谓别名问题出现的原因就是操作系统和用户程序可能对同一个物理地址使用两种以上不同形式的虚拟地址来访问,这些地址被称作别名,他们会导致同一个数据在使用虚拟地址的cache中存在两个副本,如果其中一个数据被修改,那么另外一个就是错误的。

 

对于别名问题的解决办法之一就是使用页着色,

如果强行要求别名的某些地址位相同,就可以用软件很容易地解决这一问题。例如,SUN公司的UNIX要求所有使用别名的地址最后18位都相同。这种限制被称为页着色。这一限制使得容量不超过2^18字节(256KB)的直接映象Cache中不可能出现Cache块有重复物理地址的情况。所有别名将被映象到同一Cache块位置。

 

这里就是把两个别名(两个虚拟地址)映射到同一个cache块位置。

 


 

 


 

两个黄色的页,具有相同的colorbits,于是同样映射到L2 CACHE中的多组中,在cache中,存储同一个颜色的连续的多个SET叫做bin.

 

从图上得出直观的感受是

  1. color在内存中是离散存在的,每隔2^tag个页就有一个同一个color的页。
  2. cachecolor是连续存在的。

 

而与此同时操作系统所做的,就是把一个进程的虚拟地址空间映射到不同的物理地址中,进而映射到特定的cache位置。在上图中,操作系统将A进程的虚拟地址空间映射到黄色的物理页地址空间,从而A进程的页都放置在cache中的黄色bin中。