3.2 KiB
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 siználem DACK (DMA Acknowledge)
- čtení/zápis dat z/do paměti se řídí obvyklmi 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
- datový registr IO řadiče je plný
- IO řadič generuje DRQ
- DMA řadič generuje BREQ
- procesor dokončí probíhající sběrnicový cyklus a odpojí se od sběrnice
- aktivuje BUSACK
- DMA řadič aktivuje DACK a na sběrnici vysílá adresu a povel k zápisu
- IO řadič vysílá na datovou sběrnici obsah datového registru
- IO řadič zruší DRQ
- 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
- CPU zruší BUSACK
- CPU se připojí ke sběrnici
- 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
- čtení ze zdroje dat do interního datového registru
- 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
- 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
- DMA drží obsazenou sběrnici po celou dobu přenosu (burst mode)
- procesor blokován po celou dobu přenosu, nejrychlejší DMA přenos
- DMA uvolňuje sběrnici po každém přenosu (cycle stealing)
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