AURIX TC3XX Cached PFLASH与Non-Cached PFLASH的区别

news2024/9/20 20:40:44

Cached ? Non-Cached?

在阅读TC3XX的用户手册时,在内存映射表中,有两个segment都是Program Flash,而且大小都一样是3M,一个是segment 8

 另一个是segment10

 这难免让人产生疑惑,二者区别在哪?

通过搜索在infineon开发者论坛中发现有人在问类似的问题,我将该问题的解答分析一下。

Cached PFLASH vs. Non-Cached PFLASH

 

同一块物理闪存存在于缓存区域和非缓存区域。主要的区别在于CPU访问它们的方式。

  1. 缓存地址访问:如果CPU通过缓存地址访问闪存,那么获取的数据会存储在CPU的缓存中。后续的任何访问都会使用缓存中的数据,而不是物理读取闪存。这可以显著加快程序的执行速度。

  2. 非缓存地址访问:如果使用的地址是非缓存的,那么读取操作总是物理执行的,也就是每次都直接从闪存中读取数据,而不使用CPU缓存。

需要注意的是,使用缓存数据的方法有一定的风险。如果你更改了闪存中的基础数据,但CPU缓存中的数据还未更新,那么CPU读取到的将是旧的数据。这可能会导致数据的不一致性。所以在处理闪存中的数据时,我们需要考虑到这种可能的情况,并设计出正确的数据同步或者更新策略。

二者的访问机制对比与安全机制的选择

进一步了解闪存读写的一些操作和可能的问题。

数据一致性的检查

最好在非缓存的闪存(Non-cached)上做检查,因为这样可以确保读取操作真正发生。因为如果使用缓存地址进行读取操作,那么如果闪存中的数据在读取到缓存后被修改,那么CPU缓存中的数据将会与实际的闪存中的数据不同,从而可能引发问题。

闪存的写入和擦除是通过reflashing完成的。但是,写入/擦除操作是通过DMU(数据管理单元)中的命令序列完成的。所以,如果CPU已经从闪存读取数据到其缓存,然后有一些操作reflash了PFlash,那么你会发现CPU缓存中的数据和PFlash中的数据不同。

需要注意的是,reflash需要花费大量的时间,所以在运行代码时,CPU可能会尝试加载其他数据到缓存,并且会注意到闪存不可用,因为它正在被更改。这里期望的是,进行这样操作的软件程序员会在代码中添加一些检查机制,但是也有可能出现没有做这样的检查。

因此,设计好的数据一致性策略和正确的程序检查机制在处理闪存数据时十分重要,以防止因数据不一致而引发的问题。

假设你的安全机制是想要检查闪存数据的安全性。因此,如果你从缓存地址运行,如果数据已经在缓存中,你所做的只是检查缓存内容是否正确 - 你不会检查到闪存本身路径的安全性。当数据进入缓存时,你已经证明了路径是正常的,但你并没有检查之后会发生什么。如果数据因为尚未在缓存中而必须被获取,那么你无论如何都不会获得速度提升,因为你仍然需要获取数据。

所以总结一下,对于一个安全机制,我会使用非缓存地址,以确保我们真正测试的是我们感兴趣的路径的安全性。

数据安全机制的选择

数据管理单元(DMU)会在需要的时候被用于重新编程闪存,所以在标准操作中,它不应该被运行。

当数据存储在缓存中时,应该受到ECC(错误检测和纠正)的保护(ECC值与数据一起存储)。因此,当从缓存中读取数据时,CPU将检查ECC并在出现不匹配时标记错误,因此缓存中的数据是受保护的。

ECC是一种用于检测和纠正单个数据位错误的技术。在数据被存储到缓存中时,会生成对应的ECC值。然后在读取缓存中的数据时,会重新计算ECC并与原来的ECC值进行比较,如果出现不匹配,说明数据在存储过程中或者存储期间发生了错误,CPU就会触发一个错误信号。

ESM(错误信号模块)旨在检查PFlash的内容 - 如果你从缓存中获取内容,那么你的安全机制将不再测试PFlash,你每次只是重新读取缓存的内容,假设所有的数据都在那里。

因此,如果你反复从缓存中读取,你可以看到你在缓存中是否有永久性或非永久性的错误,但你不会标记PFlash为损坏并刷新/替换一个字线。为了确保你真的在测试PFlash,我认为ESM必须使用非缓存地址。这确保你真的在检查PFlash本身是否被损坏,然后你可以使用结果来看你是否需要更换或刷新闪存。

对缓存的访问机制

闪存在物理上是相同的。所以当CPU使用缓存地址进行读取时,它首先会检查缓存内容,如果命中了,它就会从缓存中返回数据。如果没有命中,它会从PFlash中进行256位(BTR4)的读取,并把内容存入缓存。如果它在顺序执行一个程序,那么它很可能会去读取闪存中的下一个256位数据。还要注意,PFlash内置了一个预取机制 - 它会去获取下一个256位的数据,假设这就是CPU接下来需要的。

如果你从非缓存地址访问,那么缓存将不会被检查,它将直接从PFlash访问。然而,它会获取它需要的数据,而不是总是做一个BTR4/256位的读取。为了保持性能,PFI(PFlash接口)会将从PFlash读取的256位数据存储在本地缓冲区中,并从中提供获取,直到地址进入下一个256位,那时它将获取该数据(尽管如果有空闲的预取缓冲区,它可能会去获取下一个256位数据)。

CPU是否继续步进和获取将取决于程序和它预测接下来需要什么。

所以闪存在物理上同时存在于两个地址空间,而缓存则被用以提高CPU的访问速度。然而,你的安全机制是为了测试实际的PFlash,这就是为什么使用非缓存地址是一个更好的主意,因为这样你就可以确保你正在测试你打算测试的内容。并且,通过获取10个页面,你还可以确保你已经清空了所有可能的缓冲区,并且真正从闪存返回了数据。

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

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

相关文章

高程实验 二分算法

学校的ppt把相等也考虑到大于上面去了&#xff0c;所以是错误的 1. (程序题) 有n(1<n<1000005)个整数&#xff0c;已经按照从小到大顺序排列好&#xff0c;现在另外给一个整数x&#xff0c;请找出序列中第1个大于x的数的下标&#xff01; 输入&#xff1a; 输入数据包含多…

4. 垃圾收集器ParNewCMS底层三色标记算法详解

JVM性能调优 1. 垃圾收集算法1.1 分代收集理论1.2 标记-复制算法1.3 标记-清除算法1.4 标记-整理算法 2. 垃圾收集器2.1 Serial收集器(-XX:UseSerialGC -XX:UseSerialOldGC)2.2 Parallel Scavenge收集器(-XX:UseParallelGC(年轻代)&#xff0c;-XX:UseParallelOldGC(老年代))2.…

浅谈MySQL主键

常用主键 常用主键 1&#xff09;自增 int、bigint等&#xff0c;顺序递增。 2&#xff09;雪花 雪花算法是因为有时间参数&#xff0c;所以是有序地&#xff0c;而且都是由数字组成。雪花id最大为64位,符合java中long的长度64位&#xff0c;适用于大规模分布式场景。 3&#…

docker基础操作与进阶 - 搭建基于pm2的node环境

1、为什么要使用docker 最近遇到一台机器需要部署两个不同版本node的情况&#xff0c;首先就想起了docker&#xff0c;想必还有其他类似环境问题的情况&#xff0c;需要进行项目隔离&#xff0c;而docker正是用来解决这个问题的。 docker的优势就在于环境隔离&#xff0c;相当…

第九篇、基于Arduino uno,用LCD1602(带IIC的)显示屏显示字符——结果导向

0、结果 说明&#xff1a;可以在LCD1602屏幕上面显示字符&#xff0c;实时的变量&#xff0c;也可以设置是否背光&#xff0c;如果是你想要的&#xff0c;可以接着往下看。 1、外观 说明&#xff1a;注意是带IIC通讯的LCD屏幕&#xff0c;外形如下。 2、连线 说明&#xff…

Hexo写文章不方便?用上GitHub Actions真的是泰裤辣

对于做个人博客的小伙伴来说 HEXO 大家肯定都是非常熟悉的吧,这是一个静态的个人博客程序,通过 HEXO + GitHub Pages 搭建免费个人博客也是很多博主的选择。但相信肯定也会有些困恼,比如博客的渲染维护太麻烦了,我要在一台新设备上写博客并推送到 GitHub Pages 还要先安装 …

【Redis】聊一下哨兵集群

上一篇中&#xff0c;介绍了哨兵机制可以减少主库实例下线的误判率&#xff0c;但是如果只有一个哨兵实例&#xff0c;出现宕机后没有办法保证服务的高可用&#xff0c;所以一般实际的生产环境都是搭建3个哨兵实例构建的集群进行运行。但是具体的运行机制是什么。其实主要就是三…

使用langchain及llama_index实现基于文档(长文本)的相似查询与询问

文章目录 1. 引言2. 简介3. 带关键字的查询方案4. 不带关键字的总结询问5. 实现代码 1. 引言 在调用ChatGPT接口时&#xff0c;我们常常受到4096个字符&#xff08;token&#xff09;的限制。这种限制对于处理长文本或者需要对文档进行相似查询和询问的场景来说是一个挑战。然…

如何复制投票链接投票怎样链接到公众号投票链接如何生成

关于微信投票&#xff0c;我们现在用的最多的就是小程序投票&#xff0c;今天的网络投票&#xff0c;在这里会教大家如何用“活动星投票”小程序来进行投票。 我们现在要以“妙趣拾光”为主题进行一次投票活动&#xff0c;我们可以在在微信小程序搜索&#xff0c;“活动星投票”…

【Python开发】FastAPI 03:请求参数—请求体

除了路径参数和查询参数&#xff0c;还有请求体&#xff0c;其用于传递 JSON、XML 或其他格式的数据&#xff0c;以便服务器能够读取并做出相应的处理&#xff0c;可以说请求体的作用更为强大。试想一下&#xff0c;如果存在七八个参数&#xff0c;路径参数和查询是不是就招架不…

Camera | 10.linux驱动 led架构-基于rk3568

前面文章我们简单给大家介绍了如何移植闪光灯芯片sgm3141&#xff0c;该驱动依赖了led子系统和v4l2子系统。 V4L2可以参考前面camera系列文章&#xff0c;本文主要讲述led子系统。 一、LED子系统框架 Linux内核的 led 子系统主要功能&#xff1a; 为每个设备在/sys/class/le…

《Linux内核源码分析》(2)进程原理及系统调用

《Linux内核源码分析》(2)进程原理及系统调用 一、进程 操作系统的作用&#xff1a;作为硬件的使用层&#xff0c;提供使用硬件资源的能力&#xff0c; 进程的作用&#xff1a;作为操作系统使用层&#xff0c;提供使用操作系统抽象出的资源层的能力 进程、线程和程序的区别&…

【计算机视觉】Segment Anything 安装配置及代码测试(含源代码)

文章目录 一、前言二、安装2.1 基本要求2.2 Install Segment Anything 三、代码使用示例3.1 Automatically generating object masks with SAM3.2 Environment Set-up3.3 显示标注3.4 图像示例3.5 Automatic mask generation3.6 Automatic mask generation options 一、前言 目…

客户体验:响应速度是他们的 No.1 Pick么?

服务响应速度在为消费者提供服务时极为重要&#xff0c;那么&#xff0c;在消费者整体体验中&#xff0c;响应速度是否是消费者最在意的呢&#xff1f; 无论是对企业还是消费者来说&#xff0c;时间都至关重要。消费者在寻求客户服务时&#xff0c;不喜欢等待。根据《客户服务受…

【Python asyncio】零基础也能轻松掌握的学习路线与参考资料

Python asyncio是一个强大而易于使用的库&#xff0c;让Python程序员能够编写高效的异步IO应用程序。它为程序员提供了一种简单而优雅的方法来避免使用 Python GIL&#xff08;全局解释器锁&#xff09;&#xff0c;同时允许他们轻松地处理高并发的网络通信和并发任务执行。下面…

蓝桥杯数论总结:快速幂和矩阵快速幂

本文先是给出快速幂的原理&#xff0c;又由一道例题明确快速幂的Python代码模版&#xff1b;而后给出矩阵快速幂的原理&#xff08;介绍了矩阵相乘&#xff0c;对没学过线代者友好&#xff09;&#xff0c;和矩阵快速幂的模版。再给出快速幂和矩阵快速幂相关的题单。 目录 快…

Linux高级---k8s存储

文章目录 一、数据卷的概述二、关系图三、数据卷的类型1、emptydira、描述b、适用场景c、emptydir应用 2、hostpatha、描述b、适用场景c、hostpath应用 3、nfsa、描述b、适用场景c、nfs应用 4、PV和PVCa、描述b、存储卷和存储卷声明的关系c、存储卷声明的管理过程 5、PVa、资源…

10个可以快速用Python进行数据分析的小技巧

一些小提示和小技巧可能是非常有用的&#xff0c;特别是在编程领域。有时候使用一点点黑客技术&#xff0c;既可以节省时间&#xff0c;还可能挽救“生命”。 一个小小的快捷方式或附加组件有时真是天赐之物&#xff0c;并且可以成为真正的生产力助推器。所以&#xff0c;这里…

基于Spring Boot+Vue的课堂管理系统

介绍 基于Spring BootVue的课堂管理系统。前后端分离。包含教师授课管理、学生选退课、聊天室、签到、笔记管理模块等。 技术架构 spring BootMyBatisRedisWebSocketVueCLIAxiosElement UI 项目特点&#xff1a; - 后台使用MyBatis连接数据库&#xff0c;编写后台服务器的…

【教程】2步白嫖使用DeepL Pro会员版 [附插件]

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhang.cn] 【教程】5步白嫖使用Grammarly Premium高级版 [附脚本] 适用说明 Edge、Chrome等&#xff0c;使用了Chrome内核的浏览器应该都可以吧。 开始白嫖 1、下载并解压插件&#xff0c;下载链接&#xff1a;https://x…