页着色是一种通过选择性物理页分配来实现把虚存映射到特定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. python将字典内容存入mysql

    1.背景      项目须要,用python实现了将字典内容存入本地的mysql数据库. 比方说有个字典dic={"a":"b","c":& ...

  2. mysql 严格模式取消 group by 和 date zore

    取消单个库的时间严格模式 set global sql_mode=(select replace(@@sql_mode,'NO_ZERO_IN_DATE,NO_ZERO_DATE',''));

  3. PHP-XML基于流的解析器及其他常用解析器

    PHP中有两种主要的XML解析器 1)基于树的解析器.它是把整个文档存储为树的数据结构中,即需要把整个文档都加载到内存中才能工作.所以,当处理大型XML文档时候,性能剧减.SimpleXML和DOM扩 ...

  4. Sphinx-安装和配置

    本例是在Linux下, 环境 CentOS6.5 + PHP5.6.8 + MySQL5.6.13 + Sphinx2.3.1-beta 到官网下载对应环境的安装包, 按照官方文档指定步骤进行安装 第 ...

  5. Nuget使用规范

  6. AOP - PostSharp 2.0

    PostSharp是一个非常优秀的AOP框架,使用上非常方便,功能强大,对目标拦截的方法不需要做什么修改,但现在已经商业化运作从PostSharp官方网站下载一个试用版,安装 简单示例PostShar ...

  7. PHP 常用函数回顾

    array_change_key_case — 返回字符串键名全为小写或大写的数组array_chunk — 将一个数组分割成多个array_combine — 创建一个数组,用一个数组的值作为其键名 ...

  8. Jumpserver web界面跳板机

    Jumpserver.org 普通用户 仪表盘 查看主机 上传下载 访问官网 欢迎使用Jumpserver开源跳板机系统 帮助 Log out 查看资产 仪表盘 资产管理 查看资产 主机详细信息列表 ...

  9. scrapy抓取的中文结果乱码解决办法

    使用scrapy抓取的结果,中文默认是Unicode,无法显示中文. 中文默认是Unicode,如: \u5317\u4eac\u5927\u5b66 在setting文件中设置: FEED_EXPO ...

  10. Laravel框架学习(Response)

    1.Response篇 1.1 基本响应 最基本的HTTP响应只需在路由闭包或控制器动作中返回一个简单字符串即可,但是具体业务逻辑中大部分响应都是在控制器动作中返回Response实例或者视图.Res ...