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

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

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

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

假设强行要求别名的某些地址位同样,就能够用软件非常easy地解决这一问题。比如,SUN公司的UNIX要求全部使用别名的地址最后18位都同样。

这样的限制被称为页着色。这一限制使得容量不超过2^18字节(256KB)的直接映象Cache中不可能出现Cache块有反复物理地址的情况。全部别名将被映象到同一Cache块位置。

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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemdsMDc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

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

从图上得出直观的感受是

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

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

page coloring小结的更多相关文章

  1. OpenRisc-39-ORPSoC,or1200的memory hierarchy整体分析

    引言 前面我们简单分析了ORPSoC的整体结构,or1200_top的整体结构,or1200_cpu的整体结构. 并对ORPSoC的启动过程,ORPSoC的debug子系统,clock子系统进行了介绍 ...

  2. [ZZ] Cache

    http://blog.sina.com.cn/s/blog_6472c4cc0102duzr.html 处理器微架构访问Cache的方法与访问主存储器有类似之处.主存储器使用地址编码方式,微架构可以 ...

  3. SQL Server 索引重建的 4 种方法

    解决方法 方法 1. 重建指定索引,这种方法没有性能可谈.重建时表还不可访问. 方法 2. 在线重建索引,只有SQL Server 企业版才支持. 方法 3. 使用填充因子重建,这样做不一定可以减小查 ...

  4. Virtual address cache memory, processor and multiprocessor

    An embodiment provides a virtual address cache memory including: a TLB virtual page memory configure ...

  5. 【深入理解Linux内核架构】3.3 页表

    页表:用于建立用户进程空间的虚拟地址空间和系统物理内存(内存.页帧)之间的关联. 向每个进程提供一致的虚拟地址空间. 将虚拟内存页映射到物理内存,因而支持共享内存的实现. 可以在不增加物理内存的情况下 ...

  6. Page 的生命周期学习小结(翻译兼笔记)

    初始化(Initialization) 页面被请求时,第一个被执行的总是下面接着执行的是 接着是 然后是 恢复和加载(Restore and Load) 接下来的 ViewState 被取回后,接着  ...

  7. asp.net中Page.ClientScript.RegisterStartupScript用法小结(转)

    //ASP.NET后台页面跳转 Page.ClientScript.RegisterStartupScript(Page.GetType(), "", "<scri ...

  8. Page.ClientScript.RegisterStartupScript用法小结

    使用类型.键.脚本文本和指示是否添加脚本标记的布尔值向 Page 对象注册启动脚本. 参数 type 要注册的启动脚本的类型. key 要注册的启动脚本的键. script 要注册的启动脚本文本. a ...

  9. asp.net中Page.ClientScript.RegisterStartupScript用法小结

    ClientScript.RegisterStartupScript(Page.GetType(), "Show", "alert('" + l_strConf ...

随机推荐

  1. web 表单,脚本验证

    1.不能含有中文 var obj = document.form1.txtName.value; if(/.*[\u4e00-\u9fa5]+.*$/.test(obj)) { alert(" ...

  2. mysql中,由于JDBC连接限制了最大包长度1024B,即1KB,报错“max_allowed_packet' ”

    报错:org.springframework.dao.TransientDataAccessResourceException: PreparedStatementCallback; SQL [INS ...

  3. npm显示已安装的包

    npm list -g --depth 0 显示安装过的npm包!

  4. 偶遇RecyclerView内部Bug

    写在前面           最近忙着赶项目进度,都不知道这次博客写点啥好了,前两天碰巧遇到一个奇怪的bug,项目中未发现与异常相关的类,于是去百度.谷歌搜索,发现这是一个早就可能被写烂吐槽的Recy ...

  5. 【转】linux性能相关的命令和概念

    1. top命令结果解读 23:31:27:系统时间 up 8 days: 表示从开机到现在,一共运行了8天 1 user:1个用户正在使用系统 load average:系统负载,即任务队列的平均长 ...

  6. Errors occurred during the build

    Errors occurred during the build.Errors running builder 'Integrated External Tool Builder' on projec ...

  7. struts2配置默认Action

    作用:当一个请求无法匹配到任何一个struts的action时,可以配置一个默认Action 例如:当请求路径不正确时,跳转到一个404.jsp页面 <package extends=" ...

  8. String、StringBuilder、StringBuffer对比

    参考:http://swiftlet.net/archives/1694 http://www.cnblogs.com/springcsc/archive/2009/12/03/1616326.htm ...

  9. css盒子模型及属性介绍(margin,padding)

    每个HTML元素都可以看作装了东西的盒子 盒子具有宽度(width)和高度(height) 盒子里面的内容到盒子的边框之间的距离即填充(margin) 盒子本身有边框(border) 而盒子边框外和其 ...

  10. Mac下配置Apache,PHP

    注:如果觉得终端下编辑太麻烦,也可以直接将文件拖出来手动编辑后在放回原文件夹替换即可 1.启用Apache: 在Mac下打开终端,输入“sudo apachectl start”(不包含引号,下同) ...