コンピュータアーキテクチャにおけるダイレクトメモリアクセス(DMA)

問題を排除するために楽器を試してください





コンピュータプログラムを実行するには、コンピュータの複数のコンポーネントの同期動作が必要です。例えば、 プロセッサー –必要な制御情報、アドレス…など、バスを提供する–情報とデータをメモリとの間でI / Oデバイスとの間で転送する…など。システムの興味深い要素は、プロセッサ、メモリ、およびI / Oデバイス間の情報の転送を処理する方法です。通常、プロセッサは、転送の開始から宛先でのデータの保存まで、データを転送するすべてのプロセスを制御します。これにより、プロセッサに負荷がかかり、ほとんどの場合、プロセッサは理想的な状態に保たれるため、システムの効率が低下します。 I / Oデバイスとメモリ間のデータ転送を高速化するために、DMAコントローラはステーションマスターとして機能します。 DMAコントローラは、プロセッサの介入を最小限に抑えてデータを転送します。

DMAコントローラーとは何ですか?

DMAという用語は、ダイレクトメモリアクセスを表します。ダイレクトメモリアクセスに使用されるハードウェアデバイスは、DMAコントローラーと呼ばれます。 DMA コントローラはコントロールユニットです 、I / Oデバイスの一部 インターフェース回路 、プロセッサからの介入を最小限に抑えて、I / Oデバイスとメインメモリ間でデータのブロックを転送できます。




コンピュータアーキテクチャのDMAコントローラ図

DMAコントローラは、バスと入出力デバイス間のインターフェイスを提供します。プロセッサの介入なしにデータを転送しますが、プロセッサによって制御されます。プロセッサは、開始アドレス、データブロック内のワード数、およびデータの転送方向を送信することにより、DMAコントローラを開始します。 I / OデバイスからメモリへまたはメインメモリからI / Oデバイスへ。 DMAコントローラーには複数の外部デバイスを接続できます。

コンピュータアーキテクチャのDMA

コンピュータアーキテクチャのDMA



DMAコントローラには、アドレスを生成し、転送するI / Oデバイスを選択するためのアドレスユニットが含まれています。また、転送されたブロック数のカウントを保持し、データの転送方向を示すための制御ユニットとデータカウントも含まれています。転送が完了すると、DMAは割り込みを発生させてプロセッサに通知します。 DMAコントローラの一般的なブロック図を次の図に示します。

DMAコントローラーの典型的なブロック図

DMAコントローラーの典型的なブロック図

DMAコントローラーの動作

DMAコントローラは、データ転送を行うためにバスをプロセッサと共有する必要があります。ある時点でバスを保持するデバイスは、バスマスターと呼ばれます。 I / Oデバイスからメモリへの転送、またはその逆の転送を行う必要がある場合、プロセッサは現在のプログラムの実行を停止し、インクリメントします。 プログラム カウンタは、スタックを介してデータを移動し、DMA選択信号をアドレスバスを介してDMAコントローラに送信します。

DMAコントローラが空いている場合は、バス要求信号を上げることにより、プロセッサにバスの制御を要求します。プロセッサはバス許可信号を上げることによってバスをコントローラーに許可します。これでDMAコントローラーがバスマスターになります。プロセッサは、メモリアドレス、転送されるデータのブロック数、およびデータ転送の方向を送信することにより、DMAコントローラを開始します。データ転送タスクをDMAコントローラに割り当てた後、理想的にはデータ転送が完了するまで待つのではなく、プロセッサはスタックから命令を取得した後、プログラムの実行を再開します。


DMAによるコンピュータでのDMAによるデータの転送

DMAコントローラーによるコンピューター内のデータの転送

DMAコントローラはバスを完全に制御できるようになり、CPUとは独立してメモリおよびI / Oデバイスと直接対話できます。プロセッサが受信した制御命令に従ってデータ転送を行います。データ転送の完了後、バス要求信号を無効にし、CPUはバス許可信号を無効にして、バスの制御をCPUに移します。

I / Oデバイスが転送を開始する場合、DMA要求信号をDMAコントローラに送信します。この信号に対して、コントローラは空きがあるかどうかを確認します。次に、コントローラはプロセッサにバスを要求し、バス要求信号を上げます。バス許可信号を受信した後、デバイスからデータを転送します。 nチャネルのDMAコントローラの場合、n個の外部デバイスを接続できます。

DMAは、次の3つのモードでデータを転送します。

に) バーストモード :このモードでは、DMAは、データ転送全体の完了後にのみバスをCPUにハンドオーバーします。一方、CPUがバスを必要とする場合、CPUは理想的な状態を保ち、データ転送を待つ必要があります。

b) サイクルスチールモード :このモードでは、DMAはすべてのバイトの転送後にCPUにバスの制御を与えます。バス制御の要求を継続的に発行し、1バイトを転送して、バスを返します。これにより、CPUは、優先度の高いタスクのためにバスが必要な場合でも、長時間待つ必要がありません。

c) 透過モード: ここで、DMAは、CPUがバスの使用を必要としない命令を実行している場合にのみデータを転送します。

8237DMAコントローラー

  • 8237には4つのI / Oチャネルがあり、チャネル数を増やす柔軟性があります。
  • 各チャネルは個別にプログラムでき、64kのアドレスとデータ機能を備えています。
  • タイミング制御ブロック、プログラムコマンド制御ブロック、プライオリティエンコーダブロックは、8237Aの3つの主要なブロックです。
  • 内部タイミング信号と外部制御信号は、タイミング制御ブロックによって駆動されます。
  • マイクロプロセッサからDMAに与えられたさまざまなコマンドは、プログラムコマンド制御ブロックによってデコードされます。
  • どのチャネルに最高の優先順位を与える必要があるかは、優先順位によって決定されます エンコーダブロック
    8237Aには27個の内部レジスタがあります。

8237Aは、理想的なサイクルとアクティブなサイクルの2つのサイクルで動作します。各サイクルには、それぞれ1つのクロック周期で構成される7つの個別の状態が含まれます。

S0-コントローラーがバスを要求し、プロセッサーからの確認応答を待機している最初の状態。

S1、S2、S3、S4は、実際のデータ転送が行われる8237Aの動作状態と呼ばれます。転送待機状態にさらに時間が必要な場合は、これらの状態の間にSWが追加されます。

メモリからメモリへの転送では、メモリからの読み取りとメモリへの書き込みの転送を行う必要があります。 1回の転送には8つの状態が必要です。下付き文字S11、S12、S13、S14を持つ最初の4つの状態はメモリからの読み取り転送を実行し、次の4つのS21、S22、S23、S24はメモリへの書き込み転送用です。

DMAは、サービスを要求しているチャネルがなく、SI状態を実行しているときに理想的な状態になります。 SIは、DMAが要求を受信するまで非アクティブである非アクティブ状態です。この状態では、DMAはプロセッサがDMAをプログラムできるプログラム状態にあります。

DMAが理想的な状態にあり、それ以上チャネル要求を受け取らない場合、DMAはHRQ信号をプロセッサに出力し、アクティブ状態に入ります。アクティブ状態では、バーストモード、サイクルスチールモード、または透過モードのいずれかでデータの転送を開始できます。

8237ピン図

8237ピンダイアグラム

8257DMAコントローラー

単一のIntel8212 I / Oポートデバイスとペアリングすると、8257DMAコントローラーは完全な4チャネルを形成します DMAコントローラー 。転送要求を受信すると、8257コントローラー-

  • プロセッサからシステムバスの制御を取得します。
  • 最も優先度の高いチャネルに接続されているペリフェラルが確認されます。
  • メモリアドレスの最下位ビットは、システムバスのアドレスラインA0〜A7上を移動します。
  • 最も重要な 8ビット メモリアドレスの一部は、データラインを介して8212 I / Oポートに駆動されます。
  • 周辺機器とアドレス指定されたメモリ位置の間でデータを転送するための適切な制御信号を生成します。
  • 指定されたバイト数が転送されると、コントローラーは端末カウント(TC)出力をアクティブにしてCPUに転送の終了を通知します。

各チャネルについて、8257には2つ含まれています 16ビットレジスタ – 1)DMAアドレスレジスタおよび2)ターミナルカウントレジスタ。チャネルを有効にする前に初期化する必要があります。アクセスされる最初のメモリ位置のアドレスは、DMAアドレスレジスタにロードされます。ターミナルカウントレジスタにロードされた値の下位14ビットは、ターミナルカウント出力がアクティブになる前のDMAサイクル数から1を引いた数を示します。チャネルの動作タイプは、ターミナルカウントレジスタの最上位2ビットで示されます。

8257ピンダイアグラム

8257ピンダイアグラム

DMAコントローラーの長所と短所

DMAコントローラの長所と短所は次のとおりです。

利点

  • DMAは、CPUの関与をバイパスすることにより、メモリ操作を高速化します。
  • CPUの作業過負荷が減少します。
  • 転送ごとに、必要なクロックサイクル数はわずかです。

短所

  • DMAをデータ転送に使用すると、キャッシュコヒーレンスの問題が発生する可能性があります。
  • システムの価格を上げます。

DMA(DMA( ダイレクトメモリアクセス )コントローラは、グラフィックカード、ネットワークカード、サウンドカードなどで使用されています。DMAは、マルチコアプロセッサのチップ内転送にも使用されます。 DMAは、3つのモードのいずれかで動作するため、プロセッサの負荷を大幅に軽減できます。 DMAのどのモードで作業しましたか?あなたが考えるモードのどれがより効果的ですか?