Page Color (页面着色)

0) 首先讨论一下 cache line 索引定位的方式。

  给定一个 32 位虚拟地址,怎么定位 cache line 呢?
  答案是 VIPT (virtual indexed, physical taged), 即以虚拟地址作为 cache line 的 set 的索引,物理地址作为 tag 进行比较。

  比如 : 32k cache 8 way 组相联, cache line 大小是 64 bytes。所以共有 64 个 set(32k/(8 * 64))。

   物理地址
   31                   12     5      0
   |<----- 20 bits ---->|<- 12 bits ->|
   |<--- page frame --->| page offset |
   [       TAG          |index |offset]

   TAG   : RAT (real address tag)
   index : set index
   offset: cache line offset.
  (1) 先用物理地址的(12..5) 6 bit 作为 index 找到 set。(注意: 物理地址的低12位即是虚拟地址的低12位, 都是页内偏移, 所以叫 ‘virtual indexed‘)。
  (2) 面对 set 中 8 个 cache line, 用 物理地址的[31, 12] 一共20位作为 Tag 进行比较, 确定 cache line。(physical taged)

  这里, 地址的低12位中一部分作为 cache line 的内部的 offset 来定位具体的 byte;
  另一部分作为 set index。注意这里对 cache set 的数目做了一个限制, 因为一般 cache line 大小是 64 bytes, 则地址低6位作为 offset, 低12位中的其余 6 位作为 set index, 那么当cache set 的数目超过 2^6 (64) 个呢?

  即 cache 大小太大,怎么索引?比如 : 2M - 8way - cache line 64bytes? 一共有 4096 个 set地址低12位中仅存的6bit 明显不够了。

 

  

1) 大 cache 反而用不上了? 当然系统设计者不会这么愚蠢的。那么从哪里拿索引位呢? 不是还有物理地址么?

    物理地址
    31                  12     5      0
    |<----- 20 bits ---->|<- 12 bits ->|
    |<--- page frame --->| page offset |

    31             18   12     5      0
    |<----- 20 bits +--->|<- 12 bits ->|
    [       TAG     |   index  |offset]

    这里从物理地址中借了 6 bits. (18, 12]
    那么利用 (18,5) 这12 bits, 可以索引4096个 cache set。

2) 什么又是 page color 呢?

    物理地址
    31                  12     5      0
    |<----- 20 bits ---->|<- 12 bits ->|
    |<--- page frame --->| page offset |

    31             18   12     5      0
    |<----- 20 bits +--->|<- 12 bits ->|
    [       TAG     |   index  |offset]
                   (18, 12] : color bits.

    记得从物理地址借的 6 bits? 它们就叫做 color bits。

    把可以用(12, 5) 这6位索引的连续的 64 个 cache set 叫做 bin。
    这相当于把 cache set 再次分组, 每个组叫做 bin。同时认为在一组的 cache set 具有相同颜色(color), 这个名字真没创意。

    而 color bits 用来选择 bin。根据上面的例子, 64 个 cache set 为一 bin (一个颜色), 一共有 64 种颜色。

3) color bits 有什么用?

如果没有 color bits, 当访问一个地址,其页内偏移就定了下来, 也就是说 cache set 的索引值就定了下来。
有了 color bits, OS 对 cache 有了发言权(因为物理页面的分配是OS 说的算的, 所以 color bits OS 也能说的算)
所以 OS 就能决定一个地址放到哪个 bin 上。

比如访问虚拟地址 0x12345678 可以映射物理地址 0x30000678, 也可以映射物理地址 0x30001678
0x30000678 的 color bits 决定该地址映射到 bin 0
0x30001678 的 color bits 决定该地址映射到 bin 1

所以 OS 可以把一个地址映射到不同颜色的 cache set中。

4) 一般 L1 cache 很小 谈不上 color bits, 而 L2 L3 具有 color bits

时间: 2024-08-09 10:44:39

Page Color (页面着色)的相关文章

WPBakery Page Builder页面生成器6.0 汉化版

WPBakery Page Builder 是一个可视化编辑器插件 ,相较于WP自带的编辑器使用起来更加方便,同时功能更 加强大,完全的可视化操作,使用比较简单,国外有多款主题需要使用插件. WPBakery Page Builder是一个独特的插件,它将帮助您在WordPress网站上管理您的内容,并在几分钟内创建令人惊叹的布局,而无需编写代码.如今,许多网站都具有包含列,选项卡,滑块等的复杂网格布局.过去,要创建这种类型的布局,您应该是HTML guru或Shortcodes操作员忍者. 它

[Aaronyang] 写给自己的WPF4.5 笔记17[Page实现页面导航]

1. 第一个Page页使用 新建PageDemo解决方案,默认wpf应用程序 右键项目新建页,然后指定App.xaml的默认启动窗口,为Page1.xaml,F5运行项目 2.关于NavigationWindow不推荐使用,所以不讲解了,创建对象,指定Content为一个Page页,然后Show() 3.Page类 讲解几个可能跟Window不一样的属性 ShowsNavigationUI="False" 不显示导航栏,默认显示 新建Window1.xaml窗口,放入Frame,去掉默

微信小程序 app注册小程序+page注册页面代码一

注册小程序代码:app.js //app.js App({ onLaunch: function(){ var log = wx.getStorageSync("logs") || [] log.unshift(Date.now()) wx.setStorageSync("logs", log) wx.login({ success: res => { // 发送 res.code 到后台换取 openId, sessionKey, unionId } })

Webdriver的设计模式:Page Object(页面模型)

设计思想:面向对象,将单个页面所有可能用到元素封装到一个page类中,并提供一些常用的方法,其属性就代表页面元素,普通方法代表对元素所做的操作 以博客园的登录页面为例: import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;public class BlogLogin { //登陆账号元素 WebElement account; //登陆密码

Page Visibility(页面可见性) API介绍、微拓展[转]

一.网页君的悲情谁来懂 唉,突然想到了一首悲情诗: 泪湿罗巾梦不成,夜深前殿按歌声.红颜未老恩先断, 斜倚薰笼坐到明. 学生时代学过的一首诗,已还给老师不知所云的诸位可参见下面释义: 诗的主人公是一位不幸的宫女.她一心盼望君王的临幸而终未盼得,时已深夜,只好上床,已是一层怨怅.宠幸不可得,退而求之好梦:辗转反侧,竟连梦也难成,见出两层怨怅.梦既不成,索性揽衣推枕,挣扎坐起.正当她愁苦难忍,泪湿罗巾之时,前殿又传来阵阵笙歌,原来君王正在那边寻欢作乐,这就有了三层怨怅.倘使人老珠黄,犹可解说:偏偏她

Page Object页面设计模式核心要点

  Page Object,页面对象.一种设计模式,实施selenium的最佳实践,体现了web应用与页面显示之间的关系.为什么需要Page Object?测试代码维护的需要:减少代码的编码量,减少代码的维护量,清晰而明确的业务测试流程. Page Obje实现了测试代码的分层:页面元素.元素操作 和 页面业务的分离. 1.基础类 全局公共配置方法2.页面类 页面业务+元素集合3.用例层 关注数据和业务流程4.增加测试用例1(增加商品). 测试用例2(删除商品) 5.代码解耦 用例1和用例2公共

Salesforce学习之路-developer篇(三)利用Visualforce Page实现页面的动态刷新案例学习

Visualforce是一个Web开发框架,允许开发人员构建可以在Lightning平台上本地托管的自定义用户界面.其框架包含:前端的界面设计,使用的类似于HTML的标记语言:以及后端的控制器,使用类似于Java的Apex语言. 哪些版本支持Visualforce? 众所周知,Salesforce分为多个版本,不同的版本功能之间存在一定的差异,而支持Visualforce的版本:Contact Manager,Group,Professional,Enterprise,Unlimited,Per

Page传回页面的值问题

resultMap.put("exhibitDatas", page.getItems()); page里要展示一个vo 可以用这种,转map后,在去展示

同一个页面多个page之间的切换

今天接触了JQ Mobile以下是本小白的理解(不怕大家笑话): 创建移动 web 应用程序的框架:适用于所有流行的智能手机和平板电脑: 将“写得更少.做得更多”这一理念提升到了新的层次:它会自动为网页设计交互的易用外观,并在所有移动设计上保持一致. 从官网上可以看出jQuery mobile内容分为四大部分: jQM的内容分为四大部分: (1)Page & Navigation (2)CSS Framework (3)Widgets(小部件) (4)Form Widgets 以下用到的文件都可