2017-01-28 4 views
1

デバイスのDMAコントローラがメモリ操作を行っているときにCPUが処理/実行できる操作の種類は、並行処理のレベルを上げるためですか? CPUキャッシュ/レジスタが空である場合や、別の命令が進行中のDMAをインターリーブせずに取り出すことができる方法をDMAとCPUの並行処理について

Thxをそれは一般的な、大きなハードウェア上で、CPUはしばらく多かれ少なかれ何かを行うことができます

+0

特定のアーキテクチャを念頭に置いていますか?すべてのCPUとDMAが等しいわけではありません。あまりにも広すぎるかもしれない。 –

答えて

1

DMAが進行中です。一般に、OSの制御下で、実行中のプロセスやカーネルタスクを正常に実行するだけです。

について:[?]

... [A] ND CPUキャッシュ/レジスタが空である場合、どのように別の指示が 進捗にDMAをインターリーブすることなく取り出すことができる

Asを私はそれを理解している、CPUがメモリにアクセスする必要がある場合に何が起こるかを尋ねている。一般に、CPUは通常、「レジスタまたはキャッシュが空である」ときだけでなく、DMAが進行中のときには、このアクティビティを多かれ少なかれ通常通り進めることができます()。メモリバスは、複数のDMA対応デバイス、PCIカード、複数のコアまたは複数のCPUを含むいくつかのデバイスで既に一般的に共有されています。 memory controllerは、これらすべての質問を受け入れ、実行する責任があります。これには、その間の調停が含まれます。

したがって、DMAとCPUの両方がメモリにアクセスすると、2つのコア(または同じコアで実行される2つの論理スレッド)でもメモリにアクセスする場合と同様に、「インターリーブ」が発生する可能性があります。どのように実際に動作するかは、DRAMの構成、メモリコントローラの動作方法(存在する数)、その他多くの詳細によって異なりますが、一般的に、近代的なメモリシステムの並列性は高くなります。 RAMに課せられた帯域幅制限にアクセスし、しばしば近づいています。


かなりの組み込みマイクロコントローラよりも大きなものを意味し、これらの日。たとえば、モバイルCPUも対象となります。

は通常ことで、私は通常のメカニズムが使用され、あなたが仕事へのメモリアクセスを期待することができますが、そのパフォーマンスが影響されることはありませんではない意味します。 CPUによるメモリアクセスは、DMAアクセス(他のCPU、ビデオカードなどのPCIデバイスなど)と競合する可能性がありますが、それはおそらく遅くなりますが、合理的なハードウェアでは、 DMAが終了します!

+1

DMAとCPUのメモリアクセスはインターリーブ/管理されますが、それは顕著な効果を引き起こします。十分に書かれたアルゴリズムは、メモリバス帯域幅を完全に飽和させることができ、「I/Oバウンド」です。 DMAが発生した場合、アルゴリズムは遅くなります。なぜなら、DMA転送は同じバスを介して行わなければならないからです!私はこれが起こった、かなり誇りに思った! – bazza

+1

詳細情報をありがとう。私はその「共有」のことを本当に認識していませんでした。メモリコントローラは、本当にクレイジーなことをしているに違いない。そして、@bazza、あなたはそのdiffをテストすることができるその時点に到達することも難しい必要があります。おめでとう! – zgulser

+1

@bazza - 間違いなく!私はそうでないことを暗示するつもりはなかった。基本的にDRAMとDramへのパスは共有リソースであり、そのリソースのDMA使用は無料ではありません。それはDMAが通常バスなどをロックしないので、メモリへのアクセスはまだ可能です。 *大部分のアルゴリズムはメモリ帯域幅に敏感ではなく、レイテンシに敏感であり、一般的には良いコントローラは並行した要求を合理的な方法で満たします。 – BeeOnRope

関連する問題