# 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)