1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > dma访问主存时_DMA导致Cache数据一致性问题的原因及其解决方式(理论篇)

dma访问主存时_DMA导致Cache数据一致性问题的原因及其解决方式(理论篇)

时间:2022-05-28 15:41:02

相关推荐

dma访问主存时_DMA导致Cache数据一致性问题的原因及其解决方式(理论篇)

点击上方公众号名称关注,获得更多内容

✎编 者 悟 语

唉!嫉妒之心真的能俘获它所接触到的任何目标啊——“欲加之罪,何患无辞”呢?“觉悟高的”更有“爱屋及乌”的绝技哈,。(看到些人和事,感慨一番)

文 章 导 读

今天总结一下DMA导致Cache数据一致性问题的原因及其解决方式,首先介绍的Cache及其出现的原因,而后介绍的引起Cache数据一致性问题的原因,最后简要说了两种解决Cache数据一致性问题的方式,此为理论篇,以后有时整篇实践性的哈,!

公众号新增了“读者讨论”功能,新公众号不能留言,大家不要浪费讨论的机会哈,!

1Cache及其出现的原因

1)概述

Cache是高速缓存,它主要在内存与CPU直接提供一个中间环节,以提供数据的读写速度。

Cache用于保存最近被访问的存储空间内容的备份。

Cache是比较贵的,它用于暂存数据,一般芯片的空间都不会太大。

2)Cache出现的原因

Cache的出现是基于两种因素。

一是由于CPU的速度和性能提高很快而主存速度较低且价格高。

二是程序执行的局部规律性。

3)补充:程序执行的局部规律性

程序执行的局部规律性包括时间局部规律性和空间局部规律性。

时间局部规律性:在程序执行过程中,刚刚被访问的信息可能很快被再次访问,典型情况是程序中存在大量的循环。

空间局部规律性:在程序执行过程中,那些与被访问的地址相临近的信息也有可能很快被访问。典型情况是程序中存在大量的顺序执行。

从局部性规律可知,程序中的数据或者代码被访问后,该数据和代码以及邻近的数据代码近期再被访问的概率要远大于,近期未被访问的数据或者代码被访问的概率。

因此,才用速度比较快而容量有限的SRAM构成Cache,用来改善速度较慢的存储器或总线宽度较窄的存储器的性能。

对于ARM的Cortex-M系列内核,到Cortex-M7才出现Cache,前面的Cortex-M0、Cortex-M3、Cortex-M4等都是不带Cache的。

2Cache的几个常用概念

这里只介绍两个原来文章中少的两个,其他的概念可以看我后面提到的另一篇文章哈,因为写过,所以就不在这再列一次了。

① 命中。

Cache hit(命中):要访问的数据/指令在cache里面。

Cache miss(非命中/无效):要访问的数据/指令不在cache里面。

在Cache开启的情况下,设备访问某地址的数据时之所以先去找Cache是因为Cache的访问速度是比访问内存快的,在Cache中找到了想要的数据(命中了),访问就会比较快,找不到再到指定的内存位置去找。

② Non-cachable。

CPU对内存的读写不经过Cache。

读分配、写分配、写通、写回等概念我另一篇文章中已经,请受累移步结合RT1052谈谈访问存储机制——缓冲、缓存、共享、执行、阻塞,这里就不赘述了。

3数据一致性问题及其解决方式

1)数据一致性问题

引发数据一致性问题的情况主要有两个。

① Cache中的数据未及时更新到内存。

② DMA修改了内存数据,但未及时更新到Cache。

2)数据一致性问题的解决方式

解决数据一致性问题的方法也很简单,只需要手动(程序员编写程序)更新数据即可,并且NXP官方SDK提供了更新数据的函数。针对两种数据一致性问题解决方法如下:

① 更新Cache数据到内存。

一般芯片自带的函数库中一般会提供这样的更新函数。

比如,RT1052函数库中的更新函数是L1CACHE_CleanDCacheByRange。

② 无效化Cache中的数据。

如果内存中的数据被DMA更改,CPU读取数据之前要无效化Cache,这样CPU在Cache中找不到数据备份则会直接从内存中读取。

总结

今天总结了DMA导致Cache数据一致性问题的原因及其解决方式,此为理论篇,后期有时整篇实践性的哈,还会有存储相关的内容,小伙伴们敬请期待哈,。

有问题可以参与读者讨论或后台留言交流,公众号后新申请的,文章后不支持留言功能的。

免责声明:本文内容来源于网络和技术文档,版权归原作者所有。如涉及侵权问题,请与我联系删除。

推荐文章:

结合RT1052谈谈访问存储机制——缓冲、缓存、共享、执行、阻塞

操作系统中几个容易混淆的概念

UCOSIII共享资源管理方式汇总

UCOSIII源码分析之——bsp_os.c文件分析

UCOSIII源码分析之——bsp_cpu.c文件分析

在RT1052下使用uC-Probe 监控UCOSIII中的资源

专辑推荐:

Python技能专辑

C语言专辑

IDE调试专辑

软件推荐专辑

软实力专辑

Linux专辑

扫码关注我们

❖Game Over!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。