TLBCache的联合设计

PIPT

        在使用虚拟存储器的系统中,仍旧可以使用物理Cache,这是最保守的一种做法

        处理器送出的虚拟地址(VA)会首先被TLB转换为对应的物理地址(PA),然后使用物理地址来寻址Cache,此时就像是没有使用虚拟存储器一样,直接使用了物理Cache,并且使用物理地址的一部分作为 Tag,因此将其称为 physically-indexed,physically-tagged Cache

                        

缺点:

        由于寻址TLB的过程也需要消耗一定的时间,为了不至于对处理器的周期时间造成太大的负面影响,可能需要将访问TLB的过程单独作为一个流水段,这样相当于增加了流水线的级数;

  • 对于I-Cache来说,增加一级流水线会导致分支预测失败时有更大的惩罚(penalty);
  • 而对于 D-Cache来说,增加一级流水线会造成 load 指令的延迟(latency)变大。

        这种设计方法在理论上是完全没有问题的,但是在真实的处理器中很少被采用,因为它完全串行了TLB和Cache的访问。而实际上,这是没有必要的,因为从虚拟地址到物理地址的转换过程中,低位的offset部分是保持不变的;

VIPT

                      

        这种方式使用了虚拟Cache,根据Cache的大小,直接使用虚拟地址的一部分来寻址这个Cache(这就是virtually-indexed),而在Cache中的Tag则使用物理地址中的PFN(这就是physically-tagged),这种Cache是目前被使用最多的,大多数的现代处理器都使用了这种方式;

        在这种设计设计中,访问cache和访问TLB是可以同时进行的;

        会有3种情况发生:

  • k>L + b,此时Cache的容量小于一个页的大小;
  • k= L+b,此时Cache的容量等于一个页的大小;
  • k<L+b,此时Cache的容量大于一个页的大小。

1. 前两种情况;

        

        此时Cache容量小于或等于一个页的大小,直接使用虚拟地址中的[L+b-1:0]部分来寻址Cache,找到对应Cache line中的数据,并将这个Cache line的Tag部分和TLB转换得到的PFN进行比较,用来判断Cache是否命中。

        这种设计可以避免虚拟Cache中的重名问题,因为它本质上使用物理地址来寻址Cache,相当于直接使用了物理Cache。

        在物理地址中除了寻址Cache的index部分,剩下的内容就作为Tag存储在Cache中,这部分内容必须要经过 TLB才可以得到。访问 TLB 和 Cache 是同时进行的,当从 TLB 得到物理地址的时候,从Cache中也读取到了对应的Tag值,此时就可以进行Tag比较从而判断是否命中,如果处理器的周期时间允许的话,这些过程可以在一个周期内完成。

        上面的例子其实提供了一个思考,要增加一个cache的容量,有哪些方式?

  • 对于direct cache, 完全取决于index的大小;
  • 对于组相联的cache, 因为cache_size = set_num * way_num * cacheline; 所以,在set_num不能改变的情况下,可以增加way_num的个数,因为way_num的增加,不会引起寻址cache所需要的bit的增加;

2. 第三种情况

        这种场景的提出,就是因为上述的增加way的方式,不可能无限的增加,因此只能增加set_num的个数;

        此时会导致L+b > k, 这种设计就是真正的virtually-indexed;

        这种设计,会引入aliasing问题:Cache中两个不同的位置对应着物理存储器中同一个物理位置

    

除了之前提到的通过分bank的方式,来解决alising问题,还可以通过如下的方式来解决:

假设最开始时,虚拟地址VA1已经存在于L1 Cache和L2 Cache当中,当虚拟地址VA2访问 L1 Cache时,会发生缺失,于是就去L2 Cache中寻找数据。

  • 在大多数处理器中,L2 Cache会直接使用经过TLB转化的物理地址(PA)来寻址L2 Cache,而这个物理地址已经存在于L2 Cache中了(因为VA1存在于L2 Cache中)
  • 所以此时VA2发现它要找的数据存在于L2 Cache当中,但是此时还应该告诉VA2,在L2 Cache中,PA的数据其实是属于VA1的,因此需要在L2 Cache的每个Cache line中加以标记。
  • 如图3.41所示的那样,在L2 Cache的每个Cache line中存储虚拟地址的a部分,这样当VA2被转换为PA并访问L2 Cache时,如果发现这个PA已经存在于L2 Cache中,并且这个PA对应的a不等于VA2中的a,那么就表明此时存在和VA2重名的虚拟地址(图3.41中即是VA1)
  • 在将VA2的数据从L2 Cache读取到L1 Cache之前,应该使用L2 Cache中这个PA对应的a来寻址L1 Cache(VA=a+offset),找到L1 Cache中那个存放重名虚拟地址的Cache line,将其置为无效。
  • 当然,如果发现此时这个Cache line是脏(dirty)的状态,那么还需要首先将它进行clean操作,也就是将这个脏的Cache line写回到L2 Cache中,然后才能将它置为无效
  • 这样在L1Cache中就不会存在重名的虚拟地址,此时就可以将VA2的数据从L2 Cache读取到L1Cache中,而且能够保证在L1 Cache中不存在和VA2重名的情况。

VIVT

        在这种方式中,直接缓存了从虚拟地址到数据的过程,它会使用虚拟地址来寻址Cache(也就是 virtually-indexed),并使用虚拟地址作为 Tag(也就是 virtually-tagged),因此这种Cache可以称得上是名副其实的Virtual Cache了。

        如果Cache命中,那么直接就可以从Cache 中获得数据,都不需要访问 TLB;如果 Cache 缺失,那么就仍旧需要使用 TLB 来将虚拟地址转换为物理地址,然后使用物理地址去寻址L2 Cache,从而得到缺失的数据(在现代的处理器中,L2及其更下层的Cache都是物理Cache),这个过程如图3.42所示。

        

小结

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

民国漫画杂志《时代漫画》第33期.PDF

时代漫画33.PDF: https://url03.ctfile.com/f/1779803-1248635648-d8235b?p9586 (访问密码: 9586) 《时代漫画》的杂志在1934年诞生了&#xff0c;截止1937年6月战争来临被迫停刊共发行了39期。 ps: 资源来源网络!

C#中的实体属性详解与示例

文章目录 实体属性的定义实体属性的访问实体属性的示例总结 在C#中&#xff0c;实体属性是面向对象编程的重要组成部分。实体属性允许我们定义对象的特征和行为&#xff0c;并提供了一种方式来访问和管理这些特征。通过实体属性&#xff0c;我们可以封装对象的状态&#xff0c;…

GPT-4o:免费且更快的模型

OpenAI GPT-4o 公告 OpenAI 推出了增强版 GPT-4 模型——OpenAI GPT-4o&#xff0c;用于支持 ChatGPT。首席技术官 Mira Murati 表示&#xff0c;更新后的模型速度更快&#xff0c;并在文本、视觉和音频处理方面有了显著提升。GPT-4o 将免费向所有用户开放&#xff0c;付费用户…

Rainbond 携手 TOPIAM 打造企业级云原生身份管控新体验

TOPIAM 企业数字身份管控平台&#xff0c; 是一个开源的IDaas/IAM平台、用于管理账号、权限、身份认证、应用访问&#xff0c;帮助整合部署在本地或云端的内部办公系统、业务系统及三方 SaaS 系统的所有身份&#xff0c;实现一个账号打通所有应用的服务。 传统企业 IT 采用烟囱…

【数据分享】中国科技统计年鉴Excel版(1991-2023年)

大家好&#xff01;今天我要向大家介绍一份重要的中国科技统计数据资源——《中国科技统计年鉴》。这份年鉴涵盖了从1991年到2023年中国科技统计全面数据&#xff0c;并提供限时免费下载。 数据介绍 在数字化时代的浪潮中&#xff0c;数据的重要性日益凸显。对于研究人员、政…

AI 赋能前端 -- 文本内容概要生成

幸福不在于你获得了什么,而在于你比他人多获得了什么 是比较出来的 大家好,我是柒八九。一个专注于前端开发技术/Rust及AI应用知识分享的Coder 此篇文章所涉及到的技术有 OpenAILangChainRust/WebAssemblyWeb Workerreact+ts+vite配置环境变量(env)因为,行文字数所限,有些概…

5. MySQL运算符和函数

文章目录 【 1. 算术运算符 】【 2. 逻辑运算符 】2.1 逻辑非 (NOT 或者 !)2.2 逻辑与运算符 (AND 或者 &&)2.3 逻辑或 (OR 或者 ||)2.4 异或运算 (XOR) 【 3. 比较运算符 】3.1 等于 3.2 安全等于运算符 <>3.3 不等于运算符 (<> 或者 !)3.4 小于等于运算符…

【观察】数字化生存时代已来临,能源转型如何实现“再升级”?

20多年前&#xff0c;尼古拉斯尼葛洛庞帝在《数字化生存》一书中预言&#xff1a;“数字化生存是现代社会中以新技术为基础的新的生存方式。” 随着数字经济的蓬勃发展&#xff0c;尼葛洛庞帝的预言逐渐被验证。今天&#xff0c;新技术带来的数字化和智能化正全方位影响着经济…

计算机网络-BGP路由通告原则

前面一章我们学习了BGP的路由产生方式以及查看路由表信息。BGP自身并不会发现并计算产生路由。BGP通过network、import-route、aggregate聚合方式生成BGP路由后&#xff0c;通过Update报文将BGP路由传递给对等体。那BGP向邻居通告路由时遵循哪些原则呢&#xff1f; BGP通告遵循…

521源码-源码论坛-宝塔面板操作日志是存放在哪里的? 如何删除部分日志记录

我们帮别人搭建或者登录了&#xff08;不是自己权属的宝塔面板&#xff09;&#xff0c;会留下登录及操作的日志&#xff0c;我们不想留下这些操作日志&#xff0c;可以通过下面的方法处理掉&#xff0c;以达到无痕迹访问操作的目的&#xff1a; 如图所示的面板操作日志&#…

计算机网络——如何保证 TCP 传输的可靠性

TCP 是传输层上的协议&#xff0c;它是可靠的&#xff0c;面向连接的。 概括 1. 设置传输格式&#xff0c;包括分为 TCP 段、使用校验和、使用序列号 2. 数据丢失之后的重传&#xff0c;超时重传、快速重传、SACK 选择确认、D-SACK 重复选择确认 3. 流量控制&#xff0c;控…

【学习笔记】数据结构(一)

基本概念和术语 &#x1f449;数据&#xff1a;所有能被输入到计算机中&#xff0c;且被计算机处理的符号的集合&#xff1b; 是计算机操作对象的总称&#xff1b;是计算机处理信息的载体&#xff1b;是信息的某一种特定的符号表示形式包括数值型数据、非数值型数据 &#x1…

变种水仙花

变种水仙花 题干要求&#xff1a; 变种水仙花数 - Lily Number&#xff1a;把任意的数字&#xff0c;从中间拆分成两个数字&#xff0c;比如1461 可以拆分成&#xff08;1和461&#xff09;,&#xff08;14和61&#xff09;,&#xff08;146和1),如果所有拆分后的乘积之和等于…

干Java的有4年的工作经验;想转行做labview能行吗?

在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「 Java的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01;bVIEW和Java都是软件工具&a…

Golang | Leetcode Golang题解之第120题三角形最小路径和

题目&#xff1a; 题解&#xff1a; func minimumTotal(triangle [][]int) int {n : len(triangle)f : make([]int, n)f[0] triangle[0][0]for i : 1; i < n; i {f[i] f[i - 1] triangle[i][i]for j : i - 1; j > 0; j-- {f[j] min(f[j - 1], f[j]) triangle[i][j]…

【新能源大巴BMS结构与乘用车的区别】

新能源大巴BMS结构与乘用车的区别 这篇文章主要介绍新能源大巴的电池和BMS的结构与乘用车的区别。 主要有&#xff0c;新能源大巴行业、新能源电池系统结构和新能源大巴的BMS系统。 第一部分 新能源大巴行业 其实数数全球的商用车(大巴卡车)&#xff0c;大致的方向还是沿着就…

机器视觉halcon学习——检测斜面两边之间距离的数据稳定性

一个样品的斜面&#xff0c;因为有景深&#xff0c;所以无法同时聚焦到两条边。想办法聚焦到其中一条不太有特征的边&#xff0c;另一条边通过白色的特征来检测。 dev_open_window(0, 0, 800, 800, black, WindowHandle) dev_set_color(red) * Image Acquisition 01: Code gen…

leetcode及牛客网二叉树相关题、单值二叉树、相同的树、二叉树的前序、中序、后序遍历、另一棵树的子树、二叉树的遍历等的介绍

文章目录 前言一、单值二叉树二、相同的树三、二叉树的前序遍历四、二叉树的中序遍历五、二叉树的后序遍历六、另一棵树的子树七、二叉树的遍历总结 前言 leetcode及牛客网二叉树相关题、单值二叉树、相同的树、二叉树的前序、中序、后序遍历、另一棵树的子树、二叉树的遍历等…

交换机堆叠技术

堆叠 一、园区网络以及数据中心技术发展演进 1、xSTP&#xff08;STP&#xff0c;RSTP&#xff0c;MSTP&#xff09; 问题&#xff1a; 收敛慢链路利用率不高次优路径------mstp不持支负载vlan数量限制&#xff08;4k&#xff09;&#xff0c;网络规模瓶颈 二、堆叠基本概念…

vue实现左侧拖拽拉伸,展开收起

需求&#xff1a;1.左侧是个树形结构&#xff0c;有的文字过长展示不全&#xff0c;想通过拖拽显示全部的数据 2.展开收起 实现图中效果 <div class"catalog-drag"><svg t"1687228434888" class"icon" viewBox"0 0 1…