1

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

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

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

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

每个数据项的位数 = 8

时钟频率 = 20MHz

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

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

答案

A)20000.0

B)2.0

提前致谢。

4

2 回答 2

6

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

1.突发模式

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

2.循环窃取模式

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

在上面的例子中

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

对于传输 B/W IO 接口和内存的每个字节,需要 8 个时钟周期。有 20 x 10^6 时钟周期。在周期窃取模式下,对于每一个传输字节,它必须再花费 4 个时钟周期才能进行总线授予和释放访问。因此,要在 IO 接口和内存之间传输一个字节,需要 12 个时钟周期。这里 2/3 的时钟周期用于数据传输,1/3 的时钟周期用于总线访问。这里一个时钟周期用于传输一位数据。2000 万个时钟周期中的 2/3 用于传输数据,2000 万个时钟周期中的 1/3 用于总线访问。因此,13333.333 Kbits 用于传输 b/w IO 接口和内存。如果我们从 13333 Kb/sec 中提取 2%,则大约为 267 Kb/sec。此模式下可实现的最大数据速率为 13333 Kb/s。

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

于 2012-12-14T09:30:18.597 回答
0

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

我被困在第二部分所以如果你设法找到答案,请分享:)

于 2013-12-25T09:19:12.943 回答