MAGISTRALE
==========

U nastavku sledi kratak podsetnik sa predavanja. Za vise informacija
student treba da konsultuje literaturu (Dandamudi, strane 147-165,
Tanenbaum, strane 176-187, Hamacher, strane 228-259).

MAGISTRALA je skup linija koje povezuju dva ili vise uredjaja. Preko
magistrale se prenose podaci i/ili instrukcije izmedju dva uredjaja.
Tipicno, magistrala ima sledeci izgled:

                     MAGISTRALA
  <----------------------------------------------------------->
     |            |           |                   |
   __|___       __|___      __|___              __|___
  |      |     |      |    |      |            |      | 
  |  U1  |     |  U2  |    |  U3  |   .....    |  Un  |
  |______|     |______|    |______|            |______|

Dakle, svi uredjaji se povezuju na isti komunikacioni kanal. Vrednost
koju neki od uredjaja propusti na svoj izlaz se prenosi preko
magistrale do ostalih uradjaja. Kako ne bi doslo do kolizije signala,
uslov je da u svakom trenutku najvise jedan uredjaj svoju vrednost
pusta na magistralu. Ovo se postize upotrebom bafera sa tri stanja na
izlazima uredjaja.

Pod TRANSAKCIJOM na magistrali podrazumevamo bilo koju zaokruzenu
aktivnost na magistrali. Svaka transakcija moze ukljucivati jednu ili
vise OPERACIJA na magistrali (citanje, pisanje, ...). U svakom
trenutku se putem magistrale moze obavljati najvise jedna
transakcija. U svakoj transakciji ucestvuju dva uredjaja: jedan koji
inicira transakciju (aktivni uredjaj, engl. master) i jedan koji
odgovara na zahtev (pasivni uredjaj, engl. slave). Tipican aktivni
uredjaj je procesor, dok je tipican pasivni uredjaj
memorija. Komunikacija izmedju uredjaja pri svakoj transakciji
regulisana je skupom pravila koja nazivamo PROTOKOL MAGISTRALE.

Magistrale mogu biti UNUTRASNJE i SPOLJASNJE. Unutrasnje povezuju
procesor sa razlicitim uredjajima unutar procesorskog sistema
(unutrasnje memorije, U/I kontroleri, i sl.), dok spoljasnje
obezbedjuju povezivanje procesorskog sistema sa spoljasnjim uredjajima
(poput stampaca, skenera, spoljasnjih memorija, i sl.).

NAPOMENA: U novije vreme, gore opisana topologija magistrale je u
najvecoj meri napustena. Umesto toga, svaka dva uredjaja se povezuju
direktnom vezom koja sluzi samo za komunikaciju izmedju ta dva
uredjaja (point-to-point veze). Otuda se mnogi koncepti koje navodimo
u nastavku (pre svega kada je u pitanju arbitraza magistrale, vidi
dole) mogu smatrati zastarelim i navodimo ih pre svega iz istorijskih
razloga. Svi takvi sadrzaji bice u nastavku teksta oznaceni sa
[ZASTARELO].


*) SERIJSKE I PARALELNE MAGISTRALE

Prema nacinu transfera, magistrale se dele na SERIJSKE i PARALELNE
magistrale. Serijske megistrale se sastoje iz jedne linije preko koje
se podaci prenose bit po bit. Paralelne se sastoje iz vise linija
preko kojih se podaci prenose rec po rec. 

Iako su u ranijem periodu dominirale paralelne magistrale koje su u
vecini slucajeva bile visestruko brze od serijskih (sto deluje logicno
na prvi pogled), danas se sve vise koriste serijske magistrale koje su
jednostavnije i jeftinije za implementaciju, a u mnogim situacijama
omogucavaju i znatno vece brzine prenosa od paralelnih. Naime, postoje
dva osnovna problema koja se javljaju pri daljem povecavanju brzine
prenosa kod paralelnih magistrala:

 -) Prilikom prenosenja reci, ne stizu svi bitovi na odrediste u isto
    vreme (pojava poznata kao i ISKRIVLJENOST, engl. skew). Ovo je
    zato sto nisu sve linije iz kojih se sastoji paralelna magistrala
    identicne duzine i provodljivosti. Ove vremenske razlike su veoma
    male, ali pri velikim frekvencijama prenosa dolaze do izrazaja i
    otezavaju prijemnom uredjaju da ispravno ocita vrednosti sa
    magistrale.
    
 -) Pri velikim frekvencijama prenosa dolazi do veoma brzog
    smenjivanja jedinica i nula (tj. naponskih nivoa) na linijama
    magistrale. Ovo dovodi do elektromagnetne indukcije, sto dovodi do
    toga da signali sa razlicitih paralelnih linija uticu jedni na
    druge (pojava poznata i kao INTERFERENCIJA). Ovo moze dovesti do
    promene vrednosti prenetih bitova ili nemogucnosti da se isti
    ocitaju pravilno.

Sa druge strane, kod serijskih magistrala takvih problema nema, pa je
kod njih moguce visestruko povecavati frekvenciju prenosa (broj
transfera u sekundi), sto ih u praksi cini brzim od paralelnih
magistrala.

Dodatno, serijske magistrale mogu biti i dvosmerne (engl. full-duplex)
a ne samo jednosmerne (engl. half-duplex). Kod dvosmernih imamo dve
linije, od kojih se jedna koristi za prenos u jednom smeru, a druga za
prenos u drugom smeru. Na taj nacin se podaci mogu istovremeno
prenositi u oba smera. Sa druge strane, paralelne magistrale su po
pravilu jednosmerne, jer bi realizacija dvosmerne paralelne
komunikacije bila preskupa.

Zbog svega ovoga, danas se na razlicitim nivoima racunarskog sistema
umesto ranijih paralelnih (PCI, PATA, eksterni paralelni port) koriste
serijske magistrale (PCI-EXPRESS, SATA, USB, ...). Izuzetak je
MEMORIJSKA MAGISTRALA koja povezuje procesor sa operativnom memorijom
koja je i dalje paralelna (razdvojena) magistrala.

NAPOMENA: Serijske magistrale po pravilu podrazumevaju point-to-point
veze izmedju uredjaja, tj. po pravilu nemaju zaista topologiju
magistrale. Termin "magistrala" se i ovde koristi po inerciji, iako
nije bas sasvim adekvatan. Takodje, jedina preostala paralelna
magistrala -- memorijska magistrala -- takodje povezuje samo dva
uredjaja: procesor i memoriju, pa bi i ona pre mogla da se nazove
"paralelnom point-to-point vezom" nego magistralom.


PARALELNE MAGISTRALE
====================

*) VRSTE PARALELNIH MAGISTRALA [ZASTARELO]

Paralelne magistrale mogu biti:

  -- MULTIPLEKSIRANE (ENGL. MULTIPLEXED): iste linije se koriste i za
     adrese i za podatke (npr. PCI magistrala je bila takva) tako sto
     se adrese i podaci prenose u razlictim ciklusima.
	 
  -- RAZDVOJENE (ENGL. DEDICATED): odvojene linije se koriste za
     adrese, podatke i kontrolne signale (tzv. MAGISTRALA PODATAKA,
     ADRESNA MAGISTRALA i KONTROLNA MAGISTRALA). Ovo je tipicno za
     memorijsku magistralu koja povezuje procesor sa glavnom
     memorijom.

Prednost multipleksiranih magistrala u odnosu na razdvojene je u
jeftinijoj implementaciji (jer je potrebno manje linija), a mana je u
manjoj brzini prenosa (jer se uvecava broj ciklusa potrebnih za
obavljanje transakcije).


*) SIRINA PARALELNE MAGISTRALE

   -- Broj bitova adresne magistrale odredjuje velicinu adresibilnog
      prostora (npr. 32-bitna adresna magistrala moze da adresira 2^32
      bajtova, tj. 4GB; moderni Intel-ovi i AMD-ovi procesori koriste
      i do 48 adresnih linija, sto omogucava adresiranje 256TB fizicke
      memorije).
      
   -- Broj bitova magistrale podataka odredjuje velicinu podatka koji
      se moze preneti u jednom transferu (moderni Intel-ovi procesori
      imaju 64-bitnu magistralu podataka).
      
*) VRSTE TRANSAKCIJA NA PARALELNOJ MAGISTRALI

   -- CITANJE: podrazumeva citanje jedne reci iz memorije.
   
   -- UPIS: podrazumeva upis jedne reci u memoriju.
   
   -- CITANJE BLOKA PODATAKA: podrazumeva citanje vise uzastopnih reci
      iz memorije. Na primer, kod Intel-ovih procesora koristi se
      64-bitna magistrala podataka. Citanje bloka podrazumeva citanje
      4 susedne 64-bitne reci (32 susedna bajta) iz memorije. Ova
      operacija zahteva vise ciklusa.  Medjutim, obicno je brze
      procitati vise susednih reci u jednoj blok operaciji nego u vise
      uzastopnih operacija pojedinacnog citanja. Razlog se sastoji u
      kasnjenju memorije (engl. memory latency) -- kada procesor
      kontaktira memoriju, potrebno je najpre neko vreme da memorija
      odgovori na njegov zahtev, tj. da se zapocne sa transferom
      podataka.  Obicno je ovo kasnjenje znatno vece od vremena
      transfera, pa je zato efikasnije da se pri istoj transakciji
      prenese vise podataka, nego da se svi ti podaci prenose u
      posebnim transakcijama.

   -- DMA PRISTUP: podrazumeva direktan pristup memoriji (engl. Direct
      Memory Access). Kada je potrebno procitati vecu kolicinu
      podataka iz nekog ulaznog uredjaja, tada procesor to obicno
      prepusta posebnom kontroleru direktnog pristupa (engl. DMA
      controller) koji igra ulogu mastera u takvoj transakciji. On
      kontaktira ulazni uredjaj, kao i memoriju i upravlja transferom
      podataka iz ulaznog uredjaja u memoriju preko magistrale.
   
   -- READ-MODIFY-WRITE: Ovaj tip operacije omogucava atomicko citanje
      i upis nekog podatka u memoriju. Iako ova operacija objedinjuje
      citanje i pisanje, tokom njenog trajanja nije moguce da neko
      drugi pristupi magistrali. Na taj nacin se obezbedjuje
      atomicnost.  Ova operacija se obicno koristi prilikom
      implementacije operativnih sistema za realizaciju ekskluzivnog
      pristupa.
   
*) SINHRONIZACIJA MAGISTRALE

  -) SINHRONE MAGISTRALE: Komunikacija je sinhronizovana casovnikom
     (tj. magistrala ima sopstveni radni takt koji je obicno
     prilagodjen najsporijem uredjaju koji treba da komunicira preko
     magistrale). Prilikom komunikacije, svi koraci koji cine jednu
     transakciju se obavljaju na odgovarajucim rubovima casovnika
     magistrale, te se na taj nacin ostvaruje implicitna
     sinhronizacija uredjaja koji komuniciraju. Primer konkretnog
     protokola jedne sinhrone magistrale dat je dole u ovom tekstu.
	  
  -) ASINHRONE MAGISTRALE: Komunikacija se sinhronizuje pomocu
     "cetvorofaznog rukovanja" (four-phase handshake) ili nekog
     slicnog protokola za eksplicitnu sinhronizaciju. Ne postoji
     casovnik vec uredjaji reaguju odmah na pristigle signale za
     sinhronizaciju i odgovaraju na njih. Iako potencijalno brze,
     u praksi se ove magistrale teze implementiraju tako da rade
     pouzdano. Otuda su magistrale u praksi obicno sinhrone.


*) ARBITRAZA MAGISTRALE [ZASTARELO]

  -- Ako postoji vise mastera koji zele da u isto vreme koriste
     magistralu, potrebno je odrediti kojim ce redosledom da je
     koriste (jer se u svakom trenutku najvise jedna transakcija moze
     obavljati preko magistrale).

  -- Arbitraza podrazumeva razresavanje konflikata pri istovremenim
     zahtevima za pristup magistrali. Arbitraza se obicno obavlja
     dinamicki, tj. magistrala se uredjaju dodeljuje na zahtev. Dakle,
     master uredjaj salje signal za zahtev (engl. request), a
     odgovarajuci sistem za arbitrazu mu vraca signal dozvole
     (engl. grant). Tek kada dobije grant signal, moze pristupiti
     magistrali. Arbitraza moze biti:

     -- CENTRALIZOVANA: postoji posebno kolo za arbitrazu (ARBITAR
        MAGISTRALE) koje u slucaju vise simultanih zahteva odredjuje
        kome ce magistrala biti dodeljena, u skladu sa nekom
        politikom.

     -- DISTRIBUIRANA: ne postoji posaban arbitar, vec se masteri sami
        dogovaraju o redosledu (tako sto izmedju njih postoje
        odgovarajuce komunikacione linije, a unutar njih odgovarajuca
        logika koja donosi odluke).

  -- POLITIKE DODELE MAGISTRALE:

     Mogu se podeliti u dve grupe:

     -) Politike fiksiranih prioriteta: svaki master uredjaj ima
        fiksirani prioritet i u skladu sa tim fiksiranim prioritetima
        se odredjuje koji ce uredjaj dobiti magistralu.

     -) Politike rotirajucih prioriteta: u ovom slucaju prioriteti
        nisu fiksirani, vec se dinamicki menjaju. Ovim se izbegava
        "izgladnjivanje" uredjaja koje moze da nastupi u slucaju
        fiksiranih prioriteta, kada uredjaj sa visokim prioritetom
        stalno zahteva pristup magistrali.  Jedna varijanta je da se
        prioritet uredjaja uvecava srazmerno vremenu koje je proveo u
        cekanju na magistralu. Time se garantuje da ce u nekom
        trenutku njegov prioritet postati dovoljno visok da dobije
        magistralu. Druga varijanta ove politike je tzv. kruzna
        politika (round-robin), kod koje se uredjaju koji je upravo
        koristio magistralu dodeljuje najmanji moguci prioritet, cime
        se efektivno stavlja na kraj reda (ovim se postize
        dodeljivanje magistrale masterima u krug).

     Jedan od zahteva koji se postavlja je da politika bude fer,
     tj. da omoguci da svi uredjaji koji zahtevaju magistralu na kraju
     i dobiju pristup magistrali, tj. da nema izgladnjivanja. Politika
     rotirajucih prioriteta to jeste, dok politika fiksiranih
     prioriteta to nije.  Postoje i druge fer politike koje nisu
     zasnovane na prioritetima.  Na primer, moze se definisati
     maksimalno vreme koje sme da prodje od trenutka postavljanja
     zahteva za pristup magistrali do trenutka kada uredjaj dobije
     pristup magistrali. U tom slucaju, garantovano je da ce svaki
     uredjaj koji zahteva magistralu dobiti pristup u nekom fiksiranom
     unapred definisanom roku.

     U praksi se cesto koriste hibridne politike koje kombinuju
     prioritete kao i tehnike za postizanje ravnopravnosti
     (tj. sprecavanje izgladnjivanja).

     Napomenimo da, nasuprot logici, procesor cesto ima nizak
     prioritet u odnosu na druge uredjaje u sistemu. Ovo je zbog toga
     sto neki drugi uredjaji (poput ulazno izlaznih uredjaja) cesto
     imaju hitnu potrebu da pristupe magistrali (npr. pristigli su
     neki podaci od korisnika koji ce se izgubiti ukoliko se odmah ne
     prebace u memoriju). Sa druge strane, procesor uvek moze da
     zapamti gde je stao, pa da kasnije nastavi sa svojim radom.

  -- POLITIKE OSLOBADJANJA MAGISTRALE:

     Dele se u dve grupe:

     -) politike bez preuzimanja (non-preemptive): ove politike
     podrazumevaju da kada neki uredjaj dobije pristup magistrali,
     tada mu taj pristup ne moze biti oduzet dok on sam dobrovoljno ne
     oslobodi magistralu. Jedna varijanta je da uredjaj automatski
     oslobadja magistralu po zavrsetku transakcije. Drugi pristup je
     da uredjaj oslobadja magistralu po zavrsetku transakcije jedino u
     slucaju da postoji zahtev nekog drugog uredjaja za pristup
     magistrali. Ovaj pristup se koristi kada neki uredjaj dominantno
     koristi magistralu (npr. procesor) dok ostali uredjaji tek
     povremeno zahtevaju pristup magistrali.  Tada nema smisla stalno
     oslobadjati i ponovo zahtevati pristup magistrali od strane istog
     uredjaja.

     -) politike sa preuzimanjem (preemptive): ove politike
     podrazumevaju da se uredjaju moze prekinuti transakcija i oduzeti
     magistrala u slucaju da neki drugi uredjaj viseg prioriteta
     zahteva pristup magistrali. Ovo je korisno u slucaju veoma dugih
     transakcija koje mogu dovesti da drugi uredjaji ne mogu dobiti
     magistralu kada im je hitno potrebna.

  -- IMPLEMENTACIJA ARBITRAZE:

     Bez obzira na to da li je arbitraza centralizovana ili
     distribuirana, mozemo razlikovati sledece varijante
     implementacije:

     -) JEDINSTVENI SIGNALI ZA ZAHTEV I DODELU MAGISTRALE: Signal za
     zahtev se formira kao disjunkcija signala za zahtev pojedinacnih
     uredjaja (tj. bice 1 akko bar jedan od njih trazi pristup
     magistrali). Sa druge strane, signal za dodelu magistrale
     (tzv. grant signal) se prosledjuje od jednog do drugog
     uredjaja. Ako neki uredjaj nije poslao signal za zahtev, on ce
     prosto proslediti grant signal sledecem uredjaju u nizu. Sa druge
     strane, ako je taj uredjaj zahtevao pristup magistrali, on nece
     dalje prosledjivati grant signal, vec ce pristupiti
     magistrali. Ova jednostavna implementacija se obicno naziva
     ULANCAVANJE (engl. daisy-chaining). Jednostavna je za
     implemantaciju, ali obezbedjuje fiksni prioritet (uredjaji koji
     su na pocetku lanca imaju visi prioritet u odnosu na one koji
     slede iza).

     -) NEZAVISNI SIGNALI ZA ZAHTEV I DODELU MAGISTRALE: Svaki uredjaj
     salje poseban signal za zahtev koji se prosledjuje arbitru (u
     slucaju centralizovane arbitraze) odnosno svim drugim uredjajima
     (u slucaju distribuirane arbitraze). Takodje, svaki uredjaj ima
     sopstveni grant signal. Ovaj pristup omogucava implementaciju
     slozenijih politika dodela magistrale. Problem je u slozenijoj
     implementaciji.

     -) HIBRIDNI PRISTUP: kompromis izmedju gornja dva. Uredjaji se
     dele u grupe. Svaka grupa ima svoj jedinstven signal za zahtev
     kao i grant signal. Uredjaji u svakoj grupi se povezuju
     ulancavanjem.

*) PRIMER PROTOKOLA SINHRONE PARALELNE MAGISTRALE

  -) Pretpostavimo da imamo sinhronu paralelnu razdvojenu magistralu
     sa 32-bitnom magistralom podataka i 32-bitnom adresnom
     magistralom. Magistrala omogucava dve vrste transakcija: citanje
     i upis pojedinacne 32-bitne reci. Arbitraza magistrale je
     centralizovana sa nezavisnim zahtevima [nije precizirana politika
     dodeljivanja, jer je to ostavljeno arbitru]. Politika
     oslobadjanja je bez preuzimanja, zasnovana na transakcijama.

  -) Postoje sledeci kontrolni signali:

     *) bus_request: ovaj signal master uredjaj (u nasem primeru
     	procesor) salje kolu za arbitrazu magistrale, zahtevajuci
     	pristup magistrali. Podrazumevano je 0 (nema zahteva za
     	magistralom), a postavlja se na 1 kada zelimo da dobijemo
     	pristup magistrali. Ovaj signal se po protokolu postavlja na
     	uzlaznoj ivici casovnika. Iskljucuje se kada master dobije
    	pristup magistrali (tj. kada stigne bus_grant signal).

     *) bus_grant: ovaj signal kolo za arbitrazu magistrale salje
        master uredjaju, kako bi ga obavestio da mu je dodeljena
        magistrala. Podrazumevano je 0, a dobija vrednost 1 kada je
        magistrala dodeljena procesoru. Kolo za arbitrazu ne sme
        dodeliti magistralu drugom uredjaju dokle god je transakcija u
        toku (sto se vidi na osnovu bus_in_use signala). Dakle, u
        pitanju je politika oslobadjanja magistrale bez preuzimanja
        (non-preemptive), pri cemu master oslobadja magistralu cim
        zavrsi transakciju. bus_grant signal se ukljucuje na silaznoj
        ivici casovnika, a iskljucuje se na sledecoj silaznoj ivici (u
        tom trenutku je transakcija vec zapocela).

     *) bus_in_use: ovaj signal master postavlja na magistralu da bi
        ostalim uredjajima (i arbitru) naznacio da je zapoceo
        transakciju. Ovaj signal ostaje ukljucen dokle god se ne
        zavrsi transakcija. Ukljucuje se na uzlaznoj ivici casovnika
        (na prvoj sledecoj uzlaznoj ivici nakon sto arbitar ukljuci
        bus_grant signal). [negde se ovaj signal zove bus_busy].

     *) bus_command: ovaj signal master salje slave-u da naznaci da li
     	je u pitanju operacija citanja ili pisanja (0 za citanje, 1 za
     	pisanje). Podrazumevano ima vrednost z. Ukljucuje se kad i
     	bus_in_use signal, na uzlaznoj ivici casovnika i ukljucen je
     	dokle god traje transakcija. [u slucaju da magistrala podrzava
     	vise tipova transakcija, umesto jednog bus_command signala
     	bismo imali vise signala cijom kombinacijom bismo odredili
     	zeljenu operaciju.]

     *) bus_wait: ovaj signal slave salje masteru preko magistrale
        ukoliko nije u stanju da izvrsi trazenu operaciju na prvoj
        sledecoj silaznoj ivici nakon zapocetka transakcije (sto je
        podrazumevano ponasanje). bus_wait = 1 znaci da se mora cekati
        jos jedan ciklus (ubacivanjem stanja cekanja u konacni automat
        mastera) da bi se tek na sledecoj silaznoj ivici ponovo
        proverio status bus_wait signala. bus_wait = 0 znaci da je
        operacija uspesno izvrsena i da mozemo da zavrsimo
        transakciju. [negde se ovaj signal zove i ready, i ukljucuje
        se kada je operacija zavrsena.].

  -) Adresne linije se postavljaju od strane mastera nakon dobijanja
     pristupa magistrali od strane arbitraze na prvoj sledecoj
     uzlaznoj ivici casovnika (u isto vreme kad i bus_in_use i
     bus_command signali). U slucaju operacije pisanja, podatak se
     postavlja od strane mastera u istom trenutku. U slucaju citanja,
     podatak se na magistralu podataka postavlja od strane pasivnog
     uredjaja na prvoj sledecoj silaznoj ivici nakon sto master
     postavi adresu i komandu (osim u slucaju da pasivni uredjaj nije
     u mogucnosti tako brzo da odgovori, u kom slucaju se ukljucuje
     bus_wait signal, a postavljanje podatka se odlaze za neku sledecu
     uzlaznu ivicu casovnika).

     U nastavku slede detaljni dijagrami signala za operacije citanja
     i pisanja. Oznaka "zzzz" znaci da je u pitanju vrednost visoke
     impedanse (iskljucena zica), dok oznaka "----" znaci "neka
     proizvoljna visebitna vrednost". Oznaka "____" znaci vrednost 0,
          ______
     dok "      " oznacava vrednost 1. Prva i poslednja linija u
     dijagramu oznacavaju stanja konacnih automata aktivnog i
     pasivnog uredjaja u toku realizacije odgovarajuce transakcije.
     

DIAGRAM SIGNALA ZA OPERACIJU CITANJA:

MASTER:    Start  GrantWait  Command   End
                 T1        T2        T3        T4        T5
                  ____      ____      ____      ____      ____
 clk:          __|    |____|    |____|    |____|    |____|    |_

                  _________
bus_request:   __|         |___________________________________
      
                       _________
bus_grant:     _______|         |______________________________
                            _________
bus_in_use:    ____________|         |_________________________

bus_command:   zzzzzzzzzzzzz_________zzzzzzzzzzzzzzzzzzzzzzzzzz

addr:          zzzzzzzzzzzzz---------zzzzzzzzzzzzzzzzzzzzzzzzzz

data:          zzzzzzzzzzzzzzzzzz---------zzzzzzzzzzzzzzzzzzzzz
                                      
bus_wait:      ________________________________________________

SLAVE:                      Idle   Done    Idle


DIAGRAM SIGNALA ZA OPERACIJU CITANJA SA STANJEM CEKANJA:

MASTER:    Start  GrantWait  Command    Wait   End
                 T1        T2        T3        T4        T5
                  ____      ____      ____      ____      ____
 clk:          __|    |____|    |____|    |____|    |____|    |

                  _________
bus_request:   __|         |___________________________________
      
                       _________
bus_grant:     _______|         |______________________________
                            ___________________
bus_in_use:    ____________|                   |_______________

bus_command:   zzzzzzzzzzzzz___________________zzzzzzzzzzzzzzzz

addr:          zzzzzzzzzzzzz-------------------zzzzzzzzzzzzzzzz

data:          zzzzzzzzzzzzzzzzzzzzzzzzzzzz---------zzzzzzzzzzz
                                 _________
bus_wait:      _________________|         |____________________

SLAVE:                      Idle   Work     Done      Idle



DIAGRAM SIGNALA ZA OPERACIJU PISANJA:

MASTER:    Start  GrantWait  Command    End
                 T1        T2        T3        T4        T5
                  ____      ____      ____      ____      ____
 clk:          __|    |____|    |____|    |____|    |____|    |

                  _________
bus_request:   __|         |___________________________________
      
                       _________
bus_grant:     _______|         |______________________________
                            _________
bus_in_use:    ____________|         |_________________________
                            _________
bus_command:   zzzzzzzzzzzzz         zzzzzzzzzzzzzzzzzzzzzzzzzz

addr:          zzzzzzzzzzzzz---------zzzzzzzzzzzzzzzzzzzzzzzzzz

data:          zzzzzzzzzzzzz---------zzzzzzzzzzzzzzzzzzzzzzzzzz
                
bus_wait:      ________________________________________________

SLAVE:                      Idle   Done     Idle



DIAGRAM SIGNALA ZA OPERACIJU PISANJA SA STANJEM CEKANJA:

MASTER:    Start  GrantWait Command   Wait   End
                 T1        T2        T3        T4        T5
                  ____      ____      ____      ____      ____
 clk:          __|    |____|    |____|    |____|    |____|    |

                  _________
bus_request:   __|         |___________________________________
      
                       _________
bus_grant:     _______|         |______________________________
                            ___________________
bus_in_use:    ____________|                   |_______________
                            ___________________
bus_command:   zzzzzzzzzzzzz                   zzzzzzzzzzzzzzzz

addr:          zzzzzzzzzzzzz-------------------zzzzzzzzzzzzzzzz

data:          zzzzzzzzzzzzz-------------------zzzzzzzzzzzzzzzz
                                 _________
bus_wait:      _________________|         |____________________

SLAVE:                      Idle     Work   Done     Idle


NAPOMENA: U slucaju da magistrala podrzava i operaciju citanja/pisanja
bloka od npr. 4 podatka, tada bismo imali jos jedan kontrolni signal
koji bismo zvali npr. "burst" koji bi bio 0 podrazumevano, a bio bi
postavljan na 1 (u kombinaciji sa bus_command = 0/1) kada zelimo da
vrsimo citanje/pisanje bloka podataka. U tom slucaju bi prilikom
citanja pasivni uredjaj u cetiri uzastopna ciklusa (cetiri uzastopne
silazne ivice pocev od ciklusa T2) slao sledeci podatak, a na
odgovarajucim uzlaznim ivicama koje slede bi master prihvatao poslate
podatke. Slicno vazi za upis, s tim sto bi sada master na uzlaznim
ivicama (pocev od T2) postavljao sledeci podatak, a na silaznim bi
pasivni uredjaj prihvatao poslate podatke. Student za vezbu moze
da nacrta dijagrame signala u tim slucajevima. 


SERIJSKE MAGISTRALE
===================

Serijske magistrale se u velikoj meri razlikuju od paralelnih
magistrala, s obzirom da se kod njih sve informacije (komande, adrese
i podaci) salju preko jedne komunikacione linije, bit po bit. U ovom
odeljku se ukratko upoznajemo sa nekim aspektima serijske
komunikacije.

-) ELEKTRICNE KARAKTERISTIKE SERIJSKIH SIGNALA

Uobicajeno je da se logicka vrednost 1 predstavlja pozitivnim naponom
(npr. +5V), a da se logicka vrednost 0 predstavlja naponom 0V. Ovaj
napon se racuna relativno u odnosu na masu (koja se obicno oznacava sa
GND, od ground). Stoga je za prenosenje bitova preko serijske
magistrale, teorijski, potrebna samo jedna zica preko koje se prenosi
odgovarajuci potencijal [pod pretpostavkom da su oba subjekta koja
komuniciraju povezani na istu masu; u slucaju udaljenih uredjaja to
obicno nije slucaj, pa zato postoji i druga zica koja predstavlja GND,
kako bi oba uredjaja racunala potencijal u odnosu na istu masu].
Medjutim, ovakav nacin prenosenja signala je dosta podlozan smetnjama,
s obzirom da ocitavanje ispravne vrednosti zavisi od potencijala jedne
zice koji se moze promeniti usled elektromagnetnih uticaja okoline.
Da bi se uticaj smetnji smanjio, cesto se koristi drugacija tehnika
prenosa: umesto jedne zice za prenos se koristi par zica (oznacimo ih
sa D+ i D-). Logicka jedinica se kodira tako sto se na D+ dovede
pozitivan napon (npr. +5V), a na D- se dovede negativan napon
(npr. -5V). Logicka nula se kodira obrnuto: na D+ se dovede -5V a na
D- se dovede +5V. Dakle, vrednosti se kodiraju odgovarajucom razlikom
potencijala izmedju dve zice (koja je pozitivna za logicku jedinicu a
negativna za logicku nulu), a ne potencijalom jedne zice u odnosu na
masu. Ova tehnika je poznata i kao DIFERENCIJALNO SIGNALIZIRANJE.  Ova
tehnika je siroko prihvacena kod serijskih magistrala (koriste je sve
aktuelne serijske magistrale). Sa druge strane, realizacija ovakvog
pristupa kod paralelnih magistrala bi bila preskupa, jer bismo time
duplirali i onako veliki broj zica koje cine magistralu. Koriscenje
ove tehnike kod serijskih magistrala omogucava pouzdan prenos na veoma
visokim frekvencijama.

-) DVOSMERNA I JEDNOSMERNA KOMUNIKACIJA

Za razliku od paralelnih magistrala kod kojih nije moguce istovremeno
slati i primati podatke (kazemo i da su jednosmerne, ili half-duplex),
kod serijskih magistrala je izvodljivo obezbediti i dvosmernu
komunijaciju (full-duplex). Ovo se ostvaruje tako sto umesto jednog
para zica imamo dva para zica, po jedan par za svaki smer
komunikacije. Ovako nesto znacajno povecava brzinu protoka, s obzirom
da vecina protokola magistrale podrazumeva da subjekti razmenjuju
poruke prilikom komunikacije koje idu u oba smera. Vecina savremenih
brzih serijskih magistrala podrzavaju dvosmernu komunikaciju
(PCI-EXPRESS, QPI, DMI).  Kod paralelnih magistrala ovako nesto bi
bilo preskupo, jer bi dupliralo i onako preveliki broj linija.

-) KODIRANJE PODATAKA KOD SERIJSKIH MAGISTRALA

Serijske magistrale najcesce podrazumevaju sinhroni prenos. Ovo znaci
da postoji casovnik u odnosu na koji se sinhronizuje slanje bitova
preko serijske linije (npr. na svakoj uzlaznoj ivici casovnika po
jedan bit). Ukoliko su subjekti koji komuniciraju povezani na isti
casovnik, tada je sinhronizaciju magistrale relativno jednostavno
izvesti. U slucaju da imamo dva udaljena uredjaja koji komuniciraju
putem serijske magistrale (npr. kada racunar i stampac komuniciraju
putem USB interfejsa), tada oni nisu povezani na isti casovnik, pa je
potrebno obezbediti sinhronizaciju njihovih casovnika. Cak i kada su
subjekti koji komuniciraju povezani na isti casovnik, pri veoma
visokim frekvencijama je veoma tesko obezbediti da signal casovnika
dolazi istovremeno do oba uredjaja (pojava poznata i kao ISKRIVLJENOST
CASOVNIKA, engl. clock skew), pa je ponovo potrebno obezbediti
sinhronizaciju signala casovnika subjekata koji komuniciraju.  Ovo se
obezbedjuje tako sto se sam niz bitova koji se prenosi kodira tako da
u sebi sadrzi informacije koje omogucavaju sinhronizaciju casovnika. U
osnovi, postoje dva nacina kodiranja niza bitova koji se prenosi:

  -) povratak na nulu (return-to-zero, RZ): podsetimo se da se logicka
  jedinica kodira pozitivnim naponom izmedju para zica, a logicka
  jedinica negativnim naponom. Kod RZ kodiranja, nakon svakog prenetog
  bita se napon izmedju zica na neko vreme vraca na nulu pre nego sto
  se zapocne slanje sledeceg bita. Ovi periodi "odmora" omogucavaju
  sinhronizaciju, jer prijemni uredjaj moze jasno da vidi u kom
  trenutku zapocinje prenos bita, a u kom se zavrsava. Medjutim,
  ovakav nacin kodiranja produzava duzinu ciklusa i samim tim
  ogranicava frekvenciju prenosa.

  -) bez povratka na nulu (non-return-to-zero NRZ): izmedju prenosa
  bitova nema "odmora", tj. napon se ne vraca na nulu, vec se odmah
  zapocinje sa prenosom sledeceg bita. Ovim se omogucavaju vece
  frekvencije i samim tim vece brzine prenosa. Medjutim, problem
  nastaje kod sinhronizacije: ukoliko imamo dugacak niz istih bitova
  koje prenosimo, nece biti nikakve promene napona u duzem vremenskom
  periodu, pa prijemni uredjaj moze da izgubi sinhronizaciju sa
  casovnikom predajnika.

Opisani problem kod NRZ kodiranja se resava tako sto se ulazni niz
bitova modifikuje tako da se obezbedi da se promene vrednosti signala
desavaju dovoljno cesto, kako bi prijemni uredjaj mogao da "uhvati
ritam" casovnika predajnika. Neki od nacina da se to postigne su:

  -) NRZI kodiranje (non-return-to-zero-inverted): umesto da se
  logicka nula kodira negativnim naponom, a logicka jedinica
  pozitivnim naponom, primenjujemo drugaciji pristup: logicku jedinicu
  kodiramo tako sto zadrzavamo isti naponski nivo signala, a logicku
  nulu kodiramo tako sto invertujemo naponski nivo signala. Na primer:

  ORIGINALNI NIZ BITOVA:     001101101110001111100001100000001
  KODIRANI NIZ BITOVA:       100011100001011111101011101010100

  Prvi niz bitova je originalni sadrzaj koji zelimo da prenesemo preko
  komunikacionog kanala. Umesto da prenosimo njega, mi prenosimo drugi
  niz bitova koji nastaje NRZI kodiranjem. Kodirani niz se dobija tako
  sto, pocevsi npr. od 0, za svaku jedinicu u originalnom nizu
  zadrzavamo istu vrednost u kodiranom nizu, a za svaku nulu u
  originalnom nizu invertujemo vrednost bita u kodiranom nizu. Na ovaj
  nacin se obezbedjuje da cak i prilikom prenosenja dugackih nizova
  nula (sto se cesto desava) mi zapravo imamo promenu vrednosti na
  komunikacionom kanalu pri svakom bitu, pa ce prijemni uredjaj moci
  da se sinhronizuje. Ostaje jos problem dugackih nizova jedinica
  (tada ce se u dugom periodu zadrzavati isti naponski nivo na
  komunikacionoj liniji, pa prijemni uredjaj moze izgubiti
  sinhronizaciju). Ovaj problem se obicno resava tako sto se nakon
  svakog niza od nekoliko uzastopnih jedinica (tipicno 5 ili 6) u
  originalnom nizu dodaje jedna nula, cime se obezbedjuje da ce
  izlazni signal imati promenu u tom trenutku. Ovakav pristup koristi
  npr. USB 2.0.

  -) 8b/10b kodiranje: pored problema sa sinhronizacijom, dodatni
  problem kod serijskog prenosa moze biti ukoliko broj jedinica i nula
  koje se prenose nije ujednacen (npr. uglavnom prenosimo nule i tek
  po neku jedinicu). Ovakvi signali nemaju dobre elektricne
  karakteristike na mestu prijema, pa se zato pokusava ostvariti
  tzv. DC-balans (tj. situacija u kojoj je broj prenetih nula i
  jedinica priblizno jednak). Ovo je narocito znacajno pri visokim
  frekvencijama prenosa. Kodiranje 8b/10b pokusava da istovremeno resi
  i problem sa sinhronizacijom, kao i problem DC-balansa. Ideja je da
  se svaka sekvenca od 8 uzastopnih bitova (tj. jedan bajt) u
  originalnom nizu bitova kodira kao neka 10-bitna rec (tj. niz od 8
  bitova se zamenjuje nizom od 10 bitova).  Pritom, sam kod se bira
  tako da zadovoljava postavljene zahteve (tj. da kodirani niz bitova
  ima dovoljno ceste promene vrednosti bita, kao i da broj nula i
  jedinica u kodiranom nizu bitova bude priblizno jednak). S obzirom
  da 10-bitnih reci ima 4 puta vise od 8-bitnih reci, ovakav kod je
  moguce pronaci. Kodiranje ne mora biti jednoznacno, tj. jednom te
  istom bajtu mogu se po potrebi dodeljivati vise razlicitih 10-bitnih
  kodova, kako bi se odrzao DC-balans. Za detalje kodiranja citalac
  moze konsultovati odgovarajucu literaturu. Ovaj nacin kodiranja
  koriste npr. PCI-E 2.0, USB 3.0, SATA 2.0 i 3.0.

  -) 64b/66b, 128b/132b, 128b/130b: problem sa 8b/10b kodiranjem je u
  velikom broju dodatnih bitova (na svakih 8 bitova dodajemo jos 2
  dodatna bita, sto je 25%). Kako bi se povecao protok korisnih
  podataka, primenjuju se druga kodiranja sa slicnom idejom, ali
  manjim procentom dodatnih bitova (npr. u 64b/66b kodiranju se na
  svakih 64 bita dodaju jos dva dodatna bita, sto je 3.12%). Ova
  kodiranja ne garantuju DC-balans i dobru sinhronizaciju, ali su tako
  osmisljena da statisticki gledano (dakle, sa velikom verovatnocom)
  daju odlicne rezultate po oba pitanja. Ovakve nacine kodiranja
  koriste npr. PCI-E 3.0, USB 3.1, SATA 3.2.


*) IZRAZAVANJE BRZINE MAGISTRALA:

Brzina magistrala se moze izraziti pomocu vise razlicitih jedinica:

 -) Frekvencija (kod sinhronih magistrala): izrazava se u Hz. Nije
 narocito dobar parametar za uporedjivanje brzina (mozemo imati vise
 transfera po ciklusu, ali i vise ciklusa po transferu).

 -) Transfer po sekundi (T/s): Ova jedinica apstrahuje detalje o broju
 transfera po ciklusu magistrale i dobijamo cistu informaciju o tome
 koliko se transfera obavi u svakoj sekundi. Npr. ako je frekvencija
 magistrale 200MHz, a imamo 2 transfera po ciklusu, imacemo 400MT/s
 (megatransfera po sekundi).

 -) Bajtova po sekundi (B/s): Ova jedinica dodatno uracunava sirinu
 magistrale. Naime, to sto dve magistrale imaju isti broj transfera po
 sekundi, ne znaci da su jednako brze, zato sto jedna od njih moze
 biti serijska (pa prenosi po jedan bit u svakom transferu), a druga
 paralelna (pa prenosi npr. po 8 bajtova u svakom transferu). Takodje,
 u slucaju serijskih magistrala cesto se u niz bitova koji se salju
 dodaju razni kontrolni i sinhronizujuci bitovi koji ne predstavljaju
 korisnu informaciju. Prilikom preracunavanja iz T/s u B/s ovi bitovi
 se ne racunaju. Otuda informacija o brzini protoka izrazena u B/s
 najpreciznije opisuje koliko je neka magistrala brza i predstavlja
 najbolji parametar za poredjenje. Mi cemo u nastavku koristiti ovu
 jedinicu za poredjenje magistrala. Pritom, naglasimo da ovde KB/s
 znaci 1000 B/s (ne 1024B/s), MB/s znaci 1000 KB/s (a ne 1024 KB/s).
 [Faktor 1024 se koristi kod izrazavanja kapaciteta memorija, dok se
 kod kolicine transfera koristi faktor 1000. Alternativno, postoje
 jedinice KiB (kibibajt) = 1024B, MiB (mibibajt) = 1024KiB, GiB
 (gibibajt) = 1024MiB, ...).

 -) Bitovi po sekundi (bit/s ili b/s): Ova jedinica se cesto koristi
 za serijske magistrale (jer one prenose bit po bit), pri cemu se u
 broj bitova po sekundi uracunavaju i dodatni kontrolni bitovi koji ne
 predstavljaju korisnu informaciju. Dakle, ova jedinica se uglavnom
 koristi za izrazavanje "sirove brzine" neke serijske veze. Ova
 jedinica se kod serijskih linija uglavnom koristi umesto frekvencije,
 zato sto se kod serijskih linija, cak i kada su sinhrone, casovnik ne
 distribuira zajedno sa podacima (kao sto je to slucaj kod paralelnih
 magistrala), vec se casovnik prepoznaje u samom nizu bitova koji se
 salje (prepoznajuci promene nivoa signala koje se kodiraju tako da se
 odvijaju dovoljno cesto).


*) PRIMERI MAGISTRALA:

   -- ISA: paralelna, razdvojena magistrala, sa 16-bitnom magistralom
           podataka i 24-bitnom adresnom magistralom [prva verzija je
           imala 8-bitnu magistralu podataka i 20-bitnu adresnu
           magistralu, sto je odgovaralo Intelovim 8086 procesorima;
           sa uvodjenjem 80286 procesora koji su bili 16-bitni, doslo
           je do unapredjenja ove magistrale]. U pitanju je sinhrona
           magistrala, frekvencija casovnika magistrale je isla do
           8.33MHz (u prvim verzijama 4.77MHz). S obzirom na sirinu
           magistrale od 16 bita (2 bajta), i na cinjenicu da je za
           jedan transfer po protokolu bilo potrebno dva ciklusa
           casovnika, brzina transfera je bila oko 8MB/s. Koriscena je
           kao glavna magistrala na koju su se povezivali svi uredjaji
           (procesor, RAM, ulazno-izlazni uredjaji) tokom 80tih kod PC
           racunara. Daljom evolucijom (pre svega zbog potrebe brzih
           uredjaja kao sto su graficke karte, kao i zbog ubrzanja
           procesora i memorije) nastaje PCI magistrala, a ISA se jos
           neko vreme koristi paralelno sa njom, za potrebe
           povezivanja sporijih uredjaja.
	   
   -- PCI: paralelna, multipleksirana 64-bitna magistrala (u ranijim
           verzijama 32-bitna). Sinhrona magistrala sa casovnikom cija
           je frekvencija bila 66MHz (u ranijim verzijama
           33MHz). Brzina transfera bila je 528MB/s (u sporijoj
           verziji 266MB/s). Nije koriscena za komunikaciju izmedju
           procesora i memorije, vec za povezivanje sa perifierijskim
           uredjajima. Dakle, sa pojavom PCI magistrale arhitektura
           sistema se menja i vise ne postoji jedinstvena magistrala
           na koju se sve povezuje, vec postoji vise magistrala koje
	   su medjusobno povezane mostovima i koje sluze za
           povezivanje sa razlicitim uredjajima.

   -- FSB: Front Side Bus -- PREDNJA MAGISTRALA: razdvojena paralelna
           magistrala sa 64-bitnom magistralom podataka i 32-48 bita
           sirokom magistralom adresa. Pojavljuje se u vreme nastanka
           PCI magistrale. Naime, kako PCI magistrala nije bila
           prilagodjena komunikaciji sa RAM-om (jer je bila
           multipleksirana), a ISA magistrala je vec bila prespora,
           sistem je reorganizovan tako da je procesor preko FSB-a bio
           povezan sa cipom na maticnoj ploci koji se zvao SEVERNI
           MOST (engl. North Bridge). Severni most je u sebi
           integrisao mnoge funkcije poput sistemskog sata,
           memorijskog kontrolera, PCI kontrolera i sl. Memorijski
           kontroler u severnom mostu je preko MEMORIJSKE MAGISTRALE
           bio povezan sa RAM memorijom. Takodje, severni most je bio
           povezan sa PCI magistralom preko koje se povezivao sa
           periferijskim uredjajima. Za potrebe komunikacije sa
           starijim sporijim uredjajima, severni most je bio povezan
           preko PCI magistrale sa JUZNIM MOSTOM (engl. South Bridge)
           koji je u sebi sadrzao kontroler ISA magistrale i preko
           koga je ostvarivana veza sa ISA magistralom. Takodje, juzni
           most je sadrzao kontrolere za standardne ulazno izlazne
           uredjaje (tastatura, mis), diskove (PATA magistrala), USB,
           i td.

           Brzina FSB magistrale je na AMD-ovim sistemima bila do
           200MHz, uz 2 transfera po ciklusu (na silaznom i ulaznom
           rubu). Ovo znaci da je brzina protoka isla do 3.2GB/s.  Na
           Intel-ovim sistemima frekvencija FSB magistrale je
           standardno isla do 333MHz, ali je omogucavala 4 transfera
           po ciklusu, sto je omogucavalo brzinu transfera do 10.6GB/s
           (za Core2 Duo procesore). Najbrze varijante su isle do
           400MHz, sto je davalo do 12.8GB/s protoka.

	   Ovaj sistem je koriscen sve do Intel Core2 Duo procesora.
	   Sa pojavom Core i3, i5, i7 procesora i brzih DD3 memorija,
	   FSB magistrala postaje usko grlo, pa je izbacena iz
	   upotrebe, a funkcionalnosti Severnog mosta integrisane su u
	   sam procesor [dakle, procesor je direktno povezan kako na
	   memorijsku magistralu, tako i na druge vrste magistrala za
	   komunikaciju sa periferijskim uredjajima, poput PCI-E, DMI,
	   QPI, i sl.).
	   

    -- MEMORIJSKA MAGISTRALA: u pitanju je razdvojena paralelna
           magistrala. Ova magistrala podrzava 2 transfera po ciklusu
           (sto podrazumeva savremene DDR memorije), sto uz
           frekvencije do 1600MHz i sirinu od 64 bita daje maksimalnu
           brzinu transfera do 25.6GB/s za DDR 4 memorije (u slucaju
           DDR3 memorije, frekvencije magistrale su isle do
           1066.66MHz, sto je davalo brzine protoka do 17GB/s). Sve do
           pojave Intel Core i3,i5,i7 procesora kontroler magistrale
           se nalazio u severnom mostu, a memorijska magistrala je
           povezivala severni most sa memorijom. Procesor je preko
           FSB-a, severnog mosta i memorijske magistrale komunicirao
           sa memorijom. Od pojave ovih procesora arhitektura je
           promenjena, pa je sada procesor direktno povezan na
           memorijsku magistralu (memorijski kontroler je sada
           ugradjen u sam procesor). Ovo je omogucilo znatno vece
           frekvencije memorijske magistrale i veci protok. Takodje,
           mnogi procesori imaju vise od jedne memorijske magistrale
           (tzv. VISEKANALNI SISTEMI, engl. multi-channel systems).
           Npr. u dvokanalnim sistemima (dual-channel), imamo dve
           memorijske magistrale, pa mozemo instalirati dva memorijska
           modula sa kojima procesor moze nezavisno komunicirati.
           Time se teorijski duplira protok (mada u praksi sve zavisi
           od nacina na koji se koriste podaci iz memorije, tj. da li
           se naizmenicno uzimaju podaci iz razlicitih modula ili ne).
           U novije vreme, postoje i trokanalni i cetvorokanalni
           sistemi.      


   -- PCI-EXPRESS (PCI-E): serijska dvosmerna magistrala koja se danas
           dominantno koristi za povezivanje procesora sa
           perifirijskim uredjajima (grafickom i zvucnom kartom,
           mreznom kartom, i sl.). Aktuelna verzija 3.0 omogucava
           brzinu protoka od 985MB/s u svakom od smerova. Dolazece
           verzije 4.0 i 5.0 imace brzine od 1969MB/s, odnosno skoro
           4GB/s u svakom od smerova.

           Iako se zove magistrala, u sustini je u pitanju direktna
           (point-to-point) komunikacija. Svaka serijska veza povezuje
           samo dva uredjaja. Da bi smo povezali vise uredjaja,
           koristimo skretnice (engl. switch) koje povezuju vise
           uredjaja, koristeci topologiju zvezde (slicno kao kod
           racunarskih mreza). Nalik racunarskim mrezama, podaci se
           pakuju u pakete i salju putem ovih serijskih linija (i
           skretnica) do odredista.  Ovakva arhitektura eliminise
           probleme sa zagusenjem magistrale, kao i probleme
           arbitraze, jer tako nesto ovde nije neophodno (jer nemamo
           istinsku magistralu).

	   Dva uredjaja se mogu povezati i pomocu vise od jedne
	   serijske veze preko kojih se mogu nezavisno i istovremeno
	   slati podaci (u oba smera). Na ovaj nacin se protok
	   visestruko uvecava. Pojedinacne serijske veze izmedju
	   uredjaja nazivamo KANALIMA (engl. lane). Sporiji uredjaji
	   se obicno povezuju putem jednokanalne veze (x1), dok se
	   brzi uredjaji sa vecim zahtevima u pogledu transfera
	   povezuju na visekanalne veze (x2, x4, x8, x16, x32).

	   Da bi se procesor i memorija povezali sa PCI-E
	   arhitekturom, koristi se tzv. KORENI KOMPLEKS (engl. root
	   complex). Ovaj uredjaj se najcesce nalazi na samom
	   procesoru, ali se kod nekih procesora nalazi na odvojenom
	   cipu (tipicno na severnom mostu). Ovaj uredjaj ima
	   odredjeni broj PCI-E portova (i do 40), preko kojih se
	   procesor i memorijski kontroler povezuju na PCI-E
	   skretnice, kao i na pojedinacne PCI-E uredjaje.  Na ovaj
	   nacin, citav PCI-E sistem dobija drvoliku strukturu u cijem
	   se korenu nalazi upravo koreni kompleks. 
	   

   -- QPI: QuickPathInterconnect: Intel-ova tehnologija koja je
           uvedena kao zamena za FSB. U pitanju je serijska
           magistrala, tacnije, skup od 20 serijskih dvosmernih
           magistrala. Uz podatke, preko magistrale se prenose i
           dodatni kontrolni bitovi i bitovi za detekciju
           gresaka. Postoje i dodatne linije za distribuciju
           casovnika. U svakom ciklusu casovnika imamo po dva
           transfera, tako da se u dva ciklusa prenose 64 bita
           korisnih podataka, kao i 16 dodatnih bitova. Frekvencije
           ove magistrale idu do 3.2GHz, sto daje brzinu korisnog
           transfera do 25.6GB/s.

	   QPI se na nekim modelima Intel-ovih procesora koristio da
	   povezuje procesor sa severnim mostom (kao zamena za FSB),
	   pri cemu je funkcionalnost kontrolera memorije iz severnog
	   mosta prebacena u sam procesor (tako da procesor direktno
	   komunicira sa RAM-om putem memorijske magistrale, a sa
	   severnim mostom, i samim tim, sa ostalim uredjajima putem
	   QPI veze). Na novijim procesorima, severni most je izbacen
	   i sva njegova funkcionalnost je prebacena u procesor. U tim
	   sistemima QPI se koristi za povezivanje komponenti unutar
	   samog procesora (tipicno za povezivanje jezgara procesora
	   sa memorijskim kontrolerom, korenim kompleksom PCI-E
	   magistrale, DMI interfejsom i sl.). 

	   Slicna tehnologija postoji i kod AMD procesora, pod imenom
	   HyperTransport. Ova magistrala moze imati i do 32 serijske
	   linije, sto teorijski daje najveci moguci protok od
	   51.2GB/s. 

   -- DMI: Direct Media Interface: u pitanju je brza serijska veza
           koja je po protokolu slicna PCI-E magistrali i koja se
           koristi za povezivanje severnog i juznog mosta kod novijih
           Intel-ovih procesora. U slucaju da je severni most
           integrisan sa procesorom, ova veza povezuje procesor sa
           juznim mostom [u tom slucaju, juzni most se obicno naziva
           Platform Controller Hub (PCH), i objedinjuje ranije
           funkcije juznog mosta, kao sto su veza sa PCI magistralom,
           kontroler tastature i misa, veza sa ROM memorijom, veza sa
           eksternim magistralama, poput USB-a, SATA i sl. Takodje,
           PCH cip sadrzi sistemski sat, sto je ranije bilo u severnom
           mostu]. DMI 2.0 je imao brzinu transfera do 2GB/s, dok
           noviji DMI 3.0 standard ima brzinu transfera do 4GB/s.

   -- PATA: paralelna magistrala za povezivanje sa IDE diskovima.
      	    Brzina transfera ide do 133.3MB/s. U pitanju je 16-bitna
      	    magistrala preko koje je bilo moguce povezivati do dva IDE
      	    uredjaja (hard diska, CD-ROM uredjaja, i sl.). Vecina
      	    maticnih ploca su sadrzala po dva PATA kontrolera, sto je
      	    omogucavalo ukupno 4 ovakva uredjaja.

   -- SATA: serijska magistrala za povezivanje sa diskovima. U pitanju
            je direktna (point-to-point) veza izmedju SATA kontrolera
            koji se nalazi na maticnoj ploci (u juznom mostu ili PCH
            cipu) i odgovarajuceg SATA uredjaja (hard diska, CD/DVD-a,
            SSD diska). Aktuelni 3.0 standard podrzava brzine
            transfera do 600MB/s. Noviji 3.2 standard podrazumeva
            integraciju sa PCI-E magistralom, sto omogucava da se SATA
	    uredjaj efektivno putem SATA porta prikljuci na PCI-E, sto
	    omogucava brzine transfera do 2GB/s.

	    SATA port ne pruza uredjaju napajanje, vec samo prenosi
	    podatke. Za interne komponente to nije problem, jer se oni
	    posebnim prikljucima povezuju na napajanje iz kucista
	    racunara. Medjutim, povezivanje eksternih uredjaja
	    (npr. eksternih hard diskova) putem SATA magistrale
	    (tzv. eSATA, od "external-SATA") zahteva da ti uredjaji
	    imaju sopstveno napajanje (tj. pored kabla za povezivanje
	    sa racunarom moraju imati i kabl za struju). Varijanta
	    SATAp eksternog SATA prikljucka dodatno obezbedjuje i
	    napajanje za uredjaj.

   -- USB: serijska magistrala za povezivanje eksternih uredjaja.
      	   Osmisljena krajem 20. veka, imala je za cilj jednostavnost
      	   i uniformnost prilikom povezivanja veoma raznorodnih
      	   uredjaja. Neki od tih uredjaja ne zahtevaju brze transfere,
      	   ali zahtevaju hitnu asinhronu reakciju (poput tastature i
      	   misa), neki zahtevaju prenos u realnom vremenu
      	   (tj. kasnjenje mora biti veoma malo), ali tolerisu greske
      	   (poput audio i video zapisa), dok neki zahtevaju veoma
      	   velike transfere i ne tolerisu nikakve greske pri prenosu,
      	   ali dozvoljavaju kasnjenje (poput diskova, flesh memorija,
      	   i sl.). USB je dizajniran tako da objedini sve ove zahteve,
      	   tako sto nudi razlicite vrste transfera u zavisnosti od
      	   tipa uredjaja. Drugi cilj bio je da se omoguci tzv.
      	   "plug-and-play" mehanizam: uredjaj se prililom
      	   prikljucivanja automatski prepoznaje i konfigurise od
      	   strane USB kontrolera i odgovarajuceg softvera. Ovo se moze
      	   uraditi i dok racunar radi (tzv. "hot-plugging").

           Brzina transfera kod verzije USB 2.0 je do 60MB/s, kod
      	   verzije USB 3.0 je do 500MB/s. Aktuelna verzija USB 3.1 ide
      	   i do 1.25GB/s, dok ce verzija USB 3.2 imati brzinu
      	   transfera i do 2.5GB/s.

	   USB podrazumeva direktne (point-to-point) serijske veze
	   izmedju uredjaja. Ove veze se povezuju u drvoliku strukturu
	   u cijem se korenu nalazi tzv. KORENI HAB. Unutrasnji
	   cvorovi ovog stabla nazivaju se HABOVI, a u listovima se
	   nalaze USB uredjaji. Koreni hab se nalazi u okviru HOST
	   KONTROLERA koji predstavlja uredjaj preko koga procesor i
	   memorija komuniciraju sa USB stablom. Dakle, ceo USB sistem
	   se iz ugla procesora vidi kao jedan kontroler preko koga
	   procesor komunicira sa svim uredjajima koji su prikljuceni
	   preko USB interfejsa. Host kontroler se sa procesorom
	   povezuje putem neke unutrasnje magistrale (ranije je to
	   bila PCI magistrala, danas je verovatnije PCI-E ili DMI).
   
	   Svakom USB uredjaju se prilikom povezivanja pridruzuje
	   7-bitna adresa pomocu koje ga host kontroler prepoznaje.
	   Uredjaj tom prilikom salje host kontroleru informacije o
	   sebi, na osnovu cega kontroler zna na koji nacin da
	   komunicira sa njim. Sva dalja komunikacija izmedju host
	   kontrolera i USB uredjaja se odvija iskljucivo na zahtev
	   host kontrolera. Sam host kontroler vrsi PROZIVANJE
	   (engl. polling) tako sto svim uredjajima periodicno salje
	   paket na koji oni odgovaraju ukoliko zele nesto da
	   posalju. Na ovaj nacin se sprecava da dva uredjaja
	   istovremeno posalju paket host kontroleru.

	   Ukoliko je potrebno izvrsiti transfer izmedju racunara i
	   nekog USB uredjaja (u bilo kom smeru), host kontroler
	   rasporedjuje taj transfer u niz transakcija. Pritom,
	   postoje cetiri vrste transfera:

	   - prekidni transferi: za uredjaje kojima je potrebna
	   hitna reakcija
	   - izohroni transferi: za uredjaje kojima je potreban
	   prenos u realnom vremenu (uz dozvoljene greske)
	   - masovni transferi: za uredjaje kojima je potreban
	   prenos velike kolicine podataka bez tolerancije na
	   greske, ali uz dozvoljeno kasnjenje
	   - kontrolni transferi: za slanje kontrolnih poruka
	   izmedju host kontrolera i uredjaja.

	   Sve vrste transakcija se rasporedjuju tako da u svakom
	   vremenskom prozoru od 1ms, bar 10% vremena bude rezervisano
	   za kontrolne transfere, dok do 90% moze ici za prekidne i
	   izohrone transfere. Sa druge strane, za masovne transfere
	   se koristi ono sto ostane (ako ostane). Drugim recima,
	   prioritet se daje prekidnim transferima (jer oni moraju
	   hitno da se obave) i izohronim transferima (jer oni moraju
	   da se vrse u realnom vremenu), dok masovni transferi
	   (npr. kopiranje fajla sa eksternog hard diska koji je
	   povezan na USB port) se ne smatraju prioritetnim i bice im
	   dat onaj procenat protoka koji bude na raspolaganju.

	   USB standard podrazumeva da se uredjaju salje napajanje
	   putem USB kabla. Otuda uredjaji koji se povezuju na USB ne
	   moraju da imaju sopstveno napajanje (osim ako njihovi
	   zahtevi za napajanjem nisu veci od onoga sto moze da im
	   obezbedi USB port). Takodje, USB kablovi se mogu koristiti
	   za punjenje baterija mobilnih telefona, tableta i drugih
	   uredjaja.

	   
