From ca4cf3a179b35793c8c88616e7b1678509c27f76 Mon Sep 17 00:00:00 2001 From: Filip Znachor Date: Sat, 10 Jun 2023 22:37:34 +0200 Subject: [PATCH] =?UTF-8?q?P=C5=99id=C3=A1n=C3=AD=20pozn=C3=A1mek=20z=20PO?= =?UTF-8?q?T=20k=20=C5=99adi=C4=8Di=20DMA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- KIV POT/13. Řadič DMA.md | 68 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 KIV POT/13. Řadič DMA.md diff --git a/KIV POT/13. Řadič DMA.md b/KIV POT/13. Řadič DMA.md new file mode 100644 index 0000000..f6559cb --- /dev/null +++ b/KIV POT/13. Řadič DMA.md @@ -0,0 +1,68 @@ +# Ří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** +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 \ No newline at end of file