Cache基本原理--以TC3xx为例(2)

目录

1.概述

2. Cache映射模式

3.DCache的数据一致性

 4.小结


1.概述

上一篇Cache基本原理--以TC3xx为例(1)-CSDN博客,我们聊了Cache基本概念,接下来我们将继续聊Cache映射模式,DCache的数据一致性问题。

2. Cache映射模式

常见的Cache地址映射模式包括直接映射、组相联和全相联。

直接映射(Direct Mapping):在直接映射中,每个主存地址只能映射到Cache中的唯一一行。这意味着主存中不同块可能会填充到相同的Cache Line里。如下图:

组相联(Set Associative Mapping) :Cache被划分为多个Set,每个Set包含多个Way的Cache Line。主存地址被映射到某个Set,然后在该Set内进行查找。每个Set内的CacheLine数量通常是2的幂次方,例如2、4、8等。组相联映射通过减少冲突提高了缓存的性能。

上面有点晕不要慌,这里就不得不来点术语了。如下图所示:

Way -- 相当于Cache的一页,如上述示例,Cache就有2 Ways

Set -- 每个Way里的同一Cache Line组成Set

这里理解了,英飞凌描述的2-way set associative DCache是不是就手拿把攥了。

英飞凌每个CPU都有16K DCache,Cache Line为32Bytes,因此总共有512个Cache Line。那么针对memory地址就可以分为:

我们计算非Tag后的偏移2^14 = 16KB,这也与Cache Size刚好对上。 

全相联映射(Fully Associative Mapping): 主存地址可以映射到Cache中的任何一行,而不受限制于特定的组。这意味着任何Cache Line都可以存储任何主存地址的数据。全相联映射通常需要更多的硬件支持,如标记比较电路,但可以最大程度地减少冲突,提高缓存的命中率。

3.DCache的数据一致性

谈到DCache的数据一致性,就不得不先讨论Cache的写策略。

常见的Cache写策略分为Write-Through和Write-Back。

Write-Through :修改数据时,该修改会同时作用在Cache和Memory中,如下图:

Write-Back:修改数据时,会先发生在Cache里,Memory中的母本更新会等待一些时间:

以英飞凌TC3xx系列为例,我们来看它是如何出现数据一致性问题的(注意TC3xx是Write Back Cache)。

CPU0\1共享LMU0,CPU0和CPU1同时修改LMU0[3]的值 3->9、LMU0[2]的值 2 -> 8,我们可以看到LMU0里的值确实变为了9,但是思考一下,这时候CPU1去获取LMU0[3],应该是几?当然是Cache里面的3,这里数据就不一致了。紧接着由于CPU1中的Cache数据改变也反映到了LMU0中,此时可以发现,LMU0[3]变为了3,cpu0的修改出现了丢失了。因为Cache的更新至少得以Cache Line为单位。

那么,如何来避免这些问题呢?翻看TC3xx Aurix 内核手册,可以得到以下几种方式:

  • 使用cachea指令:cachea.wi将写策略强制更新为write-through;cachea.i重刷cache
  • 使用英飞凌提供的Non-cache地址,例如LMU使用0xB开头;

 4.小结

以上,我们简述了cache的基本原理,从软件工程师角度,了解Cache,知道Cache通常会带来什么好处,引起什么问题,这对我们在系统层级的性能优化是有巨大帮助的。

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

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

相关文章

粒子系统技术在AI去衣应用中的创新探索

引言: 随着计算机视觉和人工智能技术的飞速发展,AI去衣技术逐渐走进公众视野。这一技术以其独特的应用前景和技术挑战引起了广泛的关注。在实现衣物去除的同时保持图像质量的关键技术之一,便是粒子系统技术。本文将深入探讨粒子系统技术在AI去…

(C语言)队列实现与用队列实现栈

目录 1.队列 1.1队列的概念及结构 1.2 队列的实际应用联想 1.3队列的实现 2. 队列应用——队列实现栈 主要思路 1.队列 1.1队列的概念及结构 队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进…

2022 年高教社杯全国大学生数学建模竞赛-C 题 古代玻璃制品的成分分析与鉴别详解+聚类模型Python代码源码

前言 简单介绍一下我自己:博主专注建模四年,参与过大大小小数十来次数学建模,理解各类模型原理以及每种模型的建模流程和各类题目分析方法。参与过十余次数学建模大赛,三次美赛获得过二次M奖一次H奖,国赛二等奖。**提…

全网最全的Postman接口自动化测试!

该篇文章针对已经掌握 Postman 基本用法的读者,即对接口相关概念有一定了解、已经会使用 Postman 进行模拟请求的操作。 当前环境: Window 7 - 64 Postman 版本(免费版):Chrome App v5.5.3 不同版本页面 UI 和部分…

dbeaver 链接 Oceanbase 数据库,dbeaver安装数据库驱动

新增驱动 提前到Oceanbase官网下载好驱动 1、点击数据库 -> 驱动管理器 -> 新建 2、添加驱动文件 联接数据库 1、选择你添加的驱动 2、测试

Latex问题1

问题 添加bib文件的引用后 \bibliographystyle{IEEEtran} \bibliography{IEEEabrv}之后,出现莫名其妙的错误,如下 IEEEabrv.bib是我的参考文献的bib文件,CCS_1.tex是我的tex文件,bib文件中的内容为 ARTICLE{1,author{Capponi,…

Redis数据结构-RedisObject

1.7 Redis数据结构-RedisObject Redis中的任意数据类型的键和值都会被封装为一个RedisObject,也叫做Redis对象,源码如下: 1、什么是redisObject: 从Redis的使用者的角度来看,⼀个Redis节点包含多个database&#xff…

OpenHarmony 实战开发——使用分布式菜单创建点餐神器

随着社会的进步与发展,科技手段的推陈出新,餐饮行业也在寻求新的突破与变革,手机扫描二维码点餐系统已经成为餐饮行业的未来趋势,发展空间巨大;扫码点餐,是“互联网餐饮”潮流的产物,可以有效地…

学前端网络安全这块还不懂?细说CSRF

什么是CSRF? 举个栗子,比如我们需要在某个博客上删除一个文章,攻击者首先在自己的域构造一个页面,使用了一个img标签,其地址指向了删除博客的链接。攻击者诱使目标用户,也就是博客主访问这个页面&#xff…

SOP for Oracle 23ai:Python 连接 Oracle 的两种方法

前情回顾 前文介绍了如何使用 python-oracledb 连接 Oracle 23ai 数据库,并演示了如何使用独立连接方式。 其中提到了支持两种连接池: DRCP 和 PRCP。 本文将对这两种连接池做具体演示。 DRCP 和 PRCP 连接池 连接池技术的优点不言而喻: 缩短…

稚晖君独家撰文:具身智能即将为通用机器人补全最后一块拼图

具身智能新纪元。 *本文为稚晖君独家供稿,「甲子光年」经智元机器人授权发布。稚晖君本名彭志辉,先后任职OPPO、华为,现为智元机器人CTO、首席架构师。 在ChatGPT之后,又一个大模型概念火了——具身智能(Embodied AI)。 在学术界,图灵奖得主、上海期智研究院院长姚期…

吞吐量 和 延时的关系

关于吞吐量/吞吐率、延时,你可以通过 Jmeter中的”聚合报告“和”用表格查看报告“来获取。 Throughput 越大,Latency 越差:因为请求过多,系统繁忙导致响应速度降低。Latency 的值越小说明能支持的 Throughput 越高:L…

软考一年只能考一次吗?24软考各科目考试时间一览表

软考考试次数: 软考高级【系统分析师】及【系统架构设计师】是一年考两次的。 此外,软考中级【软件设计师】和【网络工程师】也是一年考两次的。 其他科目一年都只开考一次,或者上半年开考,或者下半年开考,具体考试…

分页查询PageHelper插件分页条件查询(xml映射文件,动态SQL)

黑马程序员JavaWeb开发教程 文章目录 一、分页查询-分析二、分页查询-实现1. 实现思路1.1 controller1.2 service1.3 mapper 1.4 postman测试接口 三、分页查询-PageHelper插件1. 引入pageHelper插件的依赖2. 修改原来的代码2.1 mapper2.2 serviceimpl2.3 postman测试接口 四、…

47 tcp网络程序

网路聊天 API详解 下面用到的API,都在sys/socket.h中 socket (): socket() 打开一个网络通讯端口,如果成功的话,就像open() 一样返回一个文件描述符应用程序可以像读文件一样用read/write在网络上收发数据如果调用出错返回-1对于IPv4&am…

Day28 代码随想录打卡|栈与队列篇---逆波兰表达式求值

题目(leecode T150): 给你一个字符串数组 tokens ,表示一个根据 逆波兰表示法 表示的算术表达式。 请你计算该表达式。返回一个表示表达式值的整数。 注意: 有效的算符为 、-、* 和 / 。每个操作数(运算…

机械手避障如何选择激光雷达?

在选择用于机械手避障的激光雷达时,应该考虑以下主要技术参数: 测量范围:激光雷达的测量范围决定了它能够检测到的最大距离。您需要根据机械手的应用场景和工作环境来选择合适的测量范围。 精度:精度是激光雷达测量结果的重要参数…

ENZO--Leptin (human) ELISA kit

瘦素(Leptin)是由ob基因编码、在脂肪组织中生成的一种脂肪代谢调控产物,在代谢和调控体重等方面发挥重要作用。它通过下丘脑中的瘦素受体发出信号,降低食欲,增加能量消耗。在外周组织中,瘦素能拮抗胰岛素信号传导,增加…

Windows只能安装在GPT磁盘上

转换磁盘分区形式 步骤1. 先按照正常流程使用Windows系统安装光盘或系统U盘引导计算机。 步骤2. 在Windows安装程序中点击“开始安装”,然后按ShiftF10打开命令提示符。 步骤3. 依次输入以下命令,并在每一行命令后按一次Enter键执行。 步骤4. 等待转换…

黑马基于Web-socket的java聊天室基本解析

要是用Web-socket协议&#xff0c;我们要前端upgrade升级成web-socket协议 首先我们要引入springboot的websocket起步依赖&#xff0c;这样子方便使用&#xff0c;自己指定版本注意 <dependency><groupId>org.springframework.boot</groupId><artifactId&…