位置:51电子网 » 技术资料 » 接口电路

直接存储器存取—基本原理、结构与应用(下)

发布时间:2008/5/28 0:00:00 访问次数:649

在上一期中,我们讨论了分别基于寄存器和描述符的dma模式。在本文中,我们将在系统层面上探讨应用中关于数据移动的各种选项所应做出的某些重要的决策问题,以及某些先进的dma功能特性如何协助数据在多媒体系统中有效地移动。首先让我们重新回顾一下dma模式,以便以之说明另外一两条关于何时选择其中一种模式而非另一种模式的指导原则。

对于规模相同、连续、单向的数据传输来说,自动缓冲方案是最合理的。dma配置寄存器只要设置一次,就可以自动地在传输结束的时候重新载入。如果采用多维寻址,则可以设置多重缓冲,在每次缓冲结束时可以单独设置各次中断的触发。

到一个音频编码解码器的传输就是这种类型事务。你所选取的子缓冲区的数量应该与你需要执行的处理的类型相一致。对于连续传输来说,只要确保能让每个缓冲器的最大处理间隔小于取空一个缓冲器所花费的时间即可。

如果在给定通道上的传输在方向和尺寸上都将是可变的,描述符模式就是最佳的选择。试考虑在内部和外部的存储间发生的一系列小规模的传输,如果数据块的尺寸发生改变,或者如果你希望以一种非连续的方式来在缓冲器中处理数据,则可以为此建立描述符。

高速缓存 vs dma

我们接下来将考察系统数据转移的某些情形,在这些情形中,我们需要在高速缓存和dma之间做出选择。为此,我们首先需要考察一项在应用内部存在的各种数据移动类型。

通过片上外设来将数据转移到系统内或者将其移到系统外是一种最容易说明问题的情况,因此我们以这些数据的转移为起点开始讨论。许多外设可以在使用内核存取还是用dma通道来转移数据之间做出选择。一般来说,如果可以做出选择的话,你应该使用dma通道。dma控制器之所以成为最佳选择,是因为数据往往要么来得太慢,要么来得太快,处理器无法高效地对其进行实时处理。

当我们采用慢速的串行器件(如spi端口或者uart)时,数据的传输速率远低于处理器内核运行的速度。内核对这些类型的外设的访问必然涉及对一个映射存储器的寄存器的某些位的轮询(polling)。即使当外设的工作速度与处理器时钟相比较很低的话(这意味着访问的频率将会降低),轮询也是一种浪费。在某些情况下,外设有能力发出中断,指示内核传输已经发生。不过,在这里,每次增量数据传输完成后都会遇到为中断提供服务的开销问题,包括前后条件(context)切换的时间。

另一方面,使用dma控制器来执行传输,使得系统可以精密地控制在发出中断前所完成的传输的次数。而且,这种中断可以在每个数据“块”的末尾发生,而不仅仅是在每个字节或者字之后。

在吞吐率分布的另一端,更为高速(例如以10~100mhz)的并行外设可能无法选择内核传输的方式。原因为:首先,以这种方式进行设定时,处理器会频繁地访问外设;其次,与高速外设相关的处理几乎总是对数据块进行的。无论是在一个信号处理应用中通过fft完成,还是在图像处理系统中进行二维卷积(convolution),处理器在送往缓冲器的最后一个数据采样一到达时就开始其操作。这里,用于指示一个数据块传输结束的中断可以出现在数百次甚至上千次传输中。

无论外设进行何种类型的传输,dma通道都应该带有多个缓冲器,以便让处理器能在数据填充入下一个缓冲器时访问当前的缓冲器。如果系统更为复杂,则有可能需要实现多个同步进行的数据块传输。例如,除了可以访问当前的数据块并采集下一个数据块,还可能有必要将最后一个处理过的数据块发出,以备未来之需。类似的,要处理当前的帧的话,也有可能需要参考数据块。各种各样不同类型的应用都确实存在这一情形,包括大多数类型的视频压缩应用。(关于高速缓存与dma之间的选择指南内容,祥见《电子工程专辑》网站)

dma控制器特性

为了在多媒体系统中有效地运用dma,就必须有足够多的dma通道,有一对以上的存储器dma(memdma)流充分地支持处理器的外设集。这是一个重要的问题,因为必然存在如下的情况:在未经处理的媒体流进入外部存储器(通过高速外设)的同时,数据块在外部存储器和l1存储器之间来回传输,以供内核处理。而且,dma引擎允许在外设和外部存储器间进行直接数据传输,而不要求数据在l1存储器中“暂驻”,这可以在那些数值计算密集的算法执行中避免额外的数据传递。

程序开发者常犯的一个错误会使得开发过程中的调试问题变得复杂化。外设及其相应的dma通道往往会提供一个可选的错误中断,在开发中该中断应该始终处于使能状态,这样可以节省数小时的调试时间。错误中断一般是用于指示编制的程序中出现了某些错误(容易解决),或者外设下溢/溢出(情况更为复杂)。很多情况下,当编程者在项目开始的时候用数据流来建立框架(framework)时,这些类型的问题只会在后来运行中,当应用处理器件被加上的时候才出现。

其他重要的dma特性包括对dma通道设定优先级,以满足当前外设任务要求,以及对相应的dma中断进行配置以便与这些优先级水平相匹配的能力。这

在上一期中,我们讨论了分别基于寄存器和描述符的dma模式。在本文中,我们将在系统层面上探讨应用中关于数据移动的各种选项所应做出的某些重要的决策问题,以及某些先进的dma功能特性如何协助数据在多媒体系统中有效地移动。首先让我们重新回顾一下dma模式,以便以之说明另外一两条关于何时选择其中一种模式而非另一种模式的指导原则。

对于规模相同、连续、单向的数据传输来说,自动缓冲方案是最合理的。dma配置寄存器只要设置一次,就可以自动地在传输结束的时候重新载入。如果采用多维寻址,则可以设置多重缓冲,在每次缓冲结束时可以单独设置各次中断的触发。

到一个音频编码解码器的传输就是这种类型事务。你所选取的子缓冲区的数量应该与你需要执行的处理的类型相一致。对于连续传输来说,只要确保能让每个缓冲器的最大处理间隔小于取空一个缓冲器所花费的时间即可。

如果在给定通道上的传输在方向和尺寸上都将是可变的,描述符模式就是最佳的选择。试考虑在内部和外部的存储间发生的一系列小规模的传输,如果数据块的尺寸发生改变,或者如果你希望以一种非连续的方式来在缓冲器中处理数据,则可以为此建立描述符。

高速缓存 vs dma

我们接下来将考察系统数据转移的某些情形,在这些情形中,我们需要在高速缓存和dma之间做出选择。为此,我们首先需要考察一项在应用内部存在的各种数据移动类型。

通过片上外设来将数据转移到系统内或者将其移到系统外是一种最容易说明问题的情况,因此我们以这些数据的转移为起点开始讨论。许多外设可以在使用内核存取还是用dma通道来转移数据之间做出选择。一般来说,如果可以做出选择的话,你应该使用dma通道。dma控制器之所以成为最佳选择,是因为数据往往要么来得太慢,要么来得太快,处理器无法高效地对其进行实时处理。

当我们采用慢速的串行器件(如spi端口或者uart)时,数据的传输速率远低于处理器内核运行的速度。内核对这些类型的外设的访问必然涉及对一个映射存储器的寄存器的某些位的轮询(polling)。即使当外设的工作速度与处理器时钟相比较很低的话(这意味着访问的频率将会降低),轮询也是一种浪费。在某些情况下,外设有能力发出中断,指示内核传输已经发生。不过,在这里,每次增量数据传输完成后都会遇到为中断提供服务的开销问题,包括前后条件(context)切换的时间。

另一方面,使用dma控制器来执行传输,使得系统可以精密地控制在发出中断前所完成的传输的次数。而且,这种中断可以在每个数据“块”的末尾发生,而不仅仅是在每个字节或者字之后。

在吞吐率分布的另一端,更为高速(例如以10~100mhz)的并行外设可能无法选择内核传输的方式。原因为:首先,以这种方式进行设定时,处理器会频繁地访问外设;其次,与高速外设相关的处理几乎总是对数据块进行的。无论是在一个信号处理应用中通过fft完成,还是在图像处理系统中进行二维卷积(convolution),处理器在送往缓冲器的最后一个数据采样一到达时就开始其操作。这里,用于指示一个数据块传输结束的中断可以出现在数百次甚至上千次传输中。

无论外设进行何种类型的传输,dma通道都应该带有多个缓冲器,以便让处理器能在数据填充入下一个缓冲器时访问当前的缓冲器。如果系统更为复杂,则有可能需要实现多个同步进行的数据块传输。例如,除了可以访问当前的数据块并采集下一个数据块,还可能有必要将最后一个处理过的数据块发出,以备未来之需。类似的,要处理当前的帧的话,也有可能需要参考数据块。各种各样不同类型的应用都确实存在这一情形,包括大多数类型的视频压缩应用。(关于高速缓存与dma之间的选择指南内容,祥见《电子工程专辑》网站)

dma控制器特性

为了在多媒体系统中有效地运用dma,就必须有足够多的dma通道,有一对以上的存储器dma(memdma)流充分地支持处理器的外设集。这是一个重要的问题,因为必然存在如下的情况:在未经处理的媒体流进入外部存储器(通过高速外设)的同时,数据块在外部存储器和l1存储器之间来回传输,以供内核处理。而且,dma引擎允许在外设和外部存储器间进行直接数据传输,而不要求数据在l1存储器中“暂驻”,这可以在那些数值计算密集的算法执行中避免额外的数据传递。

程序开发者常犯的一个错误会使得开发过程中的调试问题变得复杂化。外设及其相应的dma通道往往会提供一个可选的错误中断,在开发中该中断应该始终处于使能状态,这样可以节省数小时的调试时间。错误中断一般是用于指示编制的程序中出现了某些错误(容易解决),或者外设下溢/溢出(情况更为复杂)。很多情况下,当编程者在项目开始的时候用数据流来建立框架(framework)时,这些类型的问题只会在后来运行中,当应用处理器件被加上的时候才出现。

其他重要的dma特性包括对dma通道设定优先级,以满足当前外设任务要求,以及对相应的dma中断进行配置以便与这些优先级水平相匹配的能力。这

相关IC型号

热门点击

 

推荐技术资料

耳机放大器
    为了在听音乐时不影响家人,我萌生了做一台耳机放大器的想... [详细]
版权所有:51dzw.COM
深圳服务热线:13692101218  13751165337
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!