页着色是一种通过选择性物理页分配来实现把虚存映射到特定cache位置的软件方法。
最早引入页着色概念是在计算机体系结构,是为了解决地址别名问题引入的。
首先对cache是使用虚拟地址还是物理地址的问题。有非常多讨论,而在使用虚拟地址时。存在一个问题叫做别名问题。所谓别名问题出现的原因就是操作系统和用户程序可能对同一个物理地址使用两种以上不同形式的虚拟地址来訪问,这些地址被称作别名。他们会导致同一个数据在使用虚拟地址的cache中存在两个副本,假设当中一个数据被改动,那么另外一个就是错误的。
对于别名问题的解决的方法之中的一个就是使用页着色,
假设强行要求别名的某些地址位同样,就能够用软件非常easy地解决这一问题。比如,SUN公司的UNIX要求全部使用别名的地址最后18位都同样。
这样的限制被称为页着色。这一限制使得容量不超过2^18字节(256KB)的直接映象Cache中不可能出现Cache块有反复物理地址的情况。全部别名将被映象到同一Cache块位置。
这里就是把两个别名(两个虚拟地址)映射到同一个cache块位置。
两个黄色的页,具有相同的colorbits。于是相同映射到L2 CACHE中的多组中,在cache中,存储同一个颜色的连续的多个SET叫做bin.
从图上得出直观的感受是
- color在内存中是离散存在的,每隔2^tag个页就有一个同一个color的页。
- 在cache中color是连续存在的。
而与此同一时候操作系统所做的,就是把一个进程的虚拟地址空间映射到不同的物理地址中,进而映射到特定的cache位置。在上图中。操作系统将A进程的虚拟地址空间映射到黄色的物理页地址空间。从而A进程的页都放置在cache中的黄色bin中。