PC_访存过程@内存地址翻译过程@具有快表TLB和cache的多级存储系统

news2024/11/26 4:27:40

文章目录

  • PC_访存过程@内存地址翻译过程@具有快表TLB和cache的多级存储系统
    • 具有TLB和Cache的多级存储系统
      • 三类缺失的可能情况组合
        • 小结
      • cache缺失/内存缺页处理机构
      • 带TLB虚拟存储器的cpu访存过程

PC_访存过程@内存地址翻译过程@具有快表TLB和cache的多级存储系统

具有TLB和Cache的多级存储系统

  • 一个具有TLB和Cache的多级存储系统,其中Cache采用R=2路组相联方式
  • CPU给出一个32位的虚拟地址,TLB采用全相联方式
    • 每一项都有一个比较器,查找时将虚页号与每个TLB标记字段同时进行比较,
    • 若有某一项相等且对应有效位为1,则TLB命中,此时可直接通过TLB进行地址转换:
    • 若未命中,则TLB缺失,需要访问主存去查页表。
    • 图中所示的是两级页表方式,虚页号被分成页目录索引和页表索引两部分,由这两部分得到对应的页表项,从而进行地址转换,并将相应表项调入TLB,若TLB已满,则还需要采用替换策略。
    • 完成由虚拟地址到物理地址的转换后,Cache机构根据映射方式将物理地址划分成多个字段
      • 然后根据映射规则找到对应的Cache行或组,将对应Cache行中的标记物理地址中的高位部分进行比较,
    • 若相等且对应有效位为1,则Cache命中,此时根据块内地址取出对应的字送CPU。

在这里插入图片描述

  • 查找时,快表和慢表也可以同步进行

    • 若快表中有此虚页号,则能很快地找到对应的实页号,并使慢表的查找作废,从而就能做到虽采用虚拟存储器但访问主存速度几乎没有下降。

三类缺失的可能情况组合

  • 在一个具有Cache和TLB的虚拟存储系统中,CPU一次访存操作可能涉及5个地方的访问

    • 虚实地址转换(翻译)部分
      • TLB
      • 页表
      • 硬盘
    • 物理地址到cache映射部分
      • Cache
      • 主存
    • Note:结合访存过程,如果发生缺页,那么中断处理一定在虚实地址转换的环节完成(在cache映射之前)
  • 根据乘法原理(方幂模型),理论上组合情况有 2 3 = 8 种 2^3=8种 23=8

    • 但是只有部分情况会发生
    • 下面的表格将按照缺失程度(次数),从少到多排序(从最好的情况到最坏的情况)
情况TLBPageCacheperf访存次数访问外存次数
1命中命中命中best0
2命中命中缺失common1
3缺失命中命中common1
4缺失命中缺失bad2
5缺失缺失缺失worest21
  • 情况发生可能性说明访存原因
    1TLB命中则Page一定命中,信息在主存,就可能在 Cache 中
    2TLB命中则 Page右定命中,信息在主存,也可能不在Cache中cache缺失,需要访问内存,并且维护cache(可靠性和性能)
    3TLB缺失但Page可能命中,信息在主存,就可能在Cache 中快表TLB缺失,需要访问内存中的慢表查到目标(页面)物理地址,维护快表
    4TLB缺失但Page可能命中,信息在主存,也可能不在 Cache中有两个原因,分别是情况2,3的原因,同时维护TLB和cache
    5TLB缺失则 Page也可能缺失,信息不在主存,也一定不在 Cache由于内存发生缺页,需要进行1次硬盘IO;同时需要执行情况4需要做的工作
  • 访问过程

    • CPU访存过程中存在三种缺失情况
    • ①TLB缺失:要访问的页面的页表项不在TLB中:
    • ②Cache缺失:要访问的主存块不在Cache中:
    • ③Page缺失:要访问的页面不在主存中。(慢表缺失)
      • 第1种组合,无须访问主存
      • 第2种和第3种组合都需要访问一次主存:
      • 第4种组合需要访问两次主存:
      • 第5种组合发生“缺页异常”
        • 需要访问硬盘,
        • 并且至少访问两次主存

小结

  • 主要看page是否命中
    • 如果是,根据TLB,Cache各自的命中情况(类比概率统计中抛两次硬币的情况)
      • 二元组:(TLB,cache),0表示缺失,1表示命中
        • (1,1)
        • (1,0)
        • (0,1)
        • (0,0)
    • 否则,TLB,cache就都不可能命中,仅有
      • 二元组:(TLB,cache),0表示缺失,1表示命中
        • (0,0)

cache缺失/内存缺页处理机构

  • Cache缺失处理由硬件完成
  • 缺页处理由软件完成操作系统通过“缺页异常处理程序”来实现
    • TLB缺失可以用硬件又可以用软件来处理
    • TLB保存的是页表中活跃的部分项目

带TLB虚拟存储器的cpu访存过程

  • PA:physical address
  • VA:virtual address
  • 大体过程:cpu给出虚拟地址VA,从VA计算出PA,由PA取得所需数据
    • 为了便于描述,🎈
      • 将VA单元所处的块(或者页)的物理地址为记: b = P T [ V A ] . b b=PT[VA].b b=PT[VA].b
        • VA类似于页表对象PT的索引
        • b字段作为对象的成员
    • P0:VA → b \to{b} b
    • P1: b → P A b\to{PA} bPA
      • PA=b+W
    • P2: P A → ( P A ) PA\to{(PA)} PA(PA)
      • 表示从计算出来的物理地址取出对应单元的数据
    • 上述两个过程的执行速度会有各种情况
      • 如果引入快表可以提升过程P1平均性能
      • 如果使用相联存储器,可以提升P2过程的平均性能

  • cpu给出虚拟地址VA
    • 解析逻辑地址VA的字段:
      • 逻辑页号P
      • 页内偏移W
    • 检查快表TLB(转址旁路缓存器,是独立于内存的硬件)中的是否页(页表项)在TLB中
      • 如果有,则可以快速完成 P 0 : V A → b P0:VA\to{b} P0:VAb的转换过程(取得b)
      • 否则,意味着快表没未命中,需要访问位于内存中的慢表(branches)
        • 如果要访问的页面存在于内存中,那么需要2步操作(access page table & maintain TLB)
          • 访问内存中的慢表有望成功,可以取得b
          • 更新快表TLB(是为了下一次访存(执行P1过程能够有更高的几率走高速通道(快表,而不是慢表)))
            • 维护依据:局部性原理告诉我们这种亡羊补牢的操作是有效的
        • 否则就处于比较坏的情况了,需要访问硬盘(IO)
          • 页框判断:检查内存中是否还有空闲页框可以分配
            • 如果有
              • 则可以直接从硬盘读取需要的块,调入主存中
              • 更新内存中的页表(包括慢表和快表TLB))
                • 同时为了下一次访问方便(减少IO次数/几率)
                • 维护根据:局部性原理
            • 否则,需要执行页面置换算法
              • 从主存中调出一页,然后在执行上一种情况(从硬盘调入缺失页面到内存)
    • 执行P1过程:计算 P A = b + W PA=b+W PA=b+W
    • 判断物理地址PA是否在cache中存在(命中)
      • 如果命中,那么可以直接访问cache中的数据,完成访存(指存储器)任务
      • 否则cache缺失对应的页(块),需要将内容从主存(甚至需要先从硬盘调入内存)调入到cache.(branches):
        • 判断cache中是否空闲行可以容纳新的块
          • 如果是,那么直接从内存中调入调入缺失的块到cache中
          • 否则,需要执行cache块的置换算法,从cache中调出一块内容(可能写回内存)
            • 然后在把缺失的页面调入到刚才空出的cache行中
        • 调整完cache行内容后还需要修改新内容的cache行对应的标记位和有效位
    • 过程P2:从cache中将需要的内容读取使用,结束该次访存

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

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

相关文章

POI的使用

POI简介(Apache POI),Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。 Apache POI官网 HSSF - 提供读写Microsoft Excel格式档案的功能。(.…

C++ bool类型变量赋值true,输出结果却是false?是因为cin输入的true会被当成字符串,所以bool变量原值不变吗?

首先,大家可能看过其他文章,他们给出的观点是这样的: 在C中bool类型的变量初始值为false,所以如果你不初始化,那么对变量使用cin>>赋值true和false的时候,编译器会把true和false当成是字符串&#x…

【LeetCode每日一题:895.最大频率栈~~~Map+栈】

题目描述 设计一个类似堆栈的数据结构,将元素推入堆栈,并从堆栈中弹出出现频率最高的元素。 实现 FreqStack 类: FreqStack() 构造一个空的堆栈。 void push(int val) 将一个整数 val 压入栈顶。 int pop() 删除并返回堆栈中出现频率最高的元素。 如果…

[附源码]Python计算机毕业设计Django的酒店预订系统设计与实现

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

深度学习快速入门----Pytorch 系列3

注:参考B站‘小土堆’视频教程 视频链接:【PyTorch深度学习快速入门教程(绝对通俗易懂!)【小土堆】 系列文章: 深度学习快速入门----Pytorch 系列1 深度学习快速入门----Pytorch 系列2 深度学习快速入门--…

[附源码]计算机毕业设计JAVA小区供暖收费管理系统

[附源码]计算机毕业设计JAVA小区供暖收费管理系统 项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM my…

世界杯小组赛频繁爆冷?这或许是强队的谋略 一分钟带你了解2022卡塔尔世界杯赛制

今年的世界杯你赚到钱了吗? 我们这里所说的世界杯是指世界杯决赛圈,也被叫做世界杯正赛。参赛队伍是已经通过世界杯预选赛选拔出的的32支队伍(除了东道主卡塔尔自动晋级)。 世界杯中没有皇马、巴萨、曼联,这些都是俱乐…

基于 SpringBoot + MyBatis 的网页版五子棋对战

目录 一、项目所要实现的功能模块 1、用户模块 2、匹配模块 3、对战模块 二、使用技术 三、项目截图 1、登录页面 2、注册页面 3、游戏大厅页面 4、游戏房间页面 四、创建 SpringBoot 项目 1、在 IDEA 中创建一个 SpringBoot 项目 2、设置项目名称 3、选择项目依…

第2-4-9章 规则引擎Drools实战(2)-信用卡申请

文章目录9.2 信用卡申请9.2.1 计算规则9.2.2 实现步骤9.2 信用卡申请 全套代码及资料全部完整提供,点此处下载 本小节我们需要通过Drools规则引擎来根据规则进行申请人的合法性检查,检查通过后再根据规则确定信用卡额度,最终页面效果如下&a…

浅谈架构备考.补缺.V1

2022.11.28 可靠性分析 to repair to failure between failure 平均故障间隔时间。平均故障间隔时间(Mean Time Between Failure,MTBF)常常与 MTTF 发生混淆。 因为两次故障(失败)之间必然有修复行为,因…

SpringBoot主启动类使用@ComponentScans、@ComponentScan扫描组件类,注意避坑

前言: 1、大家都知道,Springboot主启动加载会默认扫描同级包目录下所有的组件类、配置类,然后进行解析注入到Spring容器中。SpringBootApplication 是个联合注解,里面包含了 ComponentScan 组件扫描注解,所以我们不需要…

沉睡者IT - 什么是NFT?

欢迎关注沉睡者IT,点上面关注我 ↑ ↑ NFT,全称为Non-Fungible Token,指非同质化通证,实质是区块链网络里具有唯一性特点的可信数字权益凭证,是一种可在区块链上记录和处理多维、复杂属性的数据对象。 以上是百度百科…

MongoBd 离线安装与管理

背景: 鉴于内部网络原因,可能一个简单的操作变得复杂化,现在就Mongodb的离线安装分享本人的操作经验: 材料: 操作系统:centos7.6 MongoDB(主程序) : mongodb-linux-x86_64-rhel70-6.0.1.tgz 下载地址:下载…

传输层协议 —— UDP

目录 一、端口号的划分范围 二、认识知名端口号 三、两个问题 四、nestat和pidof命令 五、UDP协议 1. UDP首部格式 2. UDP的特点 3. 面向数据报 4. UDP的缓冲区 5. UDP使用注意事项 6. 基于UDP的应用层协议 一、端口号的划分范围 端口号的长度是16位,因此…

博途PLC和MATLAB矩阵运算存储方法对比

MATLBA不用多说,号称矩阵实验室可想而知在MATLAB里对矩阵的存储、运算非常简单、高效。如下图简单定义一个5*3的矩阵 1、rand(5*3) 上面利用rand()函数简单的实现了内存矩阵存储空间分配+附随机初值,下面我们看下博途里的矩阵定义存储方法。 BP神经网络PID算法的PLC实现过程…

量表如何分析?

一、什么是量表 量表是一种测量工具,通常用来测量人们的主观态度、意见或价值观念。我们经常会在问卷中使用量表对调查对象进行测量,最常见到的就是李克特量表。 ‍1、定义:李克特量表 李克特量表是最常用的量表,是由美国社会心…

基于AD Event日志检测LSASS凭证窃取攻击

01、简介 简单介绍一下,LSASS(本地安全机构子系统服务)在本地或域中登录Windows时,用户生成的各种凭证将会存储在LSASS进程的内存中,以便用户不必每次访问系统时重新登录。 攻击者在获得起始攻击点后,需要获取目标主机上的相关凭证…

AutoCAD Electrical 2022—项目特性

当绘图的过程中如果弹出上面的对话框,就是库和图标菜单途径不对造成的; 点击浏览找到正确的位置或点击默认设置恢复默认的路径; 元件对应原理图的设置; 标记格式:放置元件的代号的格式; 线号:编…

iphone怎么传数据到另一个手机,苹果如何转移数据到新手机,两台iphone怎么同步所有数据

换新手机后,需要迁移旧苹果手机的数据到新苹果手机里面,那么,iphone怎么传数据到另一个手机?本篇文章带您深度了解苹果手机的数据传输技巧。 方法一、通过“快速开始”传输数据 苹果手机如何数据传输?我记得之前换 iP…

【JUC】信号量Semaphore详解

前言 大家应该都用过synchronized 关键字加锁,用来保证某个时刻只允许一个线程运行。那么如果控制某个时刻允许指定数量的线程执行,有什么好的办法呢? 答案就是JUC提供的信号量Semaphore。 介绍和使用 Semaphore(信号量)可以用…