深入理解地址翻译 CSAPP

news2024/11/25 0:47:32

地址翻译, 用自己的话说一遍, 然后自己在draw.io画图理解.

术语

页表就是一个 页表条目(Page Table Entry  PTE)的数组,每一项(每个PTE)是[有效位,物理地址]. 我们是用VPN来标识每个PTE,但记住这些VPN并不是页表的一部分,不会储存在内存中

虚拟地址为n位,p位为offset(inner), 其他的为第几页,就是outter-inner的结构,outter的page number第几页,inner是页里面的第几行page offset (和一个循环的维度分成tile后的outter-inner概念类似,分块后有多少块,每块有多少行)

物理地址类似的

因为虚拟地址和物理地址每一页的大小相同都是p位,因此地址翻译的时候只需要翻译第几页的对应关系就可以,页的第几行是一模一样的。这个映射关系就是图左边的箭头,在右边用一个字典来存储这个映射关系,这个字典叫做页表page table,其中除了虚拟页号和物理页号的映射关系,还有一个信息是有效位,表示这个虚拟地址是否已经cached在主存中。

 综上所述,这个地址翻译的工作就是由MMU做的。

页命中的情况是这样的,CPU执行挑转指令时,ret call jump 等指令,会生成虚拟地址VA,MMU接到VA后,根据VA地址中的虚拟页号,在页表中查找,如果有效位为1,就是页命中,则MMU输出翻译后的物理地址,就是页表中那一行获取物理页号,拼接上虚拟地址的page offset,就是物理地址了,然后去内存获取数据,传给CPU。

页命中完全是由硬件来处理的,缺页的情况需要硬件和操作系统内核协作完成。MMU查表发现有效位为0, 触发异常,传给发缺页异常处理程序,这个异常处理程序给出物理内存中的牺牲页,如果这个页已被修改,则换出到磁盘,然后缺页处理程序调入新的页面,并更新表的中物理页号,有效位改为1。

 目前这套机制的问题是,如果VA空间很大,那么MMU要查找的页表就很长,每次MMU都需要从内存取这个页表的数据,代价大概是100cycle,如果可以把页表放到缓存中,那么开销就降为5cycle左右。因此在MMU内部做了一个关于PTE的缓存,叫做TLB (Translation Lookaside Buffer)翻译后备缓冲器。那么这个TLB肯定是比较小的,于是把虚拟地址的Page Number分成 2^t 个set,索引第几个set就是 TLBI (TLB index)- outter, 剩下的是inner TLBT (tag) 

术语

4KB的页面(4KB=2^12 page size)页面大小为4KB

32bit addr space (VA)

4-byte PTE 

求一共需要多大的page table?

2^32*2^-12 * 4Byte = 4MB

总是需要一个4MB的页表驻留在内存中。

对64-bit的系统来说,指针和地址都是 64 位的,但是虚拟地址空间则是 48 位的,超过 48 位的 bit 要么全是 0 要么全是 1,这是 intel 制定的规则,高位全为 1 的地址为内核保留(地址指向内核中的代码或者数据),高位全为 0 的地址为用户代码保留。 

假如地址空间是48bit, page size还是4KB,8-byte PTE, 则需要2^48*2^-12*8= 2^39 Byte =512GB来放页表。

解决方案是multi-level page table,多级页表表示,是一种压缩页表的方法。

 一级页面的每一项PTE映射总虚拟地址中4MB的片chunk, 每个页表块 为 4MB的片 chunk (1024 * 4Byte PTE) 

二级页表的每一个PTE负责映射一个4KB的虚拟内存页面,一级和二级页表都是4KB,刚好和一个页面大小是一样的。都是由2^10个条目,每个条目4Byte,总共是2^32 bit地址空间

如何压缩的思想:

- 如果一级页表中的某一项为空,相应的二级页表就不存在

- 只放一级页表在主存中,二级页表根据需要调度

具体例子

1. MMU把虚拟地址翻译成物理地址,TLB是虚拟地址寻址的,找到相应的物理地址(页面大小为4KB由12位的VPO,这个和物理地址的PPO是相同的)

2. 物理地址在传送到L1高速缓存(高速缓存是物理寻址的,L1高速缓存8组相连,由64个组,大小为64字节的缓存块,每个物理地址由6个缓存偏移位 和6个缓存索引位,这12位刚刚好和VPO, PPO也是12位。

因此地址翻译的时候,把VPN发给MMU处理,把VPO发给高速L1缓存处理。当MMU得到PPN,就可以匹配是否命中高速缓存了

L1,L2,L3 cache是物理寻址的,下图的块大小为4字节,intel的块大小是64字节

L1,L2是8路组相连,L3是16路组相连

页大小可以在启动时被配置,linux使用的是4KB的页

 

 1. MMU首先根据VPN查找 TLB, TLBI=3, TLBT=3, 找到相应的物理地址 PPN=0x0D

2.  PPN+PPO合成物理地址

3. 物理地址发送给cache,提取CI=5, CT=0xD, C0=0, 在表中找到值为36

4. cache将36中的字节通过MMU返回给CPU,并将其存到一个寄存器中

参考:https://greenhathg.github.io/2022/05/18/CMU213-CSAPP-Virtual-Memory-Systems/18-Virtual-Memory-SystemsSimple memory system exampleAddress Translation Example #1 PPN实际不存在页表中 MMU做的第一件事是检查TLB,将VA中的VPN的TLBI(0x3)和TLBT(0x03)提取出来。所以会去查set3找到tag为3的line,找到对应的line并且valid为1,TLB将PPN(0D)返https://greenhathg.github.io/2022/05/18/CMU213-CSAPP-Virtual-Memory-Systems/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/43102.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基础知识——进制 与 进制转换 (C++ 程序)

目录 一、进制的定义 二、表示方法 1、当进制数 ≤ 10时 2、当进制数>10时 三、进制的计算 1、整数 2、小数 3、非十进制数 4、非十进制转十进制 四、十进制转非十进制数 1、整数部分 2、小数部分 3、整小混合 五、程序实现 1、十进制 转 其它进制 …

Unity 3D 动画系统(Mecanim)|| Unity 3D 人形角色动画(Avatar)

Unity 3D 动画系统(Mecanim) Mecanim 动画系统是 Unity 公司推出的全新动画系统,具有重定向、可融合等诸多新特性,可以帮助程序设计人员通过和美工人员的配合快速设计出角色动画,其主界面如下图所示。 Unity 公司计划…

wy的leetcode刷题记录_Day50

wy的leetcode刷题记录_Day50 声明 本文章的所有题目信息都来源于leetcode 如有侵权请联系我删掉! 时间:2022-11-23 前言 补 目录wy的leetcode刷题记录_Day50声明前言1742. 盒子中小球的最大数量题目介绍思路代码收获700. 二叉搜索树中的搜索题目介绍思路代码收获…

Maven问题相关 1 存在jar 却无法映射

这是一个比较新手的问题了,可能刚接触这个问题的小伙伴会纳闷,我这个本地仓库明明有却怎么映射失败吗?不科学啊。尤其是面临公司项目很多依赖的情况下,会出现大量这种情况,就算是项目经理过来。也可能会卧槽,我电脑上…

基于python的CLI应用程序开发(第一节):简单了解一下Typer

Typer开发(第一节):简单了解一下Typer 文章目录Typer开发(第一节):简单了解一下Typer1. 简介2. 安装3. 在编辑器中使用Typer4. 简单应用15. 简单应用26. 命令参数7.其它1. 简介 Typer 是一个python用于构建 CLI 应用程序的库,简单说就是开发控制台程序&…

Idea+maven+spring-cloud项目搭建系列--8整合Zookeeper

本文为 Ideamavenspring-cloud项目搭建系列,maven项目的创建可以参考: https://blog.csdn.net/l123lgx/article/details/121467823 本文使用了nacos 作为微服务的注册与发现,nacos 阿里云服务器的安装可以参考:https://blog.csdn.…

构建用于签名/加密双证书测试体系的可执行命令

注意事项 生成证书请求的填写 范例Subject: C CN, ST Beijing, L Beijing, O MSI, OU msi, CN ca, emailAddress cagmssl.com 前面的步骤存在错误,后面改用脚本进行证书生成,阅读时请跳过前面错误的内容 错误的内容 -> 开始 CA 生成私钥 op…

了解mysql脏页落盘过程

脏页落盘 什么是脏页? 对数据的修改,首先改内存中的缓冲池的页,由于缓冲区的数据跟磁盘中的数据不一致,所以称缓冲区的页为脏页。 脏页如何写入到磁盘? 不是每次更新都触发脏页落盘,而是通过CheckPoint机…

计及调频成本和荷电状态恢复的多储能系统调频功率双层优化【蓄电池经济最优目标下充放电】(基于matlab+yalmip+cplex的蓄电池出力优化)

摘要:针对电网中不同类型储能电站调频成本、剩余调频 能力存在差异、储能电站内部储能单元 SOC 过高或过低 的问题,提出计及调频成本和 SOC 恢复的多储能系统调 频功率双层优化策略,该策略包含调频功率优化层和 SOC 优化层:在调频…

覆盖libc.so.6的惨痛教训

覆盖libc.so.6的惨痛教训背景问题原因解决1、当前session未断开2、OS崩溃重启,所有ssh session断开惨痛教训1、对于上产环境的内核依赖库文件不能随意覆盖、删除。2、 scp 文件覆盖问题总结参考背景 发生时间: 2022年11月28日08:55:20 偷了个懒,在安装t…

Allegro走线自动关闭其它飞线操作指导

Allegro走线自动关闭其它飞线操作指导 Allegro在走线时候有一个自动关闭其它网络飞线的功能,具体操作如下 点击add connect命令 在option里面选择Auto-blank other rats 未勾选的状态 勾选后的状态,其它网络的飞线都被关闭了 This section is describe what the functio…

楼盘vr虚拟样板间,为售楼中心带来财气

房企也进入业绩冲刺期。为了完成销售目标,扩大市场销售面积,各大房企必将加大楼盘推出,降价冲销量已成常态。虚拟样板间采用创意化的营销策略,在激烈的竞争中脱颖而出。 所谓的VR虚拟样板间就是,利用数字化技术把建成或…

使用AWS的API Gateway实现websocket

问题 最近业务上面需要使用到WebSocket长连接来解决某些业务场景。 一图胜千言 注意:这里承担WebSocket服务器的是AWS API Gateway;后面的EC2业务服务,其实都是REST接口服务。 这里主要关注API Gateway和REST业务服务怎么实现API Gateway要…

Mysql事务机制

目录 一:定义 二:事务的特质 三:检测ACID特性 1. 准备工作. 2. 测试原子性和持久性 case1: 模拟原子性的全部失败 case2:模拟原子性的全部成功 case3:检查 持久性。 3. 测试一致性 case1&#xff…

[附源码]计算机毕业设计springboot餐馆点餐管理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

马尔可夫链

目录 1.相关概念 2.马尔可夫链的状态概率分布推演及稳态分布 3.马尔可夫链的应用 4.稳态分布性质 1.相关概念 小明同学每日选择早餐的概率转化如下图所示: 并且当日的选择只受前一日的结果以及对应的转移概率影响,与之前的选择无关。———> …

Spring Cloud Alibaba 容器化部署最佳实践 | 本地部署版本 | Seata服务端组件安装

Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。 下载地址 https://github.com/seata/seata/releases Seata安装-修改配…

PyQt5 信号(Signal)与槽(Slot)

PyQt5 信号与槽信号与槽介绍内置信号与槽的使用自定义信号与槽的使用自定义信号和内置槽函数自定义信号和自定义槽函数自定义有参信号使用自定义信号参数装饰器信号与槽信号与槽的断开和连接多线程中信号与槽的使用信号与槽介绍 信号(Signal)与槽(Slot)是Qt中的核心机制&#…

基于Spring Boot的个人博客系统(源码+数据库)

目录 一、系统功能框架图 二、开发技术 三、开发环境 四、页面展示 1.登录页面 2.首页 3.文章详情页面 4.文章评论页面 ​5.后台页面 6.后台文件编辑页面 ​7.后台文章管理列表页面 五、文件组织结构 六、数据库设计 1. 文章详情表t_article 2.文章评论表t_comm…

Elasticsearch:构建地图以按国家或地区比较指标

标如果你不熟悉 Elastic 地图,本教程是一个不错的起点。 它会指导你完成处理位置数据的常见步骤。在完成本教程后,你将学会: 创建具有多个图层和数据源的地图使用符号、颜色和标签来设置数据值的样式在仪表板中嵌入地图在仪表板中跨仪表盘搜索 完成本教…