我正在尝试学习DMA传输速率,但我不理解这个问题。我有答案,但不知道怎么去那里。
此问题涉及使用DMA处理到达输入接口的数据在存储器中的输入和存储,使用此机制可实现的数据速率,以及用于特定数据速率的总线带宽(容量)。您可以详细了解每次DMA传输的时钟周期的执行情况,以及获取和释放总线的时钟周期。下面给出了: DMA设备在输入接口和存储器之间传输单个数据项所需的时钟周期数、获取和释放系统总线的时钟周期数、每个数据项的大小(以位为单位)以及时钟频率。
每次数据传输的时钟周期数8
获取和释放总线的时钟周期数4
每个数据项的位数=8
时钟频率=20
A)以千比特/秒为单位的最大可实现数据速率是多少?
B)如果数据速率为267Kbits/sec,DMA设备使用的总线时钟百分比是多少?
答案
A)20000.0
B)2.0
提前谢谢。
发布于 2012-12-14 17:30:19
使用DMA传输数据有两种模式
1.突发模式
一旦CPU授予DMA控制器对系统总线的访问权限,它就会在释放对系统总线的控制回到CPU之前传输数据块中的所有字节数据。CPU被禁止使用内存总线很长时间,time.it不会释放总线访问,直到整个数据块传输。
2.周期窃取模式
一旦CPU允许DMA控制器访问系统总线,它就传输一个字节的数据,然后释放对cpu的存储器访问。同样,对于另一个字节的传输,它必须通过BR和BG信号(总线请求和总线授权)获得由中央处理器进行的总线访问。.For每个字节的传输,它获取总线访问并释放它,直到整个数据块被传输。
在上面的例子中
时钟频率为20 per (hz表示每秒的周期数).20每秒百万个时钟周期。(20 x 10^6周期/second )
对于每一个字节的传输,B/W IO接口和存储器需要8个时钟周期。每传输一个字节就有20 x 10^6个时钟Cycles.In周期窃取模式,它必须另外占用4个时钟周期才能进行总线授权和释放访问。因此,要在IO接口和存储器之间传输一个字节,需要12个时钟周期。这里,2/3的时钟周期用于数据传输,1/3的时钟周期用于总线访问。这里,一个时钟周期用于传输一位数据。2000万个时钟周期中的2/3用于传输数据,而2000万个时钟周期中的1/3用于总线Access.So,13333.333 Kbit被I/W接口和存储器传输。如果我们从13333 Kb/秒中减去2%,大约是267KB/秒。此模式下可实现的最大数据速率为13333 Kb/s。
在突发模式下,一旦DMA获得总线,它将在整个传输后释放总线。20000 x 10^3个时钟周期用于传输20000 x 10^3位,即20000 kb/s。4个时钟周期用于总线访问。大约为20000 Kb/s
发布于 2013-12-25 17:19:13
要找到最大可达到的数据速率,您需要将位数除以进程的长度,这样:每个数据项的位数/每次数据传输的时钟周期数*时钟频率* 1000
我被第二部分卡住了,所以如果你设法找到了答案,请分享:)
https://stackoverflow.com/questions/8605765
复制相似问题