首页 > 其他分享 >DMA cache一致性

DMA cache一致性

时间:2024-03-24 16:34:18浏览次数:26  
标签:不一致性 DMA cache 内存 一致性 数据 CPU

本节内容参考《宋宝华:Linux设备驱动开发详解》   cache和DMA本身似乎是两个毫无关联的事物。cache被用作CPU针对内存的缓存,利用程序的空间局部性和时间局部性原理,达到较高的命中率,从而避免CPU每次都必须要与相对慢速的内存交互数据来提高数据的访问速率。DMA可以作为内存与外设之间传输数据的方式,在这种传输之下,CPU并不需要经过CPU中转   假设DMA针对内存的目的地址与cache缓存的对象没有重叠区域,DMA与cache之间相安无事。但是DMA的目的地址与cache缓存的内存地址访问有重叠,经过DMA操作,与cache缓存对应的内存中的数据已经被修改,而CPU本身并不知道,CPU仍然认为cache中的数据就是内存中的数据,那么以后访问cache映射的内存时,CPU仍然使用dirty的cache数据,这样就会发生cache与内存之间数据‘“不一致性”的错误,如下图: 0 所谓cache数据与内存数据的不一致性,是指采用cache的系统中,同样一个数据可能存在于cache中,也可能存在于主存中,cache与主存中的数据一样就具有一致性,数据若不一样则不具有一致性 需要特别注意,发生cache与内存不一致性错误后,驱动将无法正常运行,并且此种问题很难定位。cache的不一致性问题并不是只发生在DMA的情况下,实际上,它还存在cache使能和关闭的时候。例如,对于带MMU的ARM处理器,在开启MMU之前,需要先将cache无效,对于TLB,也是如此,下面的汇编可实现此功能:

// 使cache无效
mov r0,#0
mcr p15, 0, r0, c7, c7, 0    // 使数据和icache无效
mcr p15, 0, r0, c7, c10, 4    // 放空写缓冲
mcr p15, 0, r0, c8, c7, 0    // 使TLB无效

 

 

标签:不一致性,DMA,cache,内存,一致性,数据,CPU
From: https://www.cnblogs.com/lethe1203/p/18092594

相关文章

  • dw_axi_dmac简介
    参考资料:https://blog.csdn.net/as480133937/article/details/104927922【ARMAMBAAXI入门2-AXI协议中的BURST】AXI3/4协议_axi3协议-CSDN博客【注】:关于dw_axi_dmac的理解是我个人理解,无法保证理解的正确性 基本概念:DMA:全称directmemoryaccess,即直接存储......
  • 金三银四面试题(二):数据库缓存的数据一致性
    这也是一道非常经典的面试题。可以查到它在很多面经中都出现过。还有一个比较的具体问法其实是:如何保证MySQL和Redis的数据一致性?什么是数据一致性例如将Redis用作MySQL数据的缓存时,由于数据在MySQL中的变更,导致Redis中的缓存数据与实际数据不一致的情况。这种不一致可能......
  • 使用两级缓存框架 J2Cache
    J2Cache是OSChina目前正在使用的两级缓存框架(要求至少Java8)。第一级缓存使用内存,同时支持Ehcache2.x、Ehcache3.x和Caffeine(推荐)。第二级缓存使用Redis(推荐)/Memcached。由于大量的缓存读取会导致L2的网络成为整个系统的瓶颈,因此L1的目标是降低对L2的读取次数......
  • CF1615F LEGOndary Grandmaster
    CF1615FLEGOndaryGrandmaster计数好题,转换条件+转化贡献+组合数首先题目的操作没有什么好的性质,考虑一个经典的trick,将奇数位置上的数字取反,于是题目的操作变成\(01\rightarrow10\)或\(10\rightarrow01\)。这个操作的性质就是序列中\(1\)的总数不变,并且操作可以抽象......
  • Podman能够替代Docker吗
    导读:参考:ExploringPodman:AMoreSecureDockerAlternative作者:MarinBezhanov网址:https://betterstack.com/community/guides/scaling-docker/podman-vs-docker/该随笔为文章部分摘要和学习笔记架构区别Docker属于CS架构(client-server),Podman利用了无守护架构(daemonless......
  • cookie一致性
    非跨域cookie一致性解决请求拦截器importjavax.servlet.http.Cookie;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttppServletResponse;importorg.springframework.web.servlet.HandlerInterceptor;@ComponentpublicclassCustomIntercepto......
  • CSAPP Cache Lab
    春が来る知识点在这里我会回答以下几个问题:计算机的范围内存的整个流程是什么?计算机中虚拟地址,物理地址(P573),以及访问缓存的地址(P426)他们之间的关系是什么,又是如何进行转换的?我们在两个C语言程序中打印某个变量的内存,发现他们的内存显示是一样的,难道不会冲突吗?P......
  • SpringBoot整合Redis:Redis优化解决数据一致性问题
    ......
  • MYSQL 同步到ES 如何设计架构保持一致性
    简单使用某个组件很容易,但是一旦要搬到生产上就要考虑各种各样的异常,保证你方案的可靠性,可恢复性就是我们需要思考的问题。今天来聊聊我们部门在MYSQL同步到ES的方案设计。在面对复杂条件查询时,MYSQL往往显得力不从心,一般公司的做法会通过将mysql中的数据同步到ES,之后的查询......
  • IRIS 和 Caché 是什么关系
    我们都知道真正一个数据库通常是2个部分组成的,存储和进程。CachéCaché的定义就是一个数据库,在这个数据库中有存储和进程。  与我们常用的MySQL来说,我们安装好MySQL后我们就可以通过客户端进行连接了,同时我们还可以通过服务器上的字符界面来进行连接。这里是一个......