页着色是一种通过选择性物理页分配来实现把虚存映射到特定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. node了解

    学习资料 廖雪峰的官方网站—node.js Node.js 中文网:http://nodejs.cn/ Node.js 教程(菜鸟教程):http://www.runoob.com/nodejs/no ...

  2. 3dmax做的模型导入U3d后 当模型靠近摄像机时镂空问题

    使用3dMax  Reset XForm下就好了. 原因可能是 法线方向问题?

  3. Odoo(OpenERP)开发实践:通过XML-RPC接口访问Odoo数据库

    Odoo(OpenERP)服务器支持通过XML-RPC接口访问.操作数据库,基于此可实现与其他系统的交互与集成. 本文是使用Java通过XMLRPC接口操作Odoo数据库的简单示例.本例引用的jar包 ...

  4. Python进阶---python strip() split()函数实战(转)

    先看一个例子: >>> ipaddr = 10.122.19.10 File "", line 1 ipaddr = 10.122.19.10 ^ SyntaxE ...

  5. ISP封了80和8080端口

    今天用自己的电脑做服务器,绑定了域名,路由映射什么的都做了,但是80和8080端口在外网怎么都访问不了,只在内网可以访问. 最后看有人说联通封了80和8080端口,真是遗憾,谨记于此,以后有时间了再来 ...

  6. openSession() 与 getCurrentSession() 有何不同和关联呢?

    在 SessionFactory 启动的时候, Hibernate 会根据配置创建相应的 CurrentSessionContext ,在getCurrentSession() 被调用的时候,实际被执 ...

  7. ZendServer中关于php.ini不同环境的建议

    ZendServer根据开发环境和产品环境的不同情况,对php.ini中的一些选项做了建议设置,列表如下: ;;;;;;;;;;;;;;;;;;; ; Quick Reference ; ;;;;;; ...

  8. 关于Assembly.LoadFrom和Assembly.LoadFile的区别

    区别: 1.Assembly.LoadFile只载入相应的dll文件,比如Assembly.LoadFile("a.dll"),则载入a.dll,假如a.dll中引用了b.dll的 ...

  9. 动态规划初级 入门理解 C#代码

      using System; using System.Collections.Generic; using System.Linq; using System.Text; using Micros ...

  10. C# 上传文件大小限制设置

    (1)在web.comfig文件中添加一个httpRuntime主键 <httpRuntime executionTimeout="90" maxRequestLength= ...