使用 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