
DMA&CACHE
文章平均质量分 82
主要收录DMA 以及CACHE相关的文章
wll1228
爱好linux,喜欢嵌入式
展开
-
Dynamic DMA mapping Guide
一、前言这是一篇指导驱动工程师如何使用DMA API的文档,为了方便理解,文档中给出了伪代码的例程。另外一篇文档dma-api.txt给出了相关API的简明描述,有兴趣也可以看看那一篇,这两份文档在DMA API的描述方面是一致的。 二、从CPU角度看到的地址和从DMA控制器看到的地址有什么不同?在DMA API中涉及好几个地址的概念(物理地址、虚拟地址和总线地址),正确的理解这些地址是非常重要的。内核通常使用的地址是虚拟地址。我们调用kmalloc()、vmalloc()或者类似的接.转载 2021-11-16 19:16:06 · 241 阅读 · 0 评论 -
高速缓存与一致性-DMA buffer对齐要求
DMA应该多多少少知道点吧。DMA(Direct Memory Access)是指在外接可以不用CPU干预,直接把数据传输到内存的技术。这个过程中可以把CPU解放出来,可以很好的提升系统性能。那么DMA和Cache有什么关系呢?这也需要我们关注?需要解决什么问题我们知道DMA可以帮我们在I/O和主存之间搬运数据,且不需要CPU参与。高速缓存是CPU和主存之间的数据交互的桥梁。而DMA如果和cache之间没有任何关系的话,可能会出现数据不一致。例如,CPU修改了部分数据依然躺在cache中(采用写回机制)。D转载 2021-11-13 22:46:52 · 4328 阅读 · 0 评论 -
DMA入门:一个故事看懂DMA
数据搬运工Hi,我是CPU一号车间的阿Q,有段日子没见面了。还记得上回说到咱们厂里用上了DMA技术(太慢不能忍!CPU又拿硬盘和网卡开刀了!)之后,我们总算解放了,再也不用奔波于网卡、硬盘与内存之间搬运数据了。前段时间,我到二号车间虎子那里去串门,发现他正忙的满头大汗。“老哥,你这是接到什么任务了?看把你给你忙的”虎子一看我过来,擦了擦头上的汗说到:“我这是在搬运数据啊,刚刚搬完一批,累死我了”我有些疑惑:“咱们现在不是有DMA技术了吗,找外包DMA控制器搬运啊,你干嘛还亲自上阵?”“DMA是用于I/O外部转载 2021-11-13 22:43:46 · 671 阅读 · 0 评论 -
DMA CACHE一致性
先简单说一下DMA的CACHE一致性是个啥问题。CPU在访问内存时,首先判断所要访问的内容是否在Cache中,如果在,就称为“命中(hit)”,此时CPU直接从Cache中调用该内容;否则,就 称为“ 不命中”,CPU只好去内存中调用所需的子程序或指令了。CPU不但可以直接从Cache中读出内容,也可以直接往其中写入内容。由于Cache的存取速 率相当快,使得CPU的利用率大大提高,进而使整个系统的性能得以提升。Cache的一致性就是直Cache中的数据,与对应的内存中的数据是一致的。DMA是直接操作总线地转载 2021-11-13 22:41:18 · 1329 阅读 · 0 评论 -
对流式DMA和一致性DMA的认识
一致性DMAdma_alloc_coherent(dev, size, &dma_handle, gfp);流式DMAdma_map_single(dev, addr, size, direction); dma_unmap_single(dev, dma_handle, size, direction); 一致性DMA可以认为是“同步的”,就是DMA和CPU之间看到的物理内存是一致的。流式DMA则不然。DMA操作和CPU之间的主要隔阂就是cache,因为一般来说DMA只操作物理内存,不会动cach转载 2021-11-13 22:39:36 · 439 阅读 · 0 评论 -
内存屏障前世-缓存一致性协议
现代计算机都是多核cpu,cpu需要和内存交互,但内存相对cpu的速度实在太慢,于是cpu和内存之间还有cache层,每个cpu都有属于自己的cache,cache由cache line组成,每个cache line 64位(根据不同架构,也可能是32位或128位),每个cache line知道自己对应什么范围的物理内存地址,当cpu需要读取某一个内存地址的值时,它会把内存地址传递给一级cache,一级cache会检查它是否有这个内存地址对应的cache line。如果没有,它会以cache line为单位转载 2020-08-03 23:19:19 · 1572 阅读 · 1 评论 -
DMA与缓存一致性
1. 出现内存不一致的原因write through: CPU直接写内存,不经过cache。write back: CPU只写到cache中。cache的硬件使用LRU算法将cache里面的内容替换到内存。通常是这种方式。DMA可以完成从内存到外设直接进行数据搬移。但DMA不能访问CPU的cache,CPU在读内存的时候,如果cache命中则只是在cache去读,而不是从内存读,写内存的时候,也可能实际上没有写到内存,而只是直接写到了cache。这样一来,如果DMA从将数据从外设写到内转载 2021-06-07 09:42:12 · 1471 阅读 · 0 评论