*) 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.

	   
