2011-12-22 9 views
1

私はDMA転送レートについて学習しようとしていますが、私はこの質問を理解できません。私は答えを持っていますが、そこに行く方法はわかりません。DMA転送データレート

この質問は、入力インターフェイスに到着するデータのメモリへの入力と格納、このメカニズムを使用して達成可能な達成可能なデータ転送速度、および特定のデータ転送速度に使用されるバス帯域幅(容量) 。 DMA転送ごとに実行されるクロックサイクルの実行と、バスの獲得と解放のためのクロックサイクルの詳細が表示されます。 DMAデバイスが入力インターフェイスとメモリの間で1つのデータ項目を転送するために必要なクロックサイクル数、システムバスを獲得して解放するクロックサイクル数、それぞれのサイズ(ビット単位)データ項目、およびクロック周波数を含む。

各データ転送用のクロックサイクル数8

クロックサイクル数バスを取得して解放するために4

データ項目あたりのビット数= 8

クロック周波数= 20MHzの

A)達成可能な最大データレートは何Kbpsですか?

B)データレートが267Kbits/secの場合、DMAデバイスが使用するバスクロックの割合はどれくらいですか?

は、予め

A)20000.0

B)2.0

おかげ回答します。

答えて

6

DMAコントローラがCPUによってシステムバスへのアクセスを許可されると、それはデータブロック内のデータのすべてのバイトを転送するDMA

1.Burstモードを

を使用してデータを転送するには、2つのモードがありますシステムバスの制御をCPUに戻すことができます。 CPUは長時間メモリバスを使用することはできません。転送されるデータブロック全体までバスアクセスを解放しません。モード

を盗む

2.Cycle DMAコントローラがCPUによってシステムバスへのアクセスを許可されると、それは1バイトのデータを転送し、それは、CPUへのメモリアクセスを解放します。転送のもう1バイト分は、BRとBG信号(バス要求とバス権)を介してCPUからのバスアクセスを獲得する必要があります。転送のすべてのバイトについては、バスアクセスを取得し、データ転送のブロック全体まで解放します。上記の例

クロック周波数の

は0.20百万クロックサイクル毎秒(ヘルツ毎秒サイクルである)20MHZである。(20×10^6サイクル/秒)の転送のすべてのバイトについて

B/W IOインターフェイスとメモリは8クロックサイクルを要します。サイクル・スチール・モードでは、1バイトの転送ごとに、Bus GrantとAccessを解放するためにさらに4クロック・サイクルを要します。したがって、1バイトをIOインターフェイスとメモリ間で転送するには、12クロックサイクルが必要です。ここでは、クロックサイクルの2/3がデータ転送に使用され、クロックサイクルの1/3がバスアクセスに使用されます。ここでは、1ビットのデータを転送するために1クロックサイクルが使用されます。 20万クロックサイクルのうち2/3がデータ転送に使用され、20万クロックサイクルのうち1/3がバスアクセスに使用されます。したがって、13333.333キロビットは転送された入出力インターフェイスおよびメモリです。 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

+0

素敵な答えを共有してくださいので、私は、第二部に非常に包括的なこだわっています! – portforwardpodcast

+1

これは良い答えでしたが、透明モードと同様に3番目のアクセスタイプが追加されています。このモードでは、CPUがシステムバスを使用しない操作を実行しているときだけDMAコントローラがデータを転送します。 – fazkan

0

達成可能な最大データレートを見つけるには、プロセスの長さでビット数を分割する必要があります。 各データ項目あたりのビット数/それぞれのクロックサイクル数データ転送*クロック周波数×1000

あなたは答えを見つけることができた場合は、:)

関連する問題