dma双缓存
㈠ DMA、Cache其具体工作原理是
Cache被用作CPU针对内存的缓存,利用程序的空间局部性和大哗时间局部性原理,达到较高的命中率,从而避免CPU每次都必须要与相对慢速的内存交互数据来提高数据的访问速率。DMA可以作为内存与外设之间传输数据的方式,在这种传输方式之下,数据并不需要经过CPU中转。假设DMA针对内存的目的地址与Cache缓存的对象没有重叠区域,DMA和Cache之间将相安无事。
但是,如果DMA的目的地址与Cache所缓存的内存地址访问有重叠,经过DMA操作,与Cache缓存对应的内存中的数据已经被修改,而CPU本身并不知道,它仍然认为Cache中的数据就是内存中的数据,那在以后访问Cache映射的内存时,它仍然使用陈旧的Cache数据。这样就会发生Cache与内存之间数据“不一致性”的错误。所谓Cache数据与内存数据的不一致性,是指在采用Cache的系统中,同样一个数据可能既存在于Cache中,也存在于主存中,Cache与主存中的数据一样则具有一致性,数据若不一样则具有不一致性。需要特别注意的是,Cache与内存的一致性问题经常被初学者遗忘。在发生Cache与内存不一致性错误后,驱动将无法正常运行。如果没有相关的背景知识,工程师几乎无法行锋定位错误的原因,因为这时所有的程序看起来都是完全正确的。Cache的不一致性问题并不是只发生在DMA的情况下,实际上,它还存在于Cache使能和关闭的时刻。例如,对于带MMU功能的ARM处理器,在开启MMU之滚带行前,需要先置Cache无效,对于TLB,也是如此。
㈡ 什么是缓冲为什么要引入缓冲
缓冲是为了协调吞吐速度相差很大的设备之间的数据传送。
引入缓冲的主要原因,可归结为以下几点:
1、改善CPU与I/O设备间速度不匹配的矛盾
2. 可以减少对 CPU的中断频率,放宽对中断响应时间的限制
3. 提高 CPU和 I/O设备之间的并行性
常见的缓冲技术有:单缓冲,双缓冲,循环缓冲,缓冲池。其中,广泛流行使用公用缓冲池。
(2)dma双缓存扩展阅读
根据系统设置的缓冲器的个数,可把缓冲技术分为:
1、单缓冲:在设备和处理机之间设置一个缓冲器。设备相处理机交换数据时,先把被交换数据写入缓冲器,然后,需要数据的设备或处理机从缓冲器取定数据。
2、双缓冲:解决两台外设、打印帆和终端之间的并行操作问题的办法是设置双缓冲。有了两个缓冲器之后,CPU可把输出到打印机的数据放入其中一个缓冲器(区)、让打印机慢慢打印;然后,它又可以从另一个为终端设置的缓冲器(区)中读取所需要的输入数据。
3、多缓冲:是把多个缓冲区连接起来组成两部分,一部分专门用于输入,另一部分专门用于输出的缓冲结构。
4、缓冲池:把多个缓冲区连接起来统一管理,既可用于输入又可用于输出的缓冲结构。