GNU/Linux >> Znalost Linux >  >> Linux

Jaký je rozdíl mezi DMA-Engine a DMA-Controller?

DMA - Přímý přístup do paměti. Provoz vašeho ovladače, který čte nebo zapisuje z/do vaší HW paměti, aniž by do toho byl zapojen CPU (uvolňuje jej k provádění jiných věcí).

DMA Controller - čtení a zápis nelze provést kouzlem. pokud to CPU nedělá, potřebujeme na to jiný HW. Před mnoha lety (v době ISA/EISA) bylo běžné používat sdílený HW na základní desce, která tuto operaci dělala. V posledních letech má každý HW svůj vlastní HW mechanismus DMA. Ale ve všech případech tento konkrétní HW získá zdrojovou adresu a cílovou adresu a předá data. Po dokončení se obvykle spustí přerušení.

DMA Engine - Tady si nejsem jistý, co máte na mysli. Domnívám se, že pravděpodobně odkazujete na stranu SW, která zpracovává DMA. DMA je o něco složitější než obvyklé I\O, protože všechny paměti SRC a DST musí být fyzicky přítomny po celou dobu operace DMA. Pokud je adresa DST prohozena na disk, HW zapíše na špatnou adresu a systém se zhroutí. Tento a další aspekty DMA jsou řešeny ovladačem pomocí částí kódu, které pravděpodobně nazýváte "DMA Engine"

*Další výklad toho, co je 'DMA Engine', může být kódová část Firmware (nebo HW), která na HW straně obsluhuje HW řadič DMA.


Podle tohoto dokumentu http://www.asprom.com/application/intel_3.pdf:

Řadiče 82C37 DMA by se neměly zaměňovat s motory DMA nalezenými v některých dřívějších součástech MCH (Memory ControllerHub). Tyto řadiče DMA jsou vázány na sběrnici ISA/LPC a používají se většinou pro přenosy do/z pomalých zařízení, jako jsou řadiče disket.

Zdá se tedy, že jde o zařízení nalezené na předchozích platformách, které používaly zařízení MCH.


Linux
  1. Rozdíl mezi [[ $a ==Z* ]] a [ $a ==Z* ]?

  2. Jaký je rozdíl mezi ls a l?

  3. Jaký je rozdíl mezi $(CC) a $CC?

  1. Jaký je rozdíl mezi InnoDB a MyISAM?

  2. Jaký je rozdíl mezi Git Switch a Checkout?

  3. Jaký je rozdíl mezi trasou a ip trasou?

  1. Jaký je rozdíl mezi Redhat a centOS?

  2. Jaký je rozdíl mezi insmod a modprobe

  3. Jaký je rozdíl mezi strtok_r a strtok_s v C?