1

DMA 転送速度について調べようとしていますが、この質問がわかりません。答えはありますが、そこにたどり着く方法がわかりません。

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

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

バスを取得および解放するためのクロック サイクル数 4

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

クロック周波数 = 20MHz

A) 達成可能な最大データ レートは何キロビット/秒ですか?

B) データ転送速度が 267K ビット/秒の場合、バス クロックの何パーセントが DMA デバイスによって使用されますか?

回答

A)20000.0

B)2.0

前もって感謝します。

4

2 に答える 2

6

DMA を使用したデータ転送には 2 つのモードがあります。

1.バーストモード

DMA コントローラは、CPU からシステム バスへのアクセスを許可されると、システム バスの制御を解放して CPU に戻す前に、データ ブロック内のデータのすべてのバイトを転送します。CPU は長時間メモリ バスを使用できなくなります。データのブロック全体が転送されるまで、バス アクセスは解放されません。

2.サイクル盗用モード

DMA コントローラが CPU によってシステム バスへのアクセスを許可されると、1 バイトのデータが転送され、メモリ アクセスが cpu に解放されます。転送の別のバイトでは、BR および BG 信号 (BUS REQUEST および BUS GRANT) を介して CPU によるバス アクセスを取得する必要があります。

上記の例では

クロック周波数は 20MHZ (hz は 1 秒あたりのサイクル数) です。1 秒あたり 2000 万クロック サイクルです。

転送 B/W IO インターフェイスとメモリの各バイトには、8 クロック サイクルかかります。20 x 10^6 クロック サイクルがあります。サイクル スティーリング モードでは、1 バイトの転送ごとに、For Bus Grant とリリース アクセスにさらに 4 クロック サイクルかかる必要があります。したがって、IO インターフェイスとメモリ間で 1 バイトを転送するには、12 クロック サイクルが必要です。ここでは、クロック サイクルの 2/3 がデータ転送に使用され、クロック サイクルの 1/3 がバス アクセスに使用されます。ここでは、1 ビットのデータを転送するために 1 クロック サイクルが使用されます。2000 万クロック サイクルの 2/3 がデータの転送に使用され、2000 万クロック サイクルの 1/3 がバス アクセスに使用されます。約 13333 Kb/秒から 2% を取ると、267 Kb/秒になります。このモードで達成可能な最大データ レートは 13333 Kb/s です。

バースト モードでは、一度 DMA がバスを取得すると、転送全体の後にバスを解放します。およそ 20000 Kb/s になります

于 2012-12-14T09:30:18.597 に答える