DMA、周辺機器が相互に接続する方法とRAMに接続する方法

DMAユニットはすべてのタイプのハードウェアに搭載されており、周辺機器を相互に、およびメインメモリと通信するための基本的な要素のXNUMXつです。 IOMMUがアドレス指定の管理を担当している間、メモリからペリフェラルにデータを直接転送するのはDMAユニットです。 これらのユニットの仕組みとさまざまなタイプについて説明します。

DMA

ホームコンピューティングの初期には、DMAドライブは存在しなかったため、周辺機器が通信する必要があったとき RAM 彼らはXNUMXつの異なる方法でそうしました:

  • 一部のCPUにはHALTピンがあり、信号を受信すると、後で同じポイントで信号を回復するためにアクティビティを停止しました。
  • RAMへのアクセスがCPUと周辺機器の間に挟まれている場合がありました。

そのため、追加する必要がありました ダイレクトメモリアクセスコントローラまたはDMA 、データ送信時の作業を容易にするため。

DMAユニットの操作

ダイアグラムDMA

DMAユニットの動作は次のとおりです。

  1. メモリアドレスはソースで指定されています
  2. 送信するデータ量を指定します
  3. 宛先としてメモリアドレスが指定されています。
  4. データは、あるメモリから別のメモリに転送されます。

DMAドライブ 主に周辺機器にシステムRAMへのアクセスを提供するために使用されます されますが、 システムRAMからVRAMなどのさまざまな周辺機器のローカルRAMにデータを送信するためにも使用されます 。 これは、プロセッサがXNUMXつのメモリから別のメモリにデータを転送することなく実行できるため、他のタスクの実行に専念することができます。

コミュニケーションチャンネル

カナレス DMA

DMAコントローラーは いくつかの異なるチャネル 、これは 出発地と目的地が異なる複数の同時出荷が可能です 。 そのうえ、 DMAチャネルは、メモリにアクセスするためだけでなく、プロセッサをそのコプロセッサと直接通信するために使用されます。

AMD-スマートアクセスメモリ

例えば。 PCIExpressサイズ変更可能バー。 AMDのスマートアクセスメモリはベースであり、DMAユニットが通信することで可能になります。 CPU VRAMを直接使用します。

これは、同じボード上にXNUMXつのチップがある場合でも、XNUMXつの異なるカード上にある場合でも、デュアルグラフィックスカードの場合にも当てはまります。CrossfireはAMDのCrossfireインターフェイスと NVIDIA 相互に接続されたDMAユニットのままです。

DMAユニットの動作モード

DMAカミノ

DMAドライブは、次のいずれかの方法で機能し、両方またはXNUMXつすべてを同時に使用できることに注意してください。これは、データ転送用に設計されている方法によって異なります。

  • バーストモード: このモードでは、DMAユニットは、プロセッサによるメモリの使用を麻痺させる割り込みを送信します。この割り込みは、DMAユニットが転送を終了するまで一時停止したままになります。
  • サイクルスチールモード: 送信されるxバイトごとに、DMAドライブはプロセッサにメモリアクセスを返します。 前のケースとは異なり、プロセッサが長時間アイドル状態である必要はありません。
  • 透過モード: このモードでは、DMAユニットは、CPUがメモリへのアクセスを必要としない命令を実行した場合にのみデータを送信します。

それらはデータを送信するのに役立つだけではありません

RTXIOデコンプレッサー

DMAユニットが許可することのXNUMXつ 送信するデータの性質を変えることです たとえば、ソースで圧縮データを取得し、宛先で解凍して、メディア形式をデコードすることもできます。

DMAユニットが行うことは、データのブロックを送信元から宛先に送信することであるため、情報を操作するアクセラレータまたは固定機能ユニットを持つことができます。 。 これは、次のようなマルチメディアデータをデコードするときに非常に役立ちます。

  • JPEG、GIFなどの画像形式。 PNG。
  • MP3、OGGなどの音楽フォーマット。
  • あらゆる種類のビデオフォーマット。
  • Zlib、7zなどのファイル圧縮形式。

DMAユニットは内部通信も処理します

DMA SPM 一部のアクセラレーターとコプロセッサーは、システムのメモリーを使用せず、プロセッサー内にある独自のメモリーも、プロセッサー内にあるメモリーも使用しません。 、これらのユニット データの送受信を可能にするDMAインターフェイスが必要です 。 場合によっては、排他的に支援するプロセッサのメインDMAからチャネルが割り当てられます。

これは、スクラッチパッドRAMがある場合に特に使用されます 、これはプロセッサ内にあり、RAMとは異なるデータパスを持つRAMの一種です。 ほとんどのコプロセッサとアクセラレータには、ローカルで使用するためのスクラッチパッドメモリが割り当てられており、アクセスする唯一の方法は特定のDMAチャネルを介することです。