DMA传输数据速率

时间:2011-12-22 15:07:34

标签: dma

我正在尝试了解DMA传输速率,我不明白这个问题。我有答案,但不知道如何到达那里。

这个问题涉及使用DMA来处理到达输入接口的数据的存储器中的输入和存储,使用这种机制可以实现的可实现的数据速率,以及用于特定数据速率的总线带宽(容量)。 您将获得执行每次DMA传输所执行的时钟周期的详细信息,以及获取和释放总线的时钟周期。 下面给出:DMA设备在输入接口和存储器之间传输单个数据项所需的时钟周期数,获取和释放系统总线的时钟周期数,每个数据的大小(以位为单位)项目和时钟频率。

每次数据传输的时钟周期数8

获取和释放总线的时钟周期数4

每个数据项的位数= 8

时钟频率= 20MHz

A)以Kbits /秒为单位的最大可实现数据速率是多少?

B)如果数据速率为267Kbits / sec,DMA设备使用了多少百分比的总线时钟?

答案

A)20000.0

B)2.0

提前致谢。

2 个答案:

答案 0 :(得分:6)

使用DMA传输数据有两种模式

1.Burst Mode

一旦DMA控制器被CPU授权访问系统总线,它就会在释放对系统总线的控制权之前传输数据块中的所有数据字节。 CPU被禁用以长时间使用内存总线。在整个数据块传输之前,它不会释放总线访问。

2.Cycle Stealing Mode

一旦DMA控制器被CPU授权访问系统总线,它就会传输一个字节的数据,然后释放对cpu的内存访问权限。再次为另一个传输字节,它必须通过BR和BG信号(BUS REQUEST和BUS GRANT)通过cpu获取总线访问。对于每个传输字节,它获取总线访问并释放它直到整个数据传输块。

在上面的例子中

时钟频率为20MHZ(hz为每秒周期数)。每秒20万个时钟周期。(20 x 10 ^ 6周期/秒)

对于传输的每个字节B / W IO接口和存储器需要8个时钟周期。有20 x 10 ^ 6个时钟周期。在周期窃取模式中,每转一个字节,它需要另外4个时钟周期来进行总线授权和释放访问。因此,要在IO接口和内存之间传输一个字节,需要12个时钟周期。这里有2/3的时钟周期用于数据传输,1/3的时钟周期用于总线访问。这里使用一个时钟周期来传输一位数据。 2/3的2百万个时钟周期用于传输数据,1/3的2千万个时钟周期用于总线访问。因此,13333.333 Kbits是传输的黑白IO接口和存储器。如果我们从13333 Kb /秒获得2%,那么它将是267 Kb /秒。此模式下的最大可实现数据速率为13333 Kb / s。

在突发模式下,一旦DMA获取总线,它将在整个传输后释放总线。使用20000×10 ^ 3个时钟周期传输20000 x 10 ^ 3位,即20000 kb / sec.4个时钟周期用于巴士访问。大约它将是20000 Kb / s

答案 1 :(得分:0)

要找到可达到的最大数据速率,您需要将位数除以进程的长度,以便: 每个数据项的位数/每个数据传输的时钟周期数*时钟频率* 1000

我坚持第二部分,所以如果你能找到答案,请分享:)