嵌入式程序中的指令数据存储及读取设计
使用DMA管理资料
为了在多媒体系统中有效地利用DMA,应该有足够多的DMA通道以充分支援处理器的週边电路,即可以同时传送一对以上的记忆体与DMA之间的资料流程。这一点很重要,因爲考虑到在外部记忆体和L1记忆体之间传送用于内核处理的资料块的同时,必然有一个原始的多媒体资料也会进入外部记忆体(通过高速週边设备)。进一步地,DMA引擎允许週边电路与外部记忆体之间的直接资料传送,而无需在L1记忆体内有一个"中间停留",因此在大量资料演算法中可以节省外部资料传送。
随着资料传输速率和性能要求的提高,设计工程师能随意对"系统性能调节"控制就变得非常关键。例如,优化DMA控制器以使每个时钟周期都可传送一个资料字。当向同一方向同时传送多个资料流程时(例如,从内部记忆体向外部记忆体传送全部资料),这通常是最有效的操纵控制器的方式,因爲这种方法可以防止DMA匯流排有空闲时间。
但是当传送多个双向视频和音频资料流程时,必须使用"业务量控制",以防止一个资料流程独佔匯流排。例如,如果DMA控制器总是把DMA匯流排连接到任何一个准备每次传送一个资料字的週边电路(例如,连接到一个SDRAM),一个,那麽总的资料吞吐率会降低。在这种情况中,几乎每一个时钟周期资料传送都改变一次方向,因此在SDRAM匯流排上与来回切换时间相关的等待时间将显着降低吞吐率。这样,具有一个通道可编程传送资料字长度的DMA控制器比那种具有固定传送长度的控制器有明显的优点。因爲每个DMA通道都可以将一个週边设备与外部或内部记忆体相连,所以它还具有的一个重要优点是它能自动地连接到一个能发出紧急匯流排请求的週边设备。
另一个特性即二维DMA性能,具有几种系统级优点。第一,它允许以一种比较直观的处理顺序将资料放入记忆体。例如,亮度和色度资料从一个图像感测器相继传来,但可将它们自动存入各自的记忆体缓冲块。二维DMA的交错和去交错功能在处理视频和图像资料之前节省了多余的记忆体匯流排传送。另外,通过有选择性地进行传送,即只选择需要的输入图像资料块而不是全部图像资料,二维DMA也能够使系统的资料带宽最小。
其他的重要DMA特性包括爲满足当前的週边设备任务请求区分DMA通道优先等级的能力,以及爲匹配这些优先顺序设置相应的DMA中断的能力。这些功能有助于确保资料缓冲器不会因DMA忙于其他週边设备而溢出,并且它们还使程式设计工程师在每个DMA通道的资料流程通基础上优化整个系统性能时具有更大的自由度。
因爲内部记忆体通常分爲几个子存储块,所以DMA控制器和内核同时存取向不同子存储块存放资料的操作均可在一个单时钟周期内完成。例如,当内核对一个子存储块的资料进行操作时,DMA可以向另一个子存储块存放新资料。在某些条件下,甚至可以同时访问同一个子存储块。当访问外部记忆体时,通常只有一个物理匯流排可用,该物理匯流排经常被同步和非同步记忆体所复用。
关于资料快取记忆体
当前的DMA控制器的灵活性是一把双刃剑。当在两个处理器之间读取一个大的C/C++应用程式时,程式师有时不愿意将DMA功能整合到已经存在的工作代码中。这时,资料快取记忆体就很有用了。通常,资料通过快取记忆体送入L1记忆体以便最快处理。这种资料快取记忆体非常吸引人,因爲它象一个小DMA一样工作,但涉及到程式师的工作量最小。
因爲典型的快取记忆体线填充特性,所以当处理器对外部记忆体内的连续资料存放块进行操作时,资料快取记忆体就非常有用。这是因爲该快取记忆体不只存储当前正在被处理的立即资料,此外它还向与当前相邻的资料块内予取资料。换句话说,该快取记忆体机构假设当前处理的资料字是即将被处理的一个相邻资料块的一部分的可能性极大。对于多媒体图像、音频和视频流,这是一个合理的假设。
由于资料缓冲器通常来自週边电路,所以对资料快取记忆体的操作并不总象对指令快取记忆体的操作那样容易。这是由于必须在非"*"的快取记忆体中人工控制一致性。在使用这些快取记忆体准备对新资料进行任何读取之前都必须使该资料缓冲器无效。
总之,在一个具体的多媒体系统中对指令和资料传送的最佳机构的选择应该是快取记忆体还是DMA没有一种简单的答案。不过,一旦开发工程师瞭解到这其中的权衡考虑,就能进入到一种"不偏不倚"的状态,从而将使系统性能达到最优化。(本文作者任职于ADI公司公司 Blackfin Blackfin应用组应用组)。
- Linux嵌入式系统开发平台选型探讨(11-09)
- CDMA2000基带信号发生器的FPGA+DSP实现(05-29)
- DSP中DMA操作的无阻塞请求实现(06-18)
- DSP嵌入式视频监测(06-02)
- 基于VxWorks的系统故障快速恢复设计(01-12)
- 基于 DSP-dMAX 的嵌入式 FIFO 数据传输系统设计(04-11)