当前位置: 首页 > article >正文

浅谈快表

文章目录

  • 一、快表是什么
  • 二、快表参与下的虚拟地址转换成物理地址的流程
  • 三、快表与页表的映射方式
  • 四、汇编指令 invlpg
  • 五、参考资料

一、快表是什么

快表是一种高速缓冲存储器,是用来存放页表项。

在没有快表的情况下,一个虚拟地址要转成一个物理地址至少需要两次访问物理内存,第一次是查询内存中的页表,第二次是访问物理页框。如果有暂存着目标页表项的快表,则通过快表访问页表会比在内存中访问页表快很多,有利于缩短从一个虚拟地址转换成一个物理地址的过程的时间。


二、快表参与下的虚拟地址转换成物理地址的流程

  • 第一步,根据虚拟地址推算出目标页表项的索引,查询快表。
  • 若目标页表项在快表里,则结合虚拟地址的低若干位推算出最终物理地址。
  • 若目标页表项不在快表里,则访问内存中的目标页表项,结合虚拟地址的低若干位推算出最终物理地址,并把该页表项写进快表。
  • 当快表被写满又有新的页表项要写进来时,则按照一定的策略擦除快表中的一个旧页表项。

三、快表与页表的映射方式

那问题就来了,CPU 如何知道目标页表项在不在快表里?在的话,是快表里的第几项?这就涉及到页表项与快表项的映射关系了。

页表项和快表项有三种映射方法,一是全相连,二是直接匹配,三是组相连。

  • 全相连:一个快表项可以存放任意虚拟地址对应的页表项。优点是快表空间利用率高,缺点是每次查询页表项都要遍历快表每一项。

  • 直接匹配:通过对每一个虚拟页号进行模运算得到其在快表中的索引号,但冲突率较高。

  • 组相连:将快表划分为若干个组,给每个组按顺序编号。通过对每一个虚拟页号进行模运算得到其在快表中的组号,然后在组内进行遍历查得目的页表项。如果每一组中有 n 个页表项,则称该方法为 n 路组相连。


四、汇编指令 invlpg

  • 用法:invlpg <虚拟地址 vm>

  • 作用:让快表中 vm 对应的页表项失效。


五、参考资料

《TLB的作用及工作原理》 博客园用户 AlanTu 著

《快表(页表缓冲)》 百度百科

http://www.lryc.cn/news/2420787.html

相关文章:

  • 华为手机解锁码计算工具_华为手机强制解锁工具
  • 【Latex】敲敲时候遇到的疑难杂症(一) —— 总也记不住的符号们
  • SOA案例:敏捷性在实践中的应用
  • 【推荐】WINRAR 4.10 Final 简体中文特别版
  • android应用开发实战
  • macOS藏文输入快捷键失效的问题
  • HTC Wildfire S G13 解锁与刷机笔记(二)
  • 快才畅快vivo X6再登Hi-Fi巅峰:全球首发音频业骁龙820
  • Java工具类--通过HttpClient发送http请求
  • 永恒之蓝ms17_010漏洞复现及利用
  • DNN、RNN、CNN.…..一文带你读懂这些绕晕人的名词
  • 32位MCU抢食医疗电子市场
  • 冰桶算法
  • 代码注入
  • 运维管理平台 - 自动部署salt被控端minion
  • 最新坦白说破解方法!!!
  • 跨学科的AI量化其实很简单
  • 判断入射满射c语言编码,例4,判断下列函数是否是满射、单射、双射。.PDF
  • 打造我们心中永恒的m500
  • 武汉Uber优步司机奖励政策(8月31日~9月6日)
  • eccv 2020_为什么我停止使用gan eccv2020
  • 你管这破玩意叫操作系统源码 | 第一回 最开始的两行代码
  • Ubuntu命令全集
  • fabric 智能合约开发
  • 1024分辨率《圣徒/天神魔煞/猎魔教士》BD中字无水印
  • day 09--函数和模块
  • 列名 userid 不明确。 存储过程_写给高二美术生:如果你还不知道这些问题,那你就惨了!...
  • python实现抢票github_面向回家编程!GitHub标星两万的”Python抢票教程”,我们先帮你跑了一遍...
  • 英语阅读积累一
  • js中文转拼音插件源码