DMAについて

 

突然、非常に良いDMAがある、非常に良いコースを見つけ、次のように69は、DMAのリンクをそれを購入費やし:
https://time.geekbang.org/column/article/118657

注意:

個人的なソートは、一切責任は間違っていません。

 

0 CPU制御データ送信の概要

CPUによるデータ伝送制御、2があります。クエリは、中断します。

0.1クエリ

  周辺装置は、データ転送準備ができている場合、プログラムは、データ伝送、CPU周辺状況照会のために必要なCPU上で実行する場合、クエリは、プログラムによって制御されます。

0.2割り込み

  周辺ニーズがCPUとデータを交換するときに、周辺装置はCPUへの割り込み要求は、CPUは、現在のプログラムの実行、周辺機器に対応したデータ転送要求を割り込みアサートします。データ転送周辺機器の終了後、CPUは割り込まれたプログラムを継続します。

上記の二つの方法は、データが、CPUを介して制御後述するDMAデータ転送を通過する必要があります。

1.はじめにDMA

  DMAモード、ダイレクト・メモリ・アクセスは、また時々ダイレクトメモリ操作と呼ばれる、データ転送モードのセットと呼ばれます。データ転送時のDMAモードは、節約サイト、サイトの復旧作業など何もありません。

  CPUは、このようにCPU命令フェッチフェッチなどポンピング動作の数の必要性を排除する、転送動作に関与しないからです。メモリアドレスの変更、転送など、単語の数をカウントし、それがソフトウェアが、ハードウェア実装の直接ラインで実装されていません。我々は、高速DMAモードI / Oデバイスの要件を満たすことができ、CPUはまた、効率的なプレーを助長しています。(百度から参照)

 

2.作品

  ダイレクト・メモリ・アクセス(DMA)は、周辺機器とメモリ間、またはメモリとメモリとの間の高速データ転送を提供するために使用されます。CPUの介入がなければ、データは他の操作を行うためにCPUリソースを節約する、すぐにDMAによって移動することができます。

  デバイスは、データ転送を必要とする場合、デバイスは直接CPUにDMAによるバスDMA要求(DMAバス乗っ取り)を介して第一メモリを送信し、CPU要求信号が受信され、現在のクロックサイクルの終了後、優先CPUに応じてDMAを通知しますそして、順序は、それぞれのDMA要求によって要求されました。DAMに対応するCPU要求した後、バスの制御を行い、制御バスは、DMAを可能にします。DMA、メモリ、および周辺機器の交換データの管理の下で直接、CPUの介入なしに、CPUへのデータ転送、バスのDMA制御の終了後。

 

3. DMA転送特性

(Baiduの百科事典より)

  DMAは、すべての現代のコンピュータの重要な特徴である、それは異なる速度のハードウェアデバイスは、CPU割り込み負荷の多くに依存することなく通信することができます。そうでなければ、CPUは登録する各セグメントのソースからコピーし、新しい場所を記述するために再び戻ってそれらを配置する必要があります。このとき、他のタスクのためにCPUは、それを使用することはできません。

  メモリ領域へのDMA転送が動作自体は、DMAコントローラによって実装、完了に伝達され、CPUは、転送動作を初期化し、一つのデバイスから別にコピーされます。典型的な例は、より高速なメモリチップを行くためのモバイル外部メモリ・ブロックです。このような操作のように、プロセッサが遅延を動作させることはできませんが、他の作業に対処するために再スケジュールすることができます。高性能の組み込みシステムやネットワークのためのDMA転送アルゴリズムが重要です。

  チャネル7は、PCのCPUが利用させて前記たとえば、ISA DMAコントローラPC 8は、DMAチャネルを有しています。各DMAチャネルは16元アドレスレジスタとカウントレジスタ16元を持っています。ドライバアドレス設定手段とカウントが読み出しまたは書き込み、DMAチャネル、およびデータ転送の方向を登録すると、データの送信を初期化します。次に、送信動作がDMAハードウェアを起動するよう指示。変速機の端部は、デバイスが割り込みをCPUを介して通知される場合。

  しかし、DMA転送モードはCPUの負担を軽減、システムバスはまだ占有されています。特に大きなファイルを転送する場合、CPU使用率が10%未満であってもよいが、システムは、プログラムの一部が非常に遅くなる動作しているときにユーザが感じるだろう。その主な理由は、これらのアプリケーション(特に、いくつかの大規模なソフトウェア)を実行することです、オペレーティングシステムは、システム・バスから送られてくる大量のデータを必要とし、それは長い待ち時間を引き起こしました。

 

4.基本操作

  1. 周辺CPUによってDMACにDMA要求を送信

  2. CPU、バスのDMAゲインコントロールを対応するDMA要求

  3. メモリアドレスは、DMACにより送信され、送信データブロックの長さを決定します。

  4. DMA転送を実行します。

  5. DMA操作が完了し、バスの制御はCPUに返却されます。

バス制御権へ

他のプログラムがCPUの周辺機器を必要とするか、またはどのように行うために、いくつかの他の事をすればDMA制御バスは、データ転送のために、CPUは、この時点では、バスによって占有されていない場合は?これは、バスを使用する権利の問題を伴います。

5.1停止CPUアクセスメモリ

送信データのDMA周辺制御部を要求するとき、データの送信完全なセットは、その後、CPUがバスを引き継ぐまで、CPUは、バスの制御を放棄します。

長所:簡単な制御

短所:DMAメモリアクセスステージ、無駄なメモリ・サイクル、メモリ、メモリのサイクル時間は、一般にデバイス間隔を送信する2つ未満のIOデータであるためです。

5.2 サイクルスチール

(Baiduの百科事典より)

  I / OデバイスのDMA要求がない場合、CPUは、手順に従ってアクセスメモリを必要とI / Oデバイスは、I / Oデバイスまたは少数のメモリ・サイクルの転換により、DMA要求を有す​​ると。

二つの例は、I / OデバイスのDMA転送要求を発生することがあります。

  内側の(1)、CPUは、CPU等のアクセスは、乗算命令を実行している必要はありません。長い乗算命令実行時以来、その後I / Oアクセスは、アクセスCPU、即ち、CPUのI / Oデバイス転用12メモリ・サイクルは何の影響がプログラムを実行しないと矛盾しません。

  時間前にI / Oアクセスを必要とするので(2)アクセス要求内のI / Oデバイスは、また、これは、衝突を作成訪問、この場合の優先I / Oデバイスへのアクセスを訪問するCPUが必要I次のアクセス中/ Oデータは、アクセス要求の到着前に完了しなければなりません。明らかに、この場合、I / Oデバイス転用12回のメモリサイクルは、CPUがDMA要求に挿入されるCPUアクセスでの命令の実行中に、より具体的には、命令の実行を遅延させる、またはことを意味し、流用します二つのメモリ・サイクル。

  両方のI / O転送を達成するための方法を盗むCPU DMAアクセスおよびサイクルを停止させる方法と比較し、CPUとメモリのより良い効率を果たし、広く用いられている方法です。しかし、I / Oデバイスのそれぞれは、サイクルを持っている、バスの要求制御を盗むバスのプロセス制御を確立するために、バスの制御を戻し、それは期間占有するメモリワードを送信するが、DMAコントローラは、一般に2-5メモリ・サイクル(遅延ロジックに応じてあってもよいです)。したがって、この方法は、I / Oデバイスは、読み取り、書き込みサイクルの期間は、記憶メモリよりも大きいサイクルスチールの場合にも適用可能です。

5.3 DMAアクセスとCPUが交互にあり

  CPUの作業サイクルが長いメモリアクセスサイクル数以上である場合、この方法は、交互にCPUとDMA転送が最大効率を達成同時にイネーブルアクセスすることができます。1.2のデューティサイクル[ミューCPUを仮定し、メモリアクセスサイクルが0.6μs未満で、次にCPUサイクルは、2つのサブサイクルC1及びC2、具体的にアクセスするためのDMAコントローラ、CPU C2の前記C1訪問に分割することができます。

  このようにして、バスの使用権をC1とC2を時分割することにより行われる、バスの使用権を適用する必要があり、戻りプロセスを確立することはありません。CPUとDMAコントローラはそれぞれ、アドレスレジスタ、データレジスタおよび読出し/書込み制御レジスタ信号等に独自のアクセス権を持っています。DMAコントローラは、アクセス要求、アドレスを有する場合周期C1においては、データ信号がバス上に送信されても​​よいです。C2サイクルでは、CPUなどのアクセス要求を有し、アドレスおよびデータ信号を転送します。DMA転送が効率の面で非常に高いので、実際には、C1、C2は、マルチプレクサを制御することでバスのため、バスのこの変速制御は、少し時間を要します。

6.作業工程

前処理段階、データ転送、転送処理:DMA演算処理は、3つのステップから成ります。

6.1前処理段階

  試験装置状態、DMAコントローラのデバイス番号のアドレスレジスタ、及びイニシエータに送ら、メインメモリアドレスカウンタにアドレスデータを開始メインメモリに切り替えられるように、交換データワードカウンタに送信します番号。処理(出力)された場合に、外部機器(入力)または最後の受信データにデータを送信する準備ができて、DMAコントローラはDMA要求が、アプリケーションのメインメモリバスに発行される通知します。

6.2データ転送

  DMAデータ転送がブロック単位で送信(例えば、銀板)のための基本単位としての単一のバイト(またはワード)とすることができる、DMAバス占有のデータ入出力動作が循環することにより達成されます。このサイクルは、DMAコントローラによって(ないプログラムを実行するCPUによって)実装されていることを特別な必要性は、すなわち、データ転送フェーズは、DMA(ハードウェア)制御によって完成されます。

6.4治療

  DMAコントローラは、CPUに割り込み要求を送信し、メインメモリにテストデータが正しいかどうかを含めて、治療のDMAの終了を行うために、割り込みサービスルーチンを実行し、送信(診断手順にエラー)中のエラーのための試験及びDMAの使用を継続するかどうかを決定するためのCPU他のデータ・ブロックなどを送信します。

7.なぜDMA転送速度

  周辺機器とコンピュータのメモリとの間での情報交換は、クエリと割り込みによってプログラムすることができます。両方の方法は、CPUの制御、完了するための命令を実行することにより、CPUの下にあります。周辺メモリ→データ転送方向→CPU。どちらの方法でも、長い時間がかかることがあり、各バイトを送信する必要があります。繰り返しテスト状態にすると、プログラムクエリモード、CPU周辺機器周辺機器の準備ができていないときに、周辺には、データ転送の前に準備ができるまで、CPUは待機状態です。割り込みモードでは、データ転送を実現するために、各時間は、CPUが割り込みサービスルーチンに行われるべきで、保護を破る、サイト保護、サイトの復元、メインプログラムおよび他の操作に戻ります。明らかに、高速I / Oデバイスと(例えば、ソフト、ハード、等のような)アプリケーションのために大量のデータを交換し、両方の伝送モードは、速度要件を満たすことができません。伝送速度が遅すぎる場合、伝送効率を低下させるだけでなく、これらの高速周辺機器のために、それは、伝送エラーをもたらす、データの損失をもたらすであろう。この目的のために、我々は、DMA(Direct Memory Access)転送を提案しました。CPUの介入なしに、この伝送システムは、周辺機器とメモリ間のデータ転送を直接行います。DMAコントローラは、DMA転送中、CPUはDMA制御するシステムバスの制御を行う、専用のハードウェア(DMAC)を必要とする、DMA転送を実現します。DMAバスの制御の下で、CPUの介入を介さず直接メモリと周辺装置の間のデータ転送は、大幅にその伝送速度を向上、メモリの最も速いアクセス速度に近づけることができます。この伝送システムは、画像表示、ディスクアクセス、ディスク、高速データ収集システム間のデータ転送に適しています。

参考:

DMAの理解

Baiduの百科事典--DMA

 

 

 

 

 

 

 

 

 

 

 

 

おすすめ

転載: www.cnblogs.com/east1203/p/11520685.html