diff --git a/KIV POT/07. Sběrnice.md b/KIV POT/07. Sběrnice.md new file mode 100644 index 0000000..1a1c6b9 --- /dev/null +++ b/KIV POT/07. Sběrnice.md @@ -0,0 +1,130 @@ +# Sběrnice + +**Sběrnicová architektura** +- jednotlivé subsystémy počítače jsou propojeny sběrnicí, po které se přenaší data oběma směry +- single master - jeden procesor na sběrnici +- multi master - více procesorů (nebo DMA řadičů) na sběrnici + +### Typy sběrnic + +- proprietární / univerzální +- nemultiplexované / multiplexované +- synchronní / asynchronní +- paralelní / sériové +- single master / multi master + +**Univerzální sběrnice** +- sběrnice procesoru H8S je používána jen pro tento typ procesoru (je proprietární) +- jiné procesory mají též jiné sběrnice +- univerzální sběrnice (PCI, VME, AGP, PC104, ...) + - jsou navrženy bez závislosti na konkrétním typu procesoru + - pro připojení procesoru, pamětí a periferních obvodů jsou obvykle potřeba doplňkové obvody (glue logic) + +**Nemultiplexovaná sběrnice** +- má samostatné vodiče pro adresu a data +- přenos adresy z CPU a dat z/do CPU může probíhat současně +- vyžaduje velký počet signálů na sběrnici, přenos je rychlejší + +**Multiplexovaná sběrnice** +- společné vodiče pro adresu i data +- adresa a data se přenáší postupně +- vyžaduje menší počet vodičů, přenos je pomalejší + +**Asynchronní sběrnice** +- komunikace s pamětí probíhá způsobem dotaz - odpověď + - po aktivaci požadavku (/RD) čeká CPU na odpověď (/Ready) + - po dokončení přenosu zručí procesor /RD, paměť zruší /Ready +- několikanásobná výměna signálů zpomaluje komunikaci + +**Synchronní sběrnice** +- vysílání adresy, příkazu a přečtení dat se provede při určené hraně CLK +- lze dosáhnout vysoké přenosové rychlosti + +**Sběrnice na principu pipeline** +- při přenosu dat se přenáší současně i adresa pro následující čtení/zápis +- používaná u rychlých procesorů a pamětí (synchronní statická RAM) +- např. datové kanály mezi CPU a pamětí cache + +**Sběrnice s blokovým přenosem** +- do paměti se přenáší jen adresa prvního slova z celého bloku +- paměť přečte paralelně celý blok (typicky 2, 4 nebo 8 slov) +- jednotlivá slova se přenáší postupně po datové sběrnici + - Dual Data Rate - přenáší se při obou hranách CLK + +**Paralelní vs. sériová sběrnice** +- při velké přenosové rychlosti je oblížné dodržet stejné zpoždění všech adresních nebo datových vodičů +- rozptyl zpoždění jednotlivých vodičů (skew) má za následek nesprávné čtení ++ rychlé sériové rozhraní má pro každý směr přenosu jen 1 signál + - obvykle z elektrických důvodů je to 1 pár vodičů – kroucená dvoulinka ++ přijímač si sám generuje hodinový signál pro čtení + - hodinový signál je průběžně synchronizován podle přijímaných dat ++ data jsou kódována speciálním přenosovým kódem ++ modulační rychlost je řádově 1 GHz ++ např. PCI Express + +**Master/Slave** +- zařízení na sběrnici má typ master nebo slave + - **master** - může iniciovat jednotlivé přenosy (např. CPU, DMA řadič) + - **slave** - pouze reaguje na požadavky mastera (např. paměť) +- jednoduché sběrnice povolují pouze jednoho mastera (single master) +- na **multi master** sběrnici může být více masterů + - v každém okamžiku sběrnici využívá jen jeden + - před zahájením přenosového cyklu proběhne arbitrace - arbiter přidelí sběrnici vybranému masteru, po ukončení se zase přiřadí jinému + - při intenzivní komunikaci může dojít k přetížení sběrnice + +### Procesor H8S + +**Charakteristiky** +- CLK max. 25 MHz +- řada specializovaných periferií +- 24bitová adresní sběrnice (A23-A0) +- 8/16bitová datová sběrnice (D15-D0) +- A23-A20 dekódovány na /CS0-/CS7 +- další signály: /HWR, /LWR, /RD, WAIT + +**Důležité signály** +- **CLK** - hodinový signál +- **A23-A0** - adresní sběrnice +- **D15-D0** - datová sběrnice +- **/HWR**, **/LWR** - zápisové signály +- **/RD** - čtecí signál +- **/WAIT** - prodloužení MC +- **/IRQn**, **/NMI** - přerušovací signály +- **/BREQ**, **/BACK**, **/BREQ0** - uvolnění sběrnice +- **/RES** - reset procesoru + +**Fyzická adresa** +- logická je 32bitová (data) nebo 24bitová (instrukce) +- fyzická adresa je 24bitová +- 8 nejvyšších bitů se ignoruje + +**Signály /CS0-/CS7** +- procesor interně dekóduje adresní vodiče A21, A22, A23 +- dekóder generuje signály /CS0-/CS7 +- adresní prostor 10 MB je rozdělen na 8 bloků po 2 MB - každému bloku přísluší jeden /CSx + +**Čtecí a zápisový cyklus sběrnice** +- 2 nebo 3 takty CLK +- 8 nebo 16 bitů +- aktivní jeden z /CS0-/CS7 + +**Vložení čekacích taktů** +- je-li aktivní /WAIT, vkládá procesor čekací takty +- při klesající hraně CLK se testuje stav vstupu /WAIT +- čekajících taktů může vložit libovolný počet +- může to mít další důsledky + +**Instrukce `ADD.W R1, R0`** +- kód instrukce je dlouhý 16 bytů +- při provádění ADD.W se čte kód další instrukce +- při 8bitové sběrnici vyžaduje každý MC pro čtení/zápis word dva přístupy do paměti (6 taktů CLK) + +**Instrukce `MOV.W R1, @adresa`** +- kód je dlouhý celkem 6 bytů +- před zápisem operandu 1 MC „příprava EA“ (čte se další instrukce) +- provedení = zápis word do paměti +- při 8bitové sběrnici vyžaduje každý MC pro čtení/zápis word dva přístupy do paměti + +**Instrukce `DIVXS R1, ER0`** +- cykly E1-E19 nevyžadují přístup do paměti (trvají jen 1 takt CLK) +