【0】写在前面-为什么需要虚拟存储器?

0.1)定义:虚拟存储器其实就是借用了磁盘地址空间,还记得当初我们安装CentOS,划分的swap 文件系统吗?

0.2)VM简化了链接和加载、代码和数据共享,以及应用程序的存储器分配:(摘自CSAPP)

  • (1) 简化链接: 每个进程都拥有独立的虚拟地址空间, 且空间范围一致;(它是可重定向目标文件使用相对物理地址的前提)
  • (2) 简化加载: 加载器从不实际拷贝任何数据从磁盘到存储器。每个页初次被调用哦时, 要么是CPU取指时引用, 要么是一条正在执行的指令引用一个存储器位置时引用,VM系统会按需自动调入数据页;
  • (3) 简化共享: 多个虚拟页面可以映射到同一个共享物理页面上;
  • (4) 简化存储器分配: 当需要额外的堆空间, os分配连续的虚拟存储器页面,这些VP可以映射都任意的物理页面,这些物理页面可以任意分散在存储器中;

0.3)我还想多问一句,为什么有了高速缓存,还需要TLB-translation lookaside buffer,翻译后备缓冲器呢?

Reason:

引入局部性原则: (摘自CSAPP)

局部性原则保证了在任意时刻, 程序将往往在一个较小的活动页面集合上工作,这个集合
叫做工作集(working set)或者常驻集(resident set)。换句话说, 局部性原则揭示了一个现象:在一段时间内,我们会反复调入或调入同一个或
几个虚拟页页面;而且,每次CPU产生一个VA时, MMU就必须查阅PTE,
以便将VA翻译为PA, 注意是每次,所以开销很大;

解决方法: 为了消除这样的开销,在MMU中包括了一个关于PTE的小缓存,称为翻译后备缓冲器;

关键点: 所有的地址翻译步骤都是在芯片上的MMU中执行的, 因此执行速度非常快;

你要知道计算机中共有7级存储结构,访问CPU中的存储空间(MMU)的速度比访问缓存的速度可是快了几个数量级的。

【1】说了这么多,看个荔枝(以下TLB + 页表 + 高速缓存 是我们手动模拟的)(图片摘自CSAPP):


【2】题目:说有虚拟地址 0x03d7, 虚拟存储器系统如何将其翻译成物理地址和访问缓存的。

【3】解答:将以上虚拟地址用二进制表示,如下:

我们看到:
VPN=bit13~bit6 =0x0f;
VPO=bit5~bit0 = 0x17;
TLBT(行索引or标记)=bit13~bit8=0x03; (这里,为什么我管标记叫做行索引,说到本质,叫其行索引,并没有什么不妥,
因为本实例中,cache采用的是直接映射,即每个组就只有一行,所以行索引在此处无意;
但若cache是采用组相联映射或全相联映射的话,每组就有多行,行索引就起到作用了);TLBI(组索引)=bit7~bit6=0x3;

相关声明declaration写在前面:

  • d1) 我们这里是考虑命中的情况,当然,如果不命中, MMU需要从主存中取出相应的PTE;
  • d2) PS: 命中与否,是看TLB中是否有请求的PTE;
  • d3)虚拟地址14位,而物理地址12位;

翻译过程: (干货)

  • (1) MMU(MMU存在于CPU中,是硬件)从虚拟地址中抽取VPN=0x0f;
  • (2) 再从VPN中抽取出TLBT(行索引)=0x03, TLBI(组索引)=0x3,用于索引翻译后备存储器TLB;
  • (3) 带着TLBT和TLBI 查看TLB,发现第3组, 有标记位03(当然,这是手动设置的,便于模拟),且有效位=1,故命中;
  • (4) 命中后,将PPN=0D返回给MMU;
  • (5) MMU将PPN=0x0D=bit11~bit6 和 虚拟地址的VPO=0x17=bit5~bit0 连接起来,形成物理地址PA 》》 0x357
  • (6) 如上图所示:我们得到了CT-Cache Tag=0x0D, CI-Cache Index=0x5, CO-Cache Offset=0x3;即得到了缓存标记CT=0x0d,缓存组索引CI=0x5,缓存偏移CO=0x3;
  • (7) 依据CT、CI、CO,查询高速缓存(c图), 第5组的标记位-0x0D, 故命中;
  • (8) 在看缓存偏移是0x3,所以取出块3字节0x1D;

(Attention)

对于CT + CI + CO, 我再说的明白一点: CT就是行索引, CI就是组索引, CO就是块索引;
Bingo!

端到端的地址翻译(虚拟地址是怎样取到相应高速缓存的数据的?)相关推荐

  1. 怎样快速识别 英文地址中包含非英文字符_[论文笔记]端到端的场景文本识别算法--CRNN 论文笔记...

    本文大约 4000 字,阅读大约需要 10 分钟 论文地址:https://arxiv.org/abs/1507.05717 开源代码:https://github.com/bgshih/crnn 1 ...

  2. 直播 | AAAI 2022论文解读:三⻆分解一致性约束的端到端语音翻译

    「AI Drive」是由 PaperWeekly 和 biendata 共同发起的学术直播间,旨在帮助更多的青年学者宣传其最新科研成果.我们一直认为,单向地输出知识并不是一个最好的方式,而有效地反馈和 ...

  3. 一些我们关于端到端语音翻译的思考和尝试

    截止至2019年,世界上共有200多个国家和地区,人们使用的语言数量也高达7000多种,其中还不乏上千种濒危语言或者是不成文语言 (unwritten language),语言不通往往是不同地区政治. ...

  4. 论文篇 | 2020-Facebook-DETR :利用Transformers端到端的目标检测=>翻译及理解(持续更新中)

    论文题目:End-to-End Object Detection with Transformers 2020 论文复现可参考:项目复现 | DETR:利用transformers端到端的目标检测_夏 ...

  5. 巴别鱼雏形,谷歌推出端到端语音翻译技术,还能模仿你说话

    大数据文摘出品 编译:周素云 "这是全宇宙最奇特的生物." 40年前,英国科幻作家Douglas Adams在他的<银河系漫游指南>中这样描述巴别鱼(bable fis ...

  6. linux网络编程中端口号和ip地址转换方法

    0.字节序 网络字节序:是大端序,即:高字节放在低地址位置 比如:0x7F000101 对于一个整型,如上,我们看到的该形式,只是在大小端主机中存储的顺序是相反的. 网络序的存储方式是  7F 00 ...

  7. JQ----移动端h5页面通过地址调起通讯录以及高德地图、百度地图定位导航

    JQ----移动端h5页面通过地址调起通讯录以及高德地图.百度地图定位导航 通讯录: 可先加meta标签 <a href="tel:13838383838" class=&q ...

  8. 论文翻译:基于端到端的可训练神经网络基于图像的序列识别及其在场景文本识别中的应用

    An End-to-End Trainable Neural Network for Image-based Sequence Recognition and Its Application to S ...

  9. KIS云·云桌面V8.0服务端和客户端下载地址

    KIS云·云桌面V8.0服务端和客户端下载地址 KIS云·云桌面V8.0服务端:http://downloads.cmcloud.cn/kisqs/kis_cloud_yzm8.0.rar MD5校验 ...

最新文章

  1. 计算机专业术语lcd,LCD的专业术语.pdf
  2. 支付宝 APP支付(证书)方式遇到的问题和解决办法
  3. 如何快速重置打印队列
  4. python绘制函数怎么去掉原点_python – 更改绘图的原点
  5. 软考网络管理员学习笔记2之第二章数据通信基础
  6. 虎牙李萌:网络视听内容的工业化生产正在提速
  7. 数据库oracle修改属性列,Oracle修改表结构
  8. python+flask搭建CNN在线识别手写中文网站
  9. 百度网盘图片直链的php解析代码
  10. kmo检验和bartlett球形检验_互助问答59期:多期DID平行趋势检验以及因子分析累计方差贡献率...
  11. python 等号 什么编码_Python运算符与编码
  12. python嵩天ppt_python知识精华:嵩天微专业笔记
  13. 海康4200服务器进不去系统,ivms-4200客户端登入不了云服务器
  14. UE编辑器修改背景theme
  15. 存储数据迁移解决方案
  16. UG NX 工程图视图概述
  17. 图书销售系统 php,php文学小说销售系统
  18. WinEdt10.3 激活
  19. Python入门进阶:68 个 Python 内置函数详解
  20. 笔记本电脑找不到个人热点的解决方法

热门文章

  1. 一起开心集训队第一周训练赛2021/3/14
  2. P4126-[AHOI2009]最小割【网络流,tarjan】
  3. NOI.AC#2007-light【根号分治】
  4. nssl1522-简单数数题【dp】
  5. jzoj100046-收集卡片【暴力】
  6. 【dfs】【模拟】【树】I Like Matrix Forever!
  7. 【最短路】【SPFA】单源最短路径 (luogu 3371)
  8. SpringBoot整合kafka(实现producer和consumer)
  9. SpringBoot2.1.9 多MongoDB配置
  10. JavaFX UI控件教程(二十四)之Password Field