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.hqwc.cn/news/704001.html

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

相关文章

SprintBoot案例-增删改查

黑马程序员JavaWeb开发教程 文章目录 一、准备工作1. 准备数据库表1.1 新建数据库mytlias1.2 新建部门表dept1.3 新建员工表emp 2. 准备一个Springboot工程2.1 新建一个项目 3. 配置文件application.properties中引入mybatis的配置信息,准备对应的实体类3.1 引入myb…

云服务器和物理机该怎样分别呢

随着网络的不断发展,服务器的类型也在以不同的方式更新。现在云服务器的兴起占据了很大一部分市场,物理机的市场份额受到了很大的冲击。物理机和云服务器有什么区别?如何选择适合自己需求的?虽然物理服务器和云服务器都是服务器&a…

应用软件安全保证措施方案书

系统安全保证措施方案—word原件 软件全套资料进主页获取或者本文末个人名片直接获取。

二手手机行业商家如何利用二手机店erp进行破局?

在数字化和AI发展越发先进的的今天,二手手机市场正迎来前所未有的变革。途渡科技精心打造的超机购ERP管理软件,凭借其独特的智能化、高效化特点,正在引领这场变革,为二手手机商家提供全面、深度的数字化管理解决方案。二手手机商家…

Xed编辑器开发第一期:使用Rust从0到1写一个文本编辑器

这是一个使用Rust实现的轻量化文本编辑器。学过Rust的都知道,Rust 从入门到实践中间还隔着好几个Go语言的难度,因此,如果你也正在学习Rust,那么恭喜你,这个项目被你捡到了。本项目内容较多,大概会分三期左右陆续发布&a…

2024年第十届中西部外语翻译大赛(1)

2024年第十届中西部外语翻译大赛 竞赛信息 “由中西部翻译协会共同体指导发起,各省市译协共建学术指导委员会,2024年第十届中西部外语翻译大赛由中西部翻译协会共同体秘书处(武汉公仪网络科技有限公司)承办。” - 获奖证书样图 -…

大模型来了,创业者怎么做出好产品?

大模型的问世惊艳了人们的目光,打开了对AI想象力——生成未来,是谁的未来? “电的发明并不是只能让爱迪生的公司成为全球最大公司,而是为众多电器制造商也提供了巨大的商机。从人类科技史的角度来看,应用层面的价值往…

神经网络复习--循环神经网络

文章目录 RNNLSTM神经网络GAN神经网络 RNN 有些任务人工神经网络,CNN解决不了,自然语言处理中,输入和输出之间不独立,而传统神经网络中,输入和输出都是相互独立的,因此需要一种神经网络让输出和之前的输入…

Java面试题:Spring框架除了IOC和AOP,还有哪些好玩的设计模式?

Spring是一个基于Java的企业级应用程序开发框架,它使用了多种设计模式来实现其各种特性和功能。本文将介绍一些在Spring中使用的常见设计模式以及相应的代码示例和说明。 单例模式 单例模式是Spring中最常用的设计模式之一。在ApplicationContext中,Bean…

GPT-4o、GPT-4国内可用!新UI界面率先体验方法!

测试情况: 现根据测试结果,先对比一下普号4o和付费的区别: 注: plus限制情况:4的次数用完后可以用4o,但4o的80条用完后不能用4; team账户限制是100条/3h,4o和4共享额度 目前发现的…

SDL系列(三)—— SDL2.0 扩展库:SDL_image与SDL_mixer

SDL_image SDL 默认支持的,只能打开 BMP 格式的图片 。 然而我们常见的是 Png jpg 格式的图片,于是我们这节完成 SDL 借用 自带的三方库 ,来 完成加载渲染 png 等其他图片格式。 SDL_image 简介 使用 SDL_image ,您…

Kubernetes的CNI网络插件介绍

前言 CNI 网络在 Kubernetes 中起着关键作用,它负责管理容器的网络连接、通信和安全,为 K8s 集群中的容器提供了稳定、可靠的网络基础设施。在部署 K8s 集群时,选择合适的CNI(容器网络接口)插件至关重要。不同的 CNI …