FAV-ZCU/KIV POT/13. Řadič DMA.md

3.2 KiB

Řízení IO přenosů řadičem DMA

Koncepce DMA

  • při vstupu nebo výstupu dat se opakují jednoduché činnosti
  • jednotlivé kroky je možné realizovat speciálním HW
  • CPU - řadič DMA - řadič IO

Průběh DMA přenosu

  • IO řadič indikuje požadavek na přenos dat signálem DRQ (Data Request)
  • DMA řadič žádá CPU o uvolnění sběrnice signálem BREQ (Bus Request)
  • CPU indikuje uvolnění sběrnice signálem BUSACK (Bus Acknowledge)
  • DMA řadič požaduje přenos dat do/z IO signálem DACK (DMA Acknowledge)
  • čtení/zápis dat z/do paměti se řídí obvyklými signály na sběrnici
  • po přenesení celého bloku může DMA řadič generovat přerušení
    • indikaci konce přenosu

Přenos DMA

  1. datový registr IO řadiče je plný
  2. IO řadič generuje DRQ
  3. DMA řadič generuje BREQ
  4. procesor dokončí probíhající sběrnicový cyklus a odpojí se od sběrnice
    • aktivuje BUSACK
  5. DMA řadič aktivuje DACK a na sběrnici vysílá adresu a povel k zápisu
  6. IO řadič vysílá na datovou sběrnici obsah datového registru
  7. IO řadič zruší DRQ
  8. DMA řadič zruší BREQ a DACK a přestane vysílat adresu a povel k zápisu
    • registr adresy se inkrementuje, registr délky se dekrementuje
  9. CPU zruší BUSACK
  10. CPU se připojí ke sběrnici
  11. po přenesení celého bloku generuje DMA řadič přerušení

DMA řadič se dvěma cykly

  • jednodušší návrh IO řadiče
  • univerzální použití (přenosy paměť -> paměť)
  • funkce
    1. čtení ze zdroje dat do interního datového registru
    2. zápis dat z interního datového registru do cíle

Charakteristika DMA přenosu

  • velmi rychlý přenos dat (nejrychlejší způsob přenosu)
  • vhodný pro blokové přenosy
  • vyžaduje speciální HW prostředky
  • komplikovaný provoz na sběrnici

Sdílení sběrnice

  • dva způsoby sdílení sběrnice mezi CPU a DMA
    1. DMA uvolňuje sběrnici po každém přenosu (cycle stealing)
      • procesor není trvale blokován, pomalejší přiřazení DMA řadiči
    2. DMA drží obsazenou sběrnici po celou dobu přenosu (burst mode)
      • procesor blokován po celou dobu přenosu, nejrychlejší DMA přenos

Připojení mastera

  • adresní a datové vodiče a signály /RD a /HWR připojeny na sdílenou sbernici pomocí třístavových budičů
    • ty jsou v aktivním nebo HiZ stavu (= master čeká na stav sběrnice WAIT)

Decentralizovaný arbiter

  • každý master ovládá jeden arbitrační vodič, současně sleduje aktivitu ostatních vodičů a porovnává prioritu aktivních vodičů se svou prioritou

„Bus Fairness“: vítězný master si pamatuje, že zablokoval přístup na sběrnici jinému masteru (s nižší prioritou) a příště mu dá ve stejné situaci přednost

Složitější architektura

  • každý procesor může používat nezávislou lokální sběrnici a lokální paměť
  • pro sdílená data je určena sdílená paměť přístupná všem procesorům
  • adresní prostor systému s lokální a sdílenou pamětí
    • obě paměti ve stejném adresním prostoru
    • každá z pamětí pokrývá jiný rozsah adres
    • při adresování sdílené paměti žádá adaptér bus-bus o přístup na sdílenou sběrnici