【计算机体系结构】TLB和Cache

news2024/10/4 15:42:41

TLB的设计

在两级页表的虚拟存储系统中,需要访问两次物理内存才能得到虚拟地址所对应的物理地址,而物理内存的访问速度是远远慢于处理器的,为了对该过程进行加速,可以加入一个页表的缓存,该缓存将页表中最近使用的PTE缓存下来,因为它们在以后还可能被继续使用。这样的缓存被称为TLB(Translation Lookaside Buffer), TLB中存储页表中最近被使用的PTE,从本质上来讲,TLB就是页表的缓存
然而,TLB不同于一般的cache,它只有时间相关性,而至于空间相关性,TLB没有明显的规律。
和普通的cache一样,TLB也有三种可能的组织方法,分别是直接相联、组相联和全相联,一般为了减少TLB缺失发生的频率,会使用全相联的方式来设计cache,但全相联会导致TLB的容量不能太大,因此一些设计中采用了组相联的方式来设计容量较大的TLB。
在现代处理器中,TLB也是分级的,一般采用两级TLB结构。第一级TLB采用哈佛结构,分为指令TLB数据TLB,一般采用全相联的方式;第二级TLB是指令和数据共用的,一般采用组相联的方式。
在这里插入图片描述
上图展示了全相联方式的TLB。处理器首先送出虚拟地址到TLB中进行查找,如果TLB对应的内容是有效的(valid=1),则表示TLB命中,可以直接从TLB得到物理地址;如果TLB缺失,那么就需要访问物理内存中的页表,此时包括两种情况:

  1. 在页表中找到的PTE是有效的,即这个虚拟地址所属的页存在于物理内存中,那么就可以直接从页表中得到对应的物理地址,使用它来寻址物理内存而得到数据,同时将页表中的该PTE写回到TLB中,供后续使用。
  2. 在页表中找到的PTE是无效的,即这个虚拟地址所属的页不在物理内存中,此时会产生page fault异常,由操作系统来处理这个情况。操作系统需要从硬盘中将相应的页搬移到物理内存中,将它在物理内存中的首地址放到页表内对应的PTE中,并将这个PTE更新到TLB中。

由于TLB是全相联的,所以相比页表,TLB多了一个Tag项,它存储的是虚拟地址的VPN。
此外,在上图中,除了使用位(use)和脏状态位(dirty)之外,其他的项在TLB中是不会发生改变的,它们的属性是只读的,但使用位和脏状态位可能在处理器执行load/store指令时发生修改。因此,如果TLB采用写回策略,那么在TLB中的某一个表项被替换时,只有这两个位需要被写回到页表中。
TLB的替换算法
和一般的cache一样,TLB也有自己的替换算法,例如可以使用最近最少使用算法(LRU),但实际上对于TLB来说,随机替换算法是一种比较合适的算法。由于在实际实现上很难实现真正的随机,因此采用一种称为时钟算法的方法来实现近似的随机。它的工作原理其实就是一个计数器,这个计数器一直在运转,例如每个周期加1,计数器的宽度由TLB中表项的个数决定,当TLB中的内容需要被替换时,就会访问这个计数器,使用计数器当前的值作为被替换表项的编号,这样就近似实现了一种随机替换算法。
TLB的写入
根据虚拟内存的相关知识可知,当一个页从硬盘搬到物理内存之后,操作系统需要知道这个页中的内容在物理内存中是否被修改过,如果没有修改过,那么当这个页被替换时,可以直接进行覆盖。而如果这个页的内容在物理内存中曾经被修改过,那么在该页被替换时,首先需要将它从物理内存中写回到硬盘,因而需要在页表中设置一个脏状态位来指示某一个页是否在物理内存中被改写过。
然后,在使用了TLB之后,如果TLB采取写回策略,那么TLB中的使用位和脏状态位不会立即从TLB写到页表,只有等到该表项被替换时,才会写回这些信息。因此,在页表中记录的脏状态位可能是过时的,操作系统无法根据这些信息,在page fault发生时找出合适的页进行替换。一个简单的方法是发生page fault异常时,首先将TLB中的内容写回到页表,然后再根据页表中的内容进行处理,这个办法的缺点是会带来一定的时间开销,影响处理器性能。
事实上,操作系统完全可以认为,被TLB记录的所有页都是需要被使用的,这些页在物理内存中不能够被替换。操作系统可以采用一些办法来记录页表中哪些PTE被放到了TLB中,而且这样做的一个好处是,它避免了当物理内存中一个页被踢出之后,还需要查找它在TLB中是否被记录了,如果是,也需要在TLB中将其置为无效,因为在页表中已经没有这个映射关系了,因此TLB中也不应该有。总结起来就是,TLB中记录的所有页都不允许从物理内存中被替换。

cache的设计

virtual cache

TLB加速了从虚拟地址到物理地址的转换,可以很快的得到所需要数据的物理地址,但是如果直接从物理内存中取数也是很慢的。因此,可以采用cache来缓存物理内存中的数据。
在这里插入图片描述
如果首先将虚拟地址转换为物理地址,然后再用物理地址访问cache,那么这样的cache就是物理Cache(Physical Cache)。使用TLB和物理Cache一起进行工作的过程如上图所示。
由于经过TLB之后才能访问物理cache,因此必然会增加流水线的延迟,如果还想获得和以前一样的时钟频率,就需要将访问TLB的过程单独使用一级流水线,然而,这样会增加分支预测失败时的惩罚,也增加了load指令的延迟。
与物理Cache相对的是虚拟Cache(Virtual Cache),顾名思义,虚拟cache可以直接使用虚拟地址进行访问。在这里插入图片描述
如上图所示,在使用了虚拟cache之后,TLB仍然是需要的,因为当虚拟cache发生缺失的时候,就需要将虚拟地址转化为物理地址,然后使用物理地址去访问物理内存。
然而,使用虚拟cache存在以下两个问题:

  1. 同义问题,也称作重名,即多个不同的名字对应相同的物理地址。在虚拟存储系统中,一个进程内或者不同进程间,不同的虚拟地址可以对应同一个物理内存中的位置。这就会导致在虚拟cache中,两个不同的虚拟地址虽然占据了不同的地方,但是它们实际上对应着同一个物理内存中的位置,这会引起两方面的问题,一是浪费了宝贵的cache空间,造成cache等效容量的减少,降低整体性能;二是当执行一条store指令而写数据到虚拟cache时,只会将这个虚拟地址在cache中对应的内容进行修改,而实际上,cache中其他有着相同物理地址的地方都需要被修改,否则,其他的虚拟地址读取cache时,就无法得到刚才更新过的正确值了。在这里插入图片描述
  2. 同名问题。

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

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

相关文章

<<迷雾>> 第7章 会变魔术的触发器(1)--连着两个按键开关的逻辑电路 示例电路

info::操作说明 鼠标单击开关切换开合状态 A 能使灯点亮并保持; B 则点亮的灯熄灭. 注: 此处使用的是 按钮开关, 松开鼠标后开关会自己断开, 类似于手机和电脑上的电源按钮 因系统原因, 此类开关与普通开关在外观上并无差别. primary::在线交互操作链接 https://cc.xiaogd.net/…

房屋水电费记账本:内置的数组数据击按钮不能删除,页面手动添加的可以删除

<!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>房租水电费记录</title><script type&qu…

6 个 Java 工具,轻松分析定位 JVM 问题

使用 JDK 自带工具查看 JVM 情况 JDK 自带了很多命令行甚至是图形界面工具&#xff0c;帮助查看 JVM 的一些信息。比如&#xff0c;在机器上运行 ls 命令&#xff0c;可以看到 JDK 8 提供了非常多的工具或程序&#xff1a; 接下来介绍些常用的监控工具。也可以先通过下面这张图…

buuctf[安洵杯 2019]easy misc1

解压的一个文件夹和图片一个&#xff0c;zip压缩包有密码 FLAG IN ((√2524921X8552)15-1794)NNULLULL, ((√2524921X8552)15-1794)7 我用passware kit 2022 所以试试7数字NNULLULL,掩码&#xff08;mask&#xff09;攻击试试 mask &#xff1a;?d?d?d?d?d?d?dNNULLU…

基于SSM的Java在线音乐平台

文未可获取一份本项目的java源码和数据库参考。 Java在线音乐平台是基于Java Web&#xff0c;依据Java语言功能性强大和简单易用的两大特点&#xff0c;实现的一个网上音乐平台。该平台包含了前台功能&#xff08;用户层面&#xff09;以及后台管理系统&#xff08;管理员层面&…

报刊订阅系统小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;报刊类型管理&#xff0c;报刊信息管理&#xff0c;报刊订阅管理&#xff0c;订阅发送管理&#xff0c;系统管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;报刊信息&a…

vector 的使用(上)

1.概念 vector本质是顺序表。它像数组一样&#xff0c;用一块连续的空间对数据进行管理&#xff0c;但又区别于数组&#xff0c;它的空间是根据数据进行动态增容的&#xff0c;并封装了一系列成员变量对数据进行监控&#xff0c;封装成员函数对数据进行操作。 2.区别 vector…

Excel数据分析!开启数据洞察之门

Excel数据分析&#xff01;开启数据洞察之门 前言Excel数据分析 前言 Excel&#xff0c;这款我们都耳熟能详的办公软件&#xff0c;在数据分析的舞台上&#xff0c;扮演着至关重要的角色。它不仅仅是一个简单的电子表格工具&#xff0c;更是我们开启数据洞察之门的一把钥匙。 …

深度学习的应用综述

文章目录 引言深度学习的基本概念深度学习的主要应用领域计算机视觉自然语言处理语音识别强化学习医疗保健金融分析 深度学习应用案例公式1.损失函数(Loss Function) 结论 引言 深度学习是机器学习的一个子领域&#xff0c;通过模拟人脑的神经元结构来处理复杂的数据。近年来&…

又放大招!2024 OpenAI 开发者日总结:实时 API、提示词缓存、模型蒸馏与视觉微调等多项技术革新

在全球开发者翘首以盼中&#xff0c;OpenAI 于 2024 年 10 月 1 日在旧金山举办了年度开发者日活动。与往年不同&#xff0c;今年的活动并未发布全新的模型&#xff0c;取而代之的是多项面向开发者的 API 能力提升和工具更新。本文将深入剖析 OpenAI 在开发者日中亮相的几项重要…

中伟视界:精准计数,智能预警,矿山罐笼管理迈入AI时代

矿山罐笼乘员超限检测AI算法工作原理&#xff0c;有哪些参数需要考虑的&#xff1f;及其应用效果如何&#xff1f; 矿山罐笼乘员超限检测AI算法工作过程是设置罐笼一次乘坐人数&#xff0c;系统设置检测框&#xff0c;系统计数从一端进入后从另一端出去的人数&#xff0c;累积人…

五子棋双人对战项目(6)——对战模块(解读代码)

目录 一、约定前后端交互接口的参数 1、房间准备就绪 &#xff08;1&#xff09;配置 websocket 连接路径 &#xff08;2&#xff09;构造 游戏就绪 的 响应对象 2、“落子” 的请求和响应 &#xff08;1&#xff09;“落子” 请求对象 &#xff08;2&#xff09;“落子…

如何使用ssm实现基于java的实验室设备管理系统

TOC ssm768基于java的实验室设备管理系统jsp 绪论 1.1研究背景与意义 1.1.1研究背景 近年来&#xff0c;第三产业发展非常迅速&#xff0c;诸如计算机服务、旅游、娱乐、体育等服务行业&#xff0c;对整个社会的经济建设起到了极大地促进作用&#xff0c;这一点是毋庸置疑…

SpringBoot与舞蹈艺术:古典舞在线交流平台开发记

第二章 相关技术介绍 2.1Java技术 Java是一种非常常用的编程语言&#xff0c;在全球编程语言排行版上总是前三。在方兴未艾的计算机技术发展历程中&#xff0c;Java的身影无处不在&#xff0c;并且拥有旺盛的生命力。Java的跨平台能力十分强大&#xff0c;只需一次编译&#xf…

【基础算法总结】链表篇

目录 一&#xff0c; 链表常用技巧和操作总结二&#xff0c;算法原理和代码实现2.两数相加24.两两交换链表中的节点143.重排链表23.合并k个升序链表25.k个一组翻转链表 三&#xff0c;算法总结 一&#xff0c; 链表常用技巧和操作总结 有关链表的算法题也是一类常见并且经典的题…

案例-猜数字游戏

文章目录 效果展示初始画面演示视频 代码区 效果展示 初始画面 演示视频 猜数字游戏 代码区 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width,…

【题解】【动态规划,最长上升子序列LIS】—— [CSP-J 2022] 上升点列

【题解】【动态规划&#xff0c;最长上升子序列LIS】—— [CSP-J 2022] 上升点列 [CSP-J 2022] 上升点列题目描述输入格式输出格式输入输出样例输入 #1输出 #1输入 #2输出 #2 提示 1.题意解析2.AC代码 [CSP-J 2022] 上升点列 通往洛谷的传送门 题目描述 在一个二维平面内&am…

GAMES101(19节,相机)

相机 synthesis合成成像&#xff1a;比如光栅化&#xff0c;光线追踪&#xff0c;相机是capture捕捉成像&#xff0c; 但是在合成渲染时&#xff0c;有时也会模拟捕捉成像方式&#xff08;包括一些技术 动态模糊 / 景深等&#xff09;&#xff0c;这时会有涉及很多专有名词&a…

确保接口安全:六大方案有效解决幂等性问题

文章目录 六大方案解决接口幂等问题什么是接口幂等&#xff1f;天然幂等不做幂等会怎么样&#xff1f; 解决方案1&#xff09;insert前先select2&#xff09;使用唯一索引3&#xff09;去重表加悲观锁4&#xff09;加乐观锁之版本号机制5&#xff09;使用 Redisson 分布式锁6&a…