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. 在cache中color是连续存在的。

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

page coloring小结,布布扣,bubuko.com

时间: 2024-08-24 21:59:32

page coloring小结的相关文章

SQL Server 索引重建的 4 种方法

解决方法 方法 1. 重建指定索引,这种方法没有性能可谈.重建时表还不可访问. 方法 2. 在线重建索引,只有SQL Server 企业版才支持. 方法 3. 使用填充因子重建,这样做不一定可以减小查寻时的IO量 方法 4. 启用压缩数据页.这样可以减少查寻的IO量,可是会用更多的CPU 要权衡. ----------------------------------------------------------------------------------------------------

Virtual address cache memory, processor and multiprocessor

An embodiment provides a?virtual?address?cache?memory including: a TLB virtual?page memory configured to, when a rewrite to a TLB occurs, rewrite entry data; a data memory configured to hold?cache?data using a?virtual?page tag?or a page offset as a?c

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

页表:用于建立用户进程空间的虚拟地址空间和系统物理内存(内存.页帧)之间的关联. 向每个进程提供一致的虚拟地址空间. 将虚拟内存页映射到物理内存,因而支持共享内存的实现. 可以在不增加物理内存的情况下,将页换出到块设备来增加有效的可用内存空间. 内核内存管理总是假定使用四级页表. 3.3.1 数据结构 内核源代码假定void *和unsigned long long类型所需的比特位数相同,因此他们可以进行强制转换而不损失信息.即:假定sizeof(void *) == sizeof(unsign

让被巡视对象摸不着规律

http://v.qq.com/page/l/o/t/x0414yqyi7y.htmlhttp://v.qq.com/page/4/z/l/t0414qgn8mp.htmlhttp://v.qq.com/page/p/c/r/j0414oxk8t7.htmlhttp://v.qq.com/page/l/5/1/f0414554cxg.htmlhttp://v.qq.com/page/f/f/o/w04144bi3ve.htmlhttp://v.qq.com/page/j/n/u/j04148kz

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

//ASP.NET后台页面跳转 Page.ClientScript.RegisterStartupScript(Page.GetType(), "", "<script>if(confirm('保存成功!是否继续添加?')){location.href='ProductonAdd.aspx'}else{location.href='ProductonList.aspx'}</script>"); //后台弹出确定框 ClientScript.

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

初始化(Initialization) 页面被请求时,第一个被执行的总是下面接着执行的是 接着是 然后是 恢复和加载(Restore and Load) 接下来的 ViewState 被取回后,接着 下一个是 然后才是 Raised Events 下一个方法,下一个方法, 下面是 接着是 保存和绘制(Save and Render) 下一个是 下面是 接着是 最后是 上面就是 page 的生命循环.每次有一个新的请求时,以上过程就重复一次. Listing 1: Page 的事件小结 Metho

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

ClientScript.RegisterStartupScript(Page.GetType(), "Show", "alert('" + l_strConferenceNo + "');",true);原型如下 ClientScript.RegisterStartupScript(Type type, string key, string script,bool addScriptTags);区别是bool addScriptTags为tru

Page.ClientScript.RegisterStartupScript用法小结

使用类型.键.脚本文本和指示是否添加脚本标记的布尔值向 Page 对象注册启动脚本. 参数 type 要注册的启动脚本的类型. key 要注册的启动脚本的键. script 要注册的启动脚本文本. addScriptTags 指示是否添加脚本标记的布尔值. 备注: 启动脚本由它的键和类型唯一标识.具有相同的键和类型的脚本被视为重复脚本.只有使用给定的类型和键对的脚本才能使用该页面进行注册.试图注册一个已经注册的脚本不会创建重复的脚本. 调用 IsStartupScriptRegistered 方

WEB前端开发学习小结

[引言] 在经过了将近六个月的学习时间终于对B/S的学习有了一定认识,在这段时间里可以说自己的收获非常的多,从一 个对web开发没有任何基础的小小小菜鸟变为了一个菜鸟,虽然自己现在还是一个菜鸟,但是自己和半年前的自己对 比进步还是巨大的,因为现在的自己至少到了知道"是什么?"的阶段,对已项目中用到的知识还是比较熟悉的(宏 观),在这个过程中也会因为一个错误困扰自己很长时间,因为那是自己对于挑错还是非常不熟悉的,像哪些辅助工 具firebug等都不知道是什么,而现在运用的还算是比较灵活,