AODR – Materijali - OSS UNIST

Arhitektura i organizacija digitalnih računala
Radni materijal
Sadržaj:
1.
Uvod .....................................................................................................................................3
1.1.
1.2.
1.3.
Generacije i razvoj računalnih sustava................................................................................. 6
Von Neumannova arhitektura............................................................................................. 7
Organizacija računalnih sustava .......................................................................................... 8
1.3.1.
1.3.2.
1.3.3.
1.3.4.
1.3.5.
1.3.6.
1.3.7.
1.3.8.
1.3.9.
2.
Procesori ....................................................................................................................................... 8
Izvršavanje instrukcija................................................................................................................... 9
RISC i CISC ................................................................................................................................... 10
Trendovi razvoja procesora ........................................................................................................ 11
Paralelna obrada podataka......................................................................................................... 11
Superskalarna arhitektura .......................................................................................................... 12
Primarna memorija..................................................................................................................... 13
Cache memorija.......................................................................................................................... 13
Ulazni i izlazni skolopovi ............................................................................................................. 14
Razina digitalne logike........................................................................................................16
2.1.
2.2.
2.3.
2.4.
2.5.
2.6.
2.7.
2.8.
2.9.
2.10.
Sklopovi za pomak ............................................................................................................ 16
Zbrajalo ............................................................................................................................ 16
Aritmetičko logičke jedinice .............................................................................................. 17
Memorija.......................................................................................................................... 18
RAM i ROM memorije ....................................................................................................... 20
Procesori i sabirnice .......................................................................................................... 21
Širina sabirnice.................................................................................................................. 22
Arbitriranje sabirnice ........................................................................................................ 23
Procesor 8051.........................................................................Error! Bookmark not defined.
PCI sabirnica ..................................................................................................................... 25
2.10.1.
2.10.2.
2.11.
U/I sklopovi....................................................................................................................... 27
2.11.1.
3.
Dekodiranje adresa..................................................................................................................... 28
Razina mikroarhitekture.....................................................................................................31
3.1.
3.2.
3.3.
3.4.
3.5.
3.5.1.
3.5.2.
3.5.3.
3.5.4.
3.5.5.
3.6.
3.6.1.
3.6.2.
4.
Signali PCI sabirnice .................................................................................................................... 26
Arbitriranje PCI sabirnice ............................................................................................................ 27
Primjer mikroarhitekture .................................................................................................. 31
Rad memorije ................................................................................................................... 33
Mikroinstrukcije................................................................................................................ 34
Upravljanje mikroinstrukcijama......................................................................................... 35
ISA instrukcije i primjer realizacije mikroarhitekture.......................................................... 37
Realizacija stoga.......................................................................................................................... 37
Memorijski model....................................................................................................................... 37
Primjeri IVM ISA instrukcija ........................................................................................................ 38
Mikroinstrukcije i notacija .......................................................................................................... 40
Primjeri realizacije IVM instrukcija mikroinstrukcijama ............................................................. 41
Priručna memorija ............................................................................................................ 42
Direktno preslikana priručna memorija...................................................................................... 44
Set-asocijativna priručna memorija............................................................................................ 44
Razina arhitekture skupa instrukcija ..................................................................................46
4.1.
4.2.
4.3.
4.3.1.
Registri ............................................................................................................................. 47
Instrukcije...............................................................................Error! Bookmark not defined.
Tipovi podataka ................................................................................................................ 47
Realni brojevi u formatu pomičnog zareza ................................................................................. 48
1. Uvod
Digitalna računalo je uređaj koji izršava zadani niz operacija – program. Sva računala razumiju i
mogu izvršiti samo jednostavan skup instrukcija koji se svode na jednostavne aritmetičke i memorijske
operacije, pa svaki program mora biti kreiran korištenjem samo tih instrukcija. Skup instrukcija koje
računalo podržava tvore strojni jezik, koji je zbog svoje jednostavnosti neprikladan za opisivanje
realnih problema koje bi računalo trebalo riješiti. Postoji velika razlika između načina razmišljanja
čovjeka, njegovog predstavljanja problema i rješenja i načina rada računala, koji je ograničen svojom
elektroničkom realizacijom.
Rješenje koje smanjuje jaz između ljudskog razmišljanja i računalne realizacije je uvođenje novog
skupa instrukcija koji je bliži ljudskom načinu razmišljanja no što su to strojne instrukcije. Novi skup
instrukcija formira novi jezik, pa sada razlikujemo novouvedeni jezik L1 i postojeći jezik stroja L0.
Programi pisani na L1 jeziku bliži su ljudskom načinu razmišljanja, ali računalo je i dalje isto, pa je
potrebno instrukcije jezika L1 zamijeniti odgovarajućim instrukcijama jezika L0. Zamjena L1 s L0
instrukcijama moguća je na dva načina:
• Prevođenje (translation) je metoda kojom se iz svake L1 instrukcije program generiraju
odgovarajuće L0 instrukcije. Dobiveni L0 program učita se u memoriju računala i tijekom
izvođenja upravlja resursima računala.
• Interpretiranje (interpretation) je metoda kojom se L1 program učitava instrukciju po
instrukciju u interpreter, te se nakon učitavanja svake instrukcije izvršava odgovarajući slijed
ekvivalentnih L0 instrukcija, čime se izbjegava prevođenje kompletnog L1 programa na L0 jezik,
a tijekom izvođenja interpreter upravlja resursima računala.
Obje navedene metode su slične, u oba slučaja računalo izvodi L0 instrukcije, obje metode imaju
svoje mane i prednosti, pa su obje u upotrebi. Obje metode mogu se prikazati konceptom virtualnog
stroja M1 koji razumije jezik L1.
Efikasan rad virtualnog stroja moguć je ukoliko se jezici L1 i L0 ne razlikuju previše, je protivno
glavnom cilju uvođenja L1 jezika – udaljavanju od elektroničke realizacije i približavanje ljudskom
načinu razmišljanja. Rješenje je uvođenje još jedne ili više razina virtualnih strojeva koji zajedno nude
dovoljnu razinu apstrakcije za ljudsku upotrebu.
3
Slika 1.1.: Računalo kao stroj s više razina
Računalo s n razina može se predstaviti kao niz različitih virtualnih strojeva od kojih svaki koristi
vlastiti strojni jezik. Svakoj razini odgovara stroj odgovarajući stroj.
Najniža razina uvijek je virtualni stroj koji odgovara elektroničkoj realizacija sklopova računala, te
nema potrebe za prevođenjeme ili interpretiranjem. Programi napisani na višoj razini L1 – Ln moraju
se interpretirati interpreterom koji se izvršava na nižem nivou, ili se moraju prevesti na jezik nižeg
nivoa. Pisanje programa za virtualni stroj oslobađa programera razmišljanja o detaljima podređenih
virtualnih strojeva.
4
Slika 1.2.: Računalo s 6 razina
Najniža razina, razina digitalne logike sagrađena je od elemenata koji realiziraju klasične digitalne
sklopove: logička vrata, registre, itd koji realiziraju procesor računala i ostale elektroničke elemente
računala.
Razina mikroarhitekture sadrži skupine registara koji čine lokalnu memoriju procesora i njegovu
aritmetičko-logičku jedinicu (ALU), sposobnu za obavljanje elementarnih aritmetičkih i logičkih
operacija. Registri i ALU čine putanju podataka (data path). Putanjom podataka upravlja
mikroprogram ili izravno hardver.
Kod mikroprogramiranja, mikroprogram je interpreter razine 2: prihvaća instrukcije s razine 2,
ispituje ih i izvršava. Primjerica instrukcija ADD koristi se za opis operacije zbrajanja dvaju registara na
razini arhitekture skupa instrukcija. Na razini mikroarhitekture ADD instrukcija nakon prihvaćanja,
razbija se na niz mikroinstrukcija koje dekodiraju instrukciju kako bi se utvrdilo da se radi o ADD
instrukciji, dohvaćanje i spremanje operanada u registre, izračun i konačno spremanje sume.
Izravno sklopovsko realiziranje ADD instrukcije sadrži iste korake, ali ne postoje koraci u vidu
mikroinstrukcija, već se kompletan posao ADD instrukcije obavlja elektroničkim sklopovanjem. Ovaj
način izvođenja je brži, ali zahtijeva poseban sklop za realizaciju.
•
Razina 2 je razina arhitekture skupa instrukcija (ISA – Instruction Set Architecture). Ova razina
detaljno je opisana u dokumentaciji koja proizvođač isporučuje s računalom.
•
Razina 3 je obično hibridna, odnosno većina instrukcija ove razine istodobno pripada i ISA
razini, ali postoji i skup novih instrukcija, novi način organizacije memorije, mogućnost
paralelnog izvršavanja više programa, itd. Razina 3 od sustava do sustava uvijek se jako razlikuje
mnogi više nego što je to slučaj s nižim razinama. Nove instrukcije izvršavaju se na razini 3, dok
5
se postojeće instrukcije ISA razine izvršavaju na nižim razinama (mikro ili sklopovske
instrukcije).
•
Razine 4 i više imaju bitnu razliku od razina 0-3. Naime, razine do uključivo razine 3 nisu
namijenjene većini programera. Na njima se koriste programi čija je uloga interpretiranje,
prevođenje i ostale funkcionalnosti kao podrška višim nivoima, stoga se razine 0-3 nazivaju i
sistemskim razinama. Razine počevši od razine 4 namijenjenu su programima koji rješavaju
različite probleme iz svakodnevnog života koji su rješivi korištenjem računala. Ioako nije parvilo,
razine 0-3 koriste interpretiranje, a razine 4-5 koriste prevođenje kao način rada virtualnih
strojeva. Strojni jezici na razinama 0-3 najčešće su numerički, prilagođeni izvršavanju na stroju.
Razina 4 i više koriste zapis programa u tekstualnoj formi koje su razumljivije za ljudsku
primjenu i opis problema koji se rješavaju na tim razinama. Razina 4 (assembler) prva je takva
razina, ona omogućuje pisanje programa za niže razine koji je značajno čitkiji, stoga i
jednostavniji od jezika koji se koriste na nižim razinama. Programi napisani u assembler najprije
se prevođenjem prevode na jezik niže razine, a zatim se interpretiranjem izvode na
pripadajućem virtualnom stroju. Program koji obavlja prevođenje također se naziva assembler.
•
Razina 5 sadrže jezike razine apstrakcije prilagođene realnim problemima i aplikacijama koje ih
rješavaju, npr. C/C++, Perl, Java, .NET i sl. Programi pisani na ovim razinama prevode se na
jezike razine 3 ili 4 korištenjem programa koji se nazivaju prevodioci (compilers), ili se koristi
interpretiranje, ali rjeđe (npr. Java, .NET).
Skup tipova podataka, operacija i mogućnosti naziva se arhitekturom razine. Arhitektura opisuje
aspekte bitne programeru (npr. podržani tipovi podataka), ali sakriva aspekte koji nisu važni (npr.
elektronička realizacija).
1.1.
Generacije i razvoj računalnih sustava
Povijesno gledano, uređaji koji su bili ključni za razvoj računalne tehnologije današnjice:
Godina Uređaj
1834.
1936.
1943.
1944.
1946.
1949.
1951.
1952.
1960.
1961.
1962.
1963.
1964.
1964.
1965.
1970.
1974.
1974.
1978.
1981.
1981.
1983.
Analytic Engine
Z1
Colossus
Mark I
ENIAC I
EDSAC
Whirlwind
IAS
PDP-1
1401
7094
B5000
360
6600
PDP-8
PDP-11
8080
CRAY-1
VAX
IBM PC
Osborne-1
Lisa
Autor
Opis
Babbage
Zuse
Britanska vlada
Aiken
Echert / Muchley
Wilkes
MIT
Von Neumann
DEC
IBM
IBM
Burroughts
IBM
CDC
DEC
DEC
Intel
Cray
DEC
IBM
Osborne
Apple
Pri pokušaj izrade računala
Funkcionalno elektromehaničko (relejno) računalo
Prvo elektroničko računalo
Prvo računalo opće namjene
Prvo programabilno računalo
Prvo računalo s mogućnošću spremanja programa
Prvo računalo za rad u realnom vremenu (realtime)
Računalo s koncepcijom koja se zadržala do danas
Prvo mini računalo
Prvo malo poslovno računalo
Prvo računalo za znanstvanu primjenu
Prvo računalo s jezikom visoke razine
Prvo masovno računalo
Prvo znanstveno računalo
Prvo masovno mini računalo
Masovno računalo 70-tih godina
Prvo 8-bitno računalo s procesorom
Prvo vektorsko super-računalo
Prvo 32-bitno računalo
Prvo osobno računalo
Prvo prijenosno računalo
Prvo računalo s grafičkim operativnim sustavom
6
1985.
1987.
1990.
1992.
1994.
i386
SPARC
RS6000
Alpha
Newton
Intel
Sun
IBM
DEC
Apple
Prvi 32-bitni procesor osobnih računala
Prva RISC radna stanica
Prvo superskalarno računalo
Prvo 64-bitno računalo
Prvo džepno računalo
Tablica 1.1 Ključni uređaji računalne povijesti
1.2.
Von Neumannova arhitektura
Koncept IAS računala bitan je jer je njegov autor John von Neumann primjenio arhitekturu koja se i
danas koristi u skoro svim računalima:
Slika 1.3 Von Neumannova arhitektura
Von Neumannova arhitektura ima pet osnovnih dijelova: memoriju, aritmetičko-logičku jedinicu
(ALU), upravljačku jedinicu, ulaznu i izlaznu jedinicu. Memorija je organizirana kao 4096 40-bitnih
riječi. Svaka riječ sadrži dvije 20-bitne instrukcije ili 40-bitni broj. 8 bita svake instrukcije označava
instrukciju, a preostalih 12 bita adresira jednu od memorijskih lokacija. Aritmetičko-logička i
upravljačka jedinica danas su integrirane u istom kućištu – centralnom procesoru (central processing
unit, CPU). ALU sadrži poseban registar koji sudjeluje u izvršavanju skoro svih instrukcija.
Prva računala iz četrdesetih godina dvadesetog stoljeća imaju samo dvije razine: sklopovlje i ISA
razinu. Dodavanjem treće razine s ciljem drastičnog pojednostavljenja sklopovlja (Wilkes) računalu je
dodan nepromjenjivi interpreter koji je interpretirao ISA instrukcije. Sklopovlje izrađeno od
elektronskih cijevi izvršavalo je mnogo manji skup mikroinstrukcija, te je bilo jednostavnije, jeftinije i
pouzdanije.
Pedesetih godina izrađeno je Whirlwind računalo, koje je radilo sa 16-bitnim riječima, te je počelo
razvoj magnetskih memorija.
PDP-1 je prvo računalo izrađeno tranzistorima: memorija se sastojala od 4096 18-bitnih riječi,
obavljao je 200000 instrukcija u sekundi, imao je ekran rezolucije 512 x 512 točaka, cijena mu je bila
120 000 dolara.
PDP-8 uvodi koncept sabirnice (bus) za povezivanje elemenata računala:
Slika 1.4: PDP-8 Omnibus sabirnica
7
Šezdesetih godina uveden je operativni sustav, u samom početku radilo se o programu koji je cijelo
vrijeme bio pokrenut na računalu, a automatizirao je i ubrzavao posao pokretanja korisničkih
programa na računalu. Dodavanjem novih instrukcija ISA razini izgrađena je nova razina operativnog
sustava računala. Funkcije operativnog sustava danas se najčešće zovu sistemskim pozivima (system
calls).
Sedamdesetih godina koncept mikroprogramiranje dosegao je zrelu fazu, te su se nove ISA
instrukcije mogle graditi od već postojećih mikroinstrukcija.
1.3.
Organizacija računalnih sustava
Digitalno računalo je sustav međusobno povezanih glavnih elemenata: (mikro)procesora, memorije
i ulazno/izlaznih (U/I) uređaja. Dijelovi računala međusobno su povezani jednom ili više sabirnica.
Sabrinica je skup vodova koji postoji u paralelnoj, serijskoj ili kombiniranoj izvedbi.
Slika 1.5.: Organizacija jednostavnog računalnog sustava
Iz pozicije procesora, postoje dvije sabirnice: unutarnja sabirnica povezuje elemente procesora, a
vanjska sabirnica povezuje procesor i ostale dijelove računala.
Ovisno o složenosti procesora i računala, dvije sabirnice mogu biti realizirane jedinstveno (kod
jednostavnih računala) ili jako složeno u više različitih dijelova ovisno o zahtijevima za maksimalnim
performansama pojedinih dijelova računala, najčešće memorije.
Memorija dovoljne veličine nije izvediva uz dovoljnu brzinu i razumnu cijenu, odnosno postoji
velika razlika između brzine procesora i brzine memorije, i to je raskorak koji je jedan od najvećih
problema računalne tehnologije uopće od von Neumannovog modela do danas, pa se toga i naziva
von Neumannovim uskim grlom.
1.3.1. Procesori
Organizacija procesora većine današnjih računala opće namjene bazira se na von Neumannovom
modelu.
Procesor (Central Processing Unit, CPU). središnji je dio računala. Njegova uloga je izvršavanje
programa koji se nalaze u glavnom memoriji. Programi se sastoje od niza instrukcija koje procesor
preuzima, ispituje i izvršava. Sastoji se od tri glavna dijela: upravljačke jedinice, aritmetičko logičke
jedinice i skupa registara.
8
Slika 1.6.: Putanja podataka jednostavnog procesora po von Neumanovom modelu
Skup registara za privremenu pohranu podataka tijekom obrade čine putanju podataka (datapath).
Podaci i instrukcije dohvaćaju se u registre iz memorije preko vanjske sabirnice.
Upravljačka jedinica dohvaća instrukcija iz glavne memorije, dekodira ih i izvodi.
Instrukcije procesora obuhvaćaju elementarne aritmetičke ili logičke operacije, memorijske ili U/I
operacije, a izvode se u sklopovlju aritmetičko logičke jedinice.
Nakon dohvata iz memorije, instrukcija se sprema u instrukcijski registar (Instruction register, IR).
Programsko brojilo (program counter, PC), koji sadrži memorijsku adresu instrukcije koja će se
sljedeća izvesti. Većina procesora osim ova dva najvažnija registra, raspolaže i nizom registara opće ili
specifične namjene.
Unutarnje sabirnice povezuju elemente procesora. Podaci iz registara prije izvršavanja instrukcije
kopiraju se u privremene ulazne registre (A i B na slici), izravno povezane s sklopovima ALU. Nakon
izračuna rezultat se nalazi u privremenom izlaznom registru te se iz njega kopira u određeni odredišni
registar.
Većina instrukcija se može svrstati u dvije kategorije:
•
registar-memorija instrukcije kopiraju riječi (jedinični podaci procesora) iz memorije u registre
gdje se one koriste za instrukcije koje slijede, te kopiraju sadržaj registara u memoriju kao
pohranu rezultata instrukcije u memoriju.
•
registar-registar instrukcije obavljaju ciklus toka podataka (data path cycle): preuzimaju
sadržaj jednog ili dva registra, obavljaju određenu aritmetičku ili logičku operaciju i rezultat
pohranjuju u određeni odredišni registar.
1.3.2. Izvršavanje instrukcija
Izvođenje instrukcije može se podijeliti u maskimalno 7 koraka:
1. Preuzimanje iz memorije sljedeće instrukcije i smještanje u instrukcijski registar
2. Uvećanje programskog brojila, kako bi pokazivalo na sljedeću instrukciju
3. Određivanje tipa učitane instrukcije
9
4. Ukoliko instrukcija uključuje dohvat podataka iz memorije, određivanje adrese podatka
u memoriji
5. Ukoliko instrukcija uključuje dohvat podataka iz memorije, dohvaćanje podataka
6. Izvršavanje instrukcije i upis rezultata
7. Skok na korak 1 sljedeće instrukcije
Ovih sedam koraka čine proceduru koja je osnova rada svi procesora, a poznata je pod nazivom
preuzmi-dekodiraj-izvrši (fetch-decode-execute). Kod registar-registar instrukcija nema nema dohvata
iz memorije, pa se koraci 4 i 5 ne izvode.
Prva računala imala su mali i jednostavni skup instrukcija. S vremenom je s ciljem povećanja brzine
skup instrukcija proširen složenim instrukcijama (npr. instrukcije za rad s realnim brojevima u formatu
pomičnog zareza), ili su dvije instrukcije koje se često izvršavaju u slijedu dopunjene uvođenjem jedne
jedinstvene instrukcije.
Kako je pisanje programa za procesore različitih skupova instrukcija često neizvedivo, a uvijek
skupo, potrebno je osigurati kompatibilnost, kako bi nove generacije procesora mogle izvršavati
programe pisane za stare programe. Stupanj kompatibilnosti određuje pojam arhitekture računala,
uveden od IBM-a krajem pedesetih godina 20-og stoljeća. Skupina računala određene arhitekture
može se razlikovati po izvedbi i cijeni, ali sva mogu izvršavati program napravljen za danu arhitekturu.
Tehnikom interpretiranja omogućena je proizvodnja jednostavnih i jeftinih procesora koji su
izvršavali isti skup instrukcija kao i skupi i mnogo brži procesori koji sve instrukcije realiziraju
sklopovski.
Jednostavna računala s interpreterima imaju i druge prednosti:
•
pronalaženje neispravno implementiranih instrukcija;
•
jednostano dodavanje novih instrukcija;
•
strukturiran dizajn koji omogućuje efikasno unapređivanje, testiranje i
dokumentiranje.
1.3.3. RISC i CISC
Koncept dodavanja složenih instrukcija koje se ovisno o cijeni implementiraju hardverski ili
interpretiraju ima suprotnost u konceptu započetom 80-tih godina 20-og stoljeća, procesorima RISC i
MIPS serije.
Novi procesori imali su jako mali broj instrukcija (~50), koje su bile hardverski implementirane i
stoga brze. Složenije instrukcije nisu postojale, već su se zamjenjivale nizom postojećih instrukcija.
Po prvom primjerku, ovi su procesori prozvani RISC (Reduced Instruction Set Computer), a klasični
procesori nazvani su CISC (Complex Instruction Set Computer).
Iako je RISC koncept imao bolje performanse, nije eliminirao CISC zbog nemogućnosti prilagodbe
postojećeg softvera pisanog za rad na CISC platformi. Osim toga svi CISC procesori današnjice izvedeni
su na način da se najjednostavnije (ujedno i najčešće) instrukcije realiziraju sklopovski, a složenije
instrukcije se realiziraju na klasičan način, interpretiranjem. Ovakav hibridni pristup kombinacijom
RICS i CISC arhitekture omogućujue smanjenje brzinskog jaza između dvije tehnologije uz zadržavanje
potpune komaptibilnosti na ISA razini, čime se u potpunosti eliminiraju problemi s kompatibilnosti.
10
1.3.4. Trendovi razvoja procesora
Procesori koji su trenutno u razvoju redovito su RISC procesori, s evenutalno specifičnim dijelovima
dodanim zbog kompatibilnosti s zadanom arhitekturom.
Sve uobičajene instrukcije obavlja hardver. Složenije CISC instrukcije mogu se rastaviti na nekoliko
jednostavnih RISC instrukcija koje se izvršavaju u slijedu.
RISC koncept ima važnu dobru osobinu: instrukcije su kratke i brzo se dekodiraju, stoga svi današnji
procesori nastoje kroz standradizaciju i optimizaciju formata učiniti vrijeme dekodiranja što kraćim.
Program koji procesor izvodi zadan je slijedom instrukcija, koje bi se trebale izvoditi zadanim
redoslijedom, ali, ukoliko se neka instrukcija može izvesti nezavisno od ostalih, moguće je izvođenje
izvan reda, uz paralelno izvršavanje druga važna tehnologija za povećanje performansi procesora.
Razdvajanje izdvođenja instrukcije na 7 ili više faza najefikasnije se izvodi ukoliko su operandi
prisutni u registrima procesora, dakle pristup memoriji obavljaju izdvojene instrukcije LOAD i STORE, a
izbjegavaju se instrukcije koje sadržavaju dohvaćanje sadržaja memorije, koje je sporo i točno
nepredvidivog trajanja. Stoga je korisno da procesor raspolaže dovoljnim brojem registara.
Paralelno izvršavanje koristi se na svim novim procesorima, jer povećanje radnog takta kao način
ubrzavanja ima svoja realna ograničenja. Paralelizam se obavlja na dva opća načina: Paralelizam na
razini instrukcija nastoji u jedinici vremena pokrenuti što više instrukcija; Performanse određuje broj
instrukcija koje je moguće započeti u jedinici vremena, bez obzira koliko je vremena potrebno za
izvršavanje započetih instrukcija. Paralelizam na razini procesa je situacija kada više procesora/jezgri
izvršava jedan zadatak.
1.3.5. Paralelna obrada podataka
Vremenski najproblematičniji dio izvođenja instrukcije je dohvat iz memorije. Elementi za
umanjenje ovog problema postoje u skoro svim generacijama procesora. Starije generacije procesora
sadržavale su predohvatni spremnik (prefetch buffer), u koji su se instrukcija dohvaćale prije
izvođenja, ali zbog grananja, predviđanje instrukcija koje će procesor zatrebati u neposrednoj
budućnosti, jako je složeno te je kod najnovijh generacija procesora premašilo 90% preciznost.
Nakon dohvata instrukcije slijedi njeno izvođenje, koje se u procesorima s cjevovodom (pipeline)
dijeli u nekoliko do nekoliko desetaka faza, s ciljem da se svaka faza izvodi u zasebnom sklopovskom
bloku.
Slika 1.7. Procesor s cjevovodom duljine 5 faza
11
Ukoliko ciklus radnog takta traje 2 ns, za potpunu obradu instrukcije u pet faza potrebno je 10 ns.
Međutim, koncept cjevovoda omogućuje izvršavanje jedne instrukcije svake 2 ns. Općenito, procesor
od n faza, s vremenom ciklusa T, obrađuje jednu instrukciji u vremenu nT.
1.3.6. Superskalarna arhitektura
Dodavanje višetsrukih sklopva za obradu instrukcija logičan je korak u povećanju performansi
računala. Procesor ima jednu jedinicu za dohvat instrukcija, dok su ostali sklopovi udvostručeni.
Dvije instrukcije mogu se paralelno izvršavati samo ukoliko međusobno ne dijele registre ili rezultat
jedne nije parametar druge (npr. Intel Pentium procesor)
Slika 1.8. Superskalarni procesor s dva cjevovoda duljine pet faza
Ovakva organizacija omogućuje do dvostruko bolje performanse, ali se koncept ne razvija u smjeru
x4 ili x8 sklopva, jer je sklopovski jako složen za realizaciju, već postoji samo jedna linija obrade, a
udvostručuju se samo najvažniji sklopovi (aritmetičko-logičke jedinice, jedinice za pristup memoriji i
jedinice za rad s realnim brojevima. Ovakva organizacija temelj je modernih procesora (npr. Pentium2,
Pentium 4...) i naziva se superskalarnom arhitekturom procesora.
12
Slika 1.9. Superskalarna arhitektura procesora
1.3.7. Primarna memorija
Memorija računala sadrži program koji se trenutno izvodi i njegove podatke. Podaci u memoriji
spremaju se u binarnom formatu, u adresabilnim blokovima (memorijskim riječima) određene veličine
(jedan ili više okteta, k bita). Svakoj riječi pridružena je jedinstvena adresa duljine m bita, dakle
moguće je adresirati 2m memorijskih riječi. Primjerice, hipotetsko računalo koje sadrži memoriju od 12
okteta, omoguće je organizirati i na jedan od na tri načina:
Slika 1.10.: Primjeri organizacije 96 bita memorije
Memorijska riječ je najmanja adresabilna jedinica memorije, današnji procesori redovito imaju
memorijske riječi veličine 32 ili 64 bita, dok kod jednostavnijih arhitektura riječ može imati 8 ili 16
bita.
Okteti se u riječi mogu pakirati na dva različita načina: big endian i little endian:
Slika 1.11.: Little i Big endian organizacija memorije
1.3.8. Cache memorija
Memorija velike brzine i količine nije izvediva: brza memorija morala bi biti postavljena na sam
procesorski čip, pa bi postojalo ograničenje količine memorije, a ukoliko memorija ne bi bila
postavljena na čip, moguće bi bilo povećanje količine, ali veza procesor-memorija ne može biti
izvedena na velikoj brzini.
Procesori su uvijek brži od memorije, stoga, će se program na takvom procesoru izvoditi na jedan
od dva načina:
13
• Procesor kod nailaska na instrukciju čitanja iz memorije, započinje čitanje, i nastavlja s
izvođenjem sljedećih instrukcija. Ukoliko neka od tih instrukcija (što je vrlo vjerojatno) koristi
podatak koji se učitava iz memorije, procesor ee zaustavlja do završetka čitanja iz memorije.
• Procesor izvodi program koji je svjestan sporosti pristupa memoriji, a sastoji se od niza nop (No
OPeration) instrukcija koje nemaju korisnog efekta, osim što troše vrijeme procesora do kraja
čitanja iz memorije.
Oba navedena koncepta, iako različita imaju isti efekt: čekanje na sporu memoriju hardverskim ili
softverskim zaustavljanjem procesora.
Rješenje problema je korištenje male količine brze memorije na procesorskom čipu. Ova priručna
(cache) memorija sadrži kopije memorijskih riječi za koje se pretpostavlja da će ih procesor tražiti.
Ukoliko se traženi podaci uvijek nađu u priručnoj memoriji, spori pristup glavnoj memoriji uopće više
neće biti bitan. Punjenje priručne memorije podacima koje će procesor tražiti osniva se na principu
vremenske i prostorne lokalnosti (velika je vjerojatnost da će procesor pristupiti memorijskim
lokacijama kojima je nedavno pristupao kao i onima koje su blizu tih lokacija).
Priručna memorija je najčešće podijeljena na dio za kod i dio za podatke. Razlozi su bolji rezultati
kod korištenja više procesorskih jezgri, ali i bitno drugačija logika pristupa memorija kod dohvata
podataka i koda.
1.3.9. Ulazni i izlazni skolopovi
U/I sklopovi su temeljni dio osnovnog koncepta računala, od von Neumannovog modela do svih
računala današnjice koja su bazirana na tom modelu. Osnovni elementi računala integrirani su na
matičnoj ploči – tiskanoj ploči koja povezuje sve osnovne i dio dodatnih elemenata računala. Elementi
računala povezani su sabirnicama. Svaki U/I uređaj povezan je na određenu sabirnicu računala, ovisno
o tipu uređaja i njegovim karakteristikama. Svaki U/I uređaj posjeduje sučelje prema sabirnici
(kontroler U/I uređaja) koji upravlja uređajem i komunikacijom sa drugim sklopovi na matičnoj ploči
preko sabirnice. Veza uređaja na sabirnicu može biti odvojiva preko utičnica na matičnoj ploči ili trajna
veza tiskanim vodovima na matičnoj ploči.
Pozornost procesora, vanjski uređaji dobivaju korištenjem mehanizma prekida (interrupt). Svaki
uređaj povezan na matičnu ploču, može poslati signal prekida procesoru, nakon čega on prekida
trenutni slijed instrukcija i izvršava prekidni potprogram koji obavlja potrebnu operaciju (npr. prihvat
podataka od vanjskog uređaja) i vraća sa na izvođenje prekinutog slijeda instrukcija.
Uređaji koji zahtijevaju veliku brzinu prijenosa podataka u memoriju (npr. čvrsti disk) redovito
posjeduju mogućnost izravnog pristupa memoriji s minimalnim posredovanjem procesora (DMA –
Direct Memory Access), čime se procesor oslobađa jednostavnog kopiranja podataka između U/I
uređaja i memorije i angažira na složenijim poslovima.
Kako je sabirnica resurs dijeljen između procesora i priključenih uređaja, sklop za rukovanje
sabirnicom (bus abiter) dodjeljuje sabirnicu jednom od korisnika. U situaciji kada neki od uređaja
koristi sabirnicu, procesor ne može korsititi sve cikluse sabirnice, već samo dio ciklusa koje će mu
rukovatelj sabirnice dozvoliti nauštrb uređaja koji koriste sabirnicu. Ovaj postupak usporava rad tog
uređaja, a naziva se krađom ciklusa (cycle steeling).
14
Prva sabirnica koja je masovno korištena je ISA (Industry Standard Architecture), s vremenom
zamijenjena poboljšanjima i konačno PCI (Peripheral Component Interconnect) sabirnicom i njenim
poboljšanjima.
15
2. Razina digitalne logike
Razina digitalne logike osnovno je sklopovlje računala. Sva digitalna računala sagrađena su od
digitalnih elemenata čiji se rad opisuje Booleovom algebrom, koji su dio integriranih krugova LSI, VLSI i
složenijim sklopovima.
S elektroničkog gledišta, tranzistori kao osnovni elementi svakog dijela računala izabiru se ovisno o
zahtjevima na brzinu , potrošnju, zauzeće prostora i dr. Dvije tehnologije koje su u upotrebi su:
•
bipolarni tranzistori – TTL i ECL skupine omogućuju jako brzi rad ali imaju i veliku potrošnju
•
MOS tranzistori – PMOS, NMOS I CMOS skupine sporijih tranzistora iznimno male potrošnje
2.1.
Sklopovi za pomak
Ovi sklopovi obavljaju jednu od najjednostavnijih operacija procesora: binarni pomak
Slika 2.1.: Sklop za pomak jedno mjesto u lijevo ili desno
Ulazna vrijednost pomiče se za jedan bit u desno ili lijevo, ovisno o vrijednosti C bita (0 ~ pomak
ulijevi, 1 ~ pomak udesno). Kod pomaka, virtualni -1. i 9. bit su u nuli.
2.2.
Zbrajalo
Sklop zbrajala je osnovni aritmetički sklop aritmetičko-logičke jedinice procesora. Sklop zbrajala
temelji se na sklopu poluzbrajala koji ne uzima u obzir pretek kod zbrajanja i pretk na sljedeću lijevu
poziciju. Sklop potpunog zbrajala (full adder) za zbrajanje jednog bita sastoji se od dva poluzbrajala
(half adder) i generira rezultat u obliku dvije binarne vrijednosti: rezultat i pretek.
A
B
Suma
Pretek
0
0
1
1
0
1
0
1
0
1
1
0
0
0
0
1
16
A
B
Unos
Suma
Pretek
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
0
1
1
0
0
1
1
0
0
0
0
1
0
0
0
1
Slika 2.2.: Tablice i sheme sklopova poluzbrajala i zbrajala
Jednostavni prikazani sklop omogućuje zbrajanje jednog bita, te je u realnom sklopu procesora s
riječi npr. 32 bita potrebno koristiti ukupno 32 istovjetna bloka. Kako se zbrajanje obavlja bit po bit,
kompletna operacija je dugotrajna (zbrajalo s potpunim prijenosom, ripple carry adder), pa se
ubrzanje može postići dijeljenjm u dva bloka koji zbrajanje obavljaju paralelno, a konačni rezultat je
ispravan kada se zbrajanje dovrši u donjem bloku i eventualni pretek pribroji gornjem bloku.
...
2.3.
Aritmetičko logičke jedinice
Primjer izvedbe jednobitnog bloka jednostavne ALU koja može obavljati operacije A AND B, A OR B,
NOT B i A+B.
17
Figure 2.1.: Realizacija jednog bita jednostavne aritmetičko logičke jedinice
Ulazi F0 i F1 određuju jednu od četiri navedene funkcije koje ALU može obaviti. Ovisno o ulazima
samo jedan od izlaznih signala dekodera je u logičkoj jedinici, dok su svi ostali u logičkoj nuli.
A i B su ulazne varijable. ENA i ENB signali omogućuju da se signali A ili B postave u stanje O, INVA
omogućuje invertiranje ulaza ulaza A. Sklop logičke jedinice generira rezultat za sve podržane
operacije, a dekoder određuje rezulat koje operacije će se proslijediti na izlaz logičke jedinice.
Sklop potpunog zbrajala generira rezultat uključujući bit preteka sa niže pozicije i generirajući bit
preteka za višu poziciju.
Sklop 8-bitne ALU realizira se povezivanjem 8 istovjetnih jedinica:
Slika 2.3.: Realizacija 8-bitne ALU
Sklopu je dodan INC signal za dodavanje jedinice varijablama A ili B.
2.4.
Memorija
Pohrana jednog bita podataka moguća je korištenjem sklopa bistabila. Bistabili se kombiniraju u
veće sklopve koji pohranjuju jedan ili više okteta podataka:
18
Slika 2.4.: Integrirani krug za pohranu jednog okteta
Sklop prikazana na slici koristi 8 D bistabila za pohranu jednog okteta podataka. Taktni signal
spojen je na nožicu 11 integriranog kruga. Korišteni bistabili mijenjaju stanje na negativni impuls, ali
kako su spojeni na zajednički invertor (koji ima elektronički smisao pojačala, ali obavlja i logičku
inverziju), promjena stanja biti će moguća pri prijelazu taktnog signala iz nule u jedinicu. CLR signal
spojen na nožicu 1, omogućuje postavljanje postavljanje svih bistabila u stanje nula.
Organizacija veće količine memorije mora omogućiti efikasno adresiranje memorijskih riječi
određene veličine. Organizacijski model memorije koji prikazuje pohranu četiri 3-bitne riječi prikazan
je na sljedećoj slici:
Slika 2.5.: Organizacija memorije 4 x 3 bita
19
Operacija čitanja ili pisanja obavlja se odjednom na kompletnoj riječi. Memorija ima 8 ulaza: tri
podatkovna, (I0-I2), dva adresna (A0, A1) i tri upravljačka: CS (Chip Select) aktivira čip, RD (Read) za
odabir operacije čitanja/pisanja, OE (Output Enable) za prosljeđivanje pročitane vrijednosti na
sabirnicu. Tri izlaza su podatkovna (O0-O2).
Uz dodatne linije napajanja, dovoljno je 14 nožica za realizaciju integriranog kruga, u usporedbi s
20 nožica za realizaciju integriranog kruga s 8 D bistabila.
Četvora AND vrata odabiru jednu od četiri riječi (crvene linije). Kod upisivanja RD signal će biti u
nuli, te će CSxRD’ signal uzlaznim bridom preko taktnog ulaza upisati podatke dovedene na
podatkovne ulaze u bistabile izabranog retka. Kod čitanja, CSxRD’ je u nuli, pa upis nije moguć, ali je
CSxRDxOE je u jedinici i omogućuje prosljeđivanje izlaza iz bistabila na izlaz memorije.
Radi jednostavnosti, ulaz i izlaz iz memorije su prikazani odvojeno, ali u realnom sklopu spojeni su
zajedno i čine podatkovnu sabirnicu, a neinvertirajući bufferi omogućuju galvansko razdvajanje kod
čitanja pisanja, korištenjem signala OE.
2.5.
RAM i ROM memorije
Memorije koje omogućavaju čitanje i pisanje nazivaju se RAM (Random Access Memory), memorije
s slobodnim pristupom. Memorije ovog tipa izvode se kao jedna od dvije strukture:
Statička RAM memorija (SRAM) sastoji se od najčešće D bistabila i prikazana je u prethodnom
poglavlju. Ovaj tip memorije jako je brz (vrijeme pristupa je u rangu ns).
Dinamička RAM memorija (DRAM) organizirana je kao niz ćelija koje se sastoje od kondenzatora i
tranzistora. Stanje kondenzatora izražava pohranjeni bit: 0 ili 1. Kako naboj u kondenzator s
vremenom slabi, mora se osvježavati, potrebni su dodatni sklopovi za osvježavanje memorije, ali je
sveukupno memorija dosta jednostavnija i omogućuje znatno veći kapacitet i nižu cijenu. Pristup
DRAM memoriji dosta je sporiji (u rangu desetina ns).
Postoje više različitih izvedbi DRAM memorije:
• FPM (Fast Page Mode) je najstarija izvedba memorije...
• EDO (Extended Data Output) omogućuje započinjanje novog ciklusa čitanja/pisanja u memoriju
prije završetka prethodnog ciklusa.
• SDRAM (Synchronous) kombinira elemente statičkih memorija i radi sinhrono s radnim taktom
računala. Sinhronost eliminira upravljačke signale i potrebu čekanja procesora na memoriju, već
procesor unaprijed zna nakon koliko taktova će podaci biti dohvaćeni iz memorije.
• DDR (Double Data Rate) je poboljšanje SDRAM memorijskog sučelja radom na oba brida taktnog
signala, čime se udvostručuje brzina komunikacije s memorijom.
Memorije čiji sadržaj je trajno upisan i nepromjenjiv, a koje zadržavaju ga i nakon prestanka
napajanja su ROM (Read Only Memory). Ova memorija postoji u različitim izvedbama, ovisno o
načinu upisa sadržaja:
• PROM krugovi omogućavaju jedno upisivanje električnim putem umjesto mehaničkog upisivanja
tijekom proizvodnje
• EPROM (Erasable Programable) krugovi omogućavaju brisanje UV svjetlom
• EEPROM (Electrical Erasable) krugovi omogućavaju brisanje električnim putem po bitovima
20
• FLASH krugovi omogućavaju brisanje električnim putem po blokovima
2.6.
Procesori i sabirnice
Svi suvremeni procesori integrirani su na jednom integriranom krugu, čime se njihova komunikacija
s ostatkom računala može standardizirati. Dio nožica procesora služi za prijenos izlaznih signala, dio za
ulazne signale, a dio za ulazne ili ulazne signale, ovisno o konfiguraciji.
Podatkovni signali mogu se podijeliti u tri skupine: adresni, podatkovni i upravljački signali. Svi
izvodi spajaju se s odgovarajućim izvodima memorijskih sklopova pomoću skupa paralelnih linija –
sabirnicama (bus). Pristup memoriji obavlja se u tri koraka:
• procesor postavlja adresu memorijske lokacije na adresne izvode;
• upravljačkim signalima procesor određuje da li zahtijeva operaciju čitanja ili pisanja
• ukoliko se radi i operaciji čitanja, nakon njenog završetka, pročitani podaci će se naći na
podatkovnim izvodima procesora
• ukoliko se radi o operaciji pisanja, procesor će podatak za upis postaviti na podatkovne izvode i
nakon završetka operacije upisa podaci će biti upisani na memoriju
Broj linija za podatke i adrese ima velik utjecaj na performanse i cijenu procesora i računala:
•
procesor s m adresnih linija može adresirati 2m memorijskih lokacija. Uobičajene vrijednosti
su 16, 32 ili 64.
•
procesor s n podatkovnih linija može u jednoj operaciji pročitati ili upisati n bita. Uobičajene
vrijednosti su 8, 16, 32, 36 ili 64 bita.
Upravljačke linije sinhroniziraju protok podataka između procesora i memorije.
Osim navedenih linija procesor sadrži i linije za napajanje naponom 5V, 3,3V ili nižim, te taktnim
signalom.
Upravljačke signale moguće je podijeliti u četiri važne skupine:
• Upravljanje sabirnicom
• Sistemski prekidi
• Arbitiriranje magistrale
• Status
Izvodi za upravljanje sabirnicom prenose upravljačke signale od procesora ka sabirnici, odnosno
spojenim memorijama I U/I sklopovima
Izvodi za sistemske prekide su ulazi za signale koje procesoru šalju U/I sklopovi kada ga žele
obavijestiti o promjenama u svojem stanju
Izvodi za arbitriranje sabirnice omogućuju reguliranje prometa na sabirnici između priključenih
uređaja.
Statusni izvodi omohućuju slanje i primanje informacija o statusu procesora ili U/I uređaja (npr.
RESET).
21
Sabirnica je električna veza više uređaja. S obzirom na funkciju, sabrinice mogu biti unutarnje
(unutar procesora) ili vanjske (veza procesora i/ili uređaja računala). Prva računala imala su 50-100
bakrenih vodova koja su služila za povezivanje procesora, memorije i U/I uređaja. S vremenom se
komunikacija s memorijom izdvojila na zasebnu bzu sabirnicu.
Protokol sabirnice (bus protocol) standardizira rad sabirnice i uz specifikaciju ožičenja omogućuje
spajanje raznorodnih uređaja na sabirnicu.
Uređaji povezani na sabirnicu mogu biti aktivni (master, iniciraju prijenos podataka) ili pasivni
(slave, aktiviraju se na zahtjev aktivnog uređaja). Svi uređaji, osim memorije, mogu raditi u oba moda
rada, npr. upravljač čvrstog diska se ponaša kao pasivni uređaj kada od procesora primi nalog za
čitanje s diska, a zatim postaje aktivan kada od memorije traži zapisivanje pročitanih podataka.
Kako je sabirnica u računalnim pojmovima dug i opterećen sustav s mnogo priključenih uređaja,
veza aktivnih uređaja na sabirnicu obavlja se preko predajnika sabirnice (bus driver) čija je uloga
pojačavanje signala. Veza pasivnih uređaja je preko prijemnika sabirnice (bus receiver), a
kombiniranih uređaja preko integriranog sklopa primopčredajnika sabirnice (bus transciever). Svi
navedeni sklopovi su sklopovi s tri stanja.
Sabirnica, slično procesoru, ima uz linije napajanja, linije za podatke, adrese i upravljanje.
2.7.
Širina sabirnice
Širina sabinrnice, kao i kod procesora ima veliki utjecaj na preformanse računala, ali ograničavajući
faktor je i ovdje cijena i mogućnCost izvedbe zbog velikog broja linija.
Propusni opsega sabirnice može se povećati prijenosom većeg broja bitova po taktnom signalu,
dok je povećanje radnog takta limitirano dužinom sabirnice. Nemoguće je postići jednaku duljinu svih
linija sabirnice, te se kod većih duljina linija i visokih radnih taktova pojavljuje problem nesimetričnosti
signala sabirnice (bus skew).
Sinhrone sabirnice (synchronous bus) povezane su s generatorm takta računala, te svaka aktivnost
na sabirniocu traje cijeli broj taktova sabirnice (bus cycle).
Asinkrone sabirnice nemaju stabilan radni takt, aktivnost traje proizvoljan vremenski interval.
Primjer vremenskog vođenja najvažnijih signala sabirnice prikazan je na slici:
Slika 2.6.: Vremensko vođenje signala sabirnice
22
Sabirnica radi na taktu 100 MHz/10 ns, uz 1ns trajanje uspona/pada signala, dok čitanje iz
memorije traje 15 ns. Čitanje riječi iz memorije obavlja se u tri ciklusa. Prvi ciklus započinje nailaskom
uzlazne ivice signala T1, a treći završava uzlaznom ivicom signala T4.
Na početku T1 procesor postavlja adresu tražene riječi na adresne linije. Adresa na sabirnici
prikazana je s dvije linije, križanje linija označava izmjenu adrese, a osjenčana područja označava
invalidnost podataka (npr. stanje podatkovne sabirnice prije dohvata iz memorije).
Signali RD (Read) signal označava operaciju čitanja, nasuprot negiranoj vrijednosti koja označava
operaciju pisanja.
Od trenutka kada se vrijednost adrese stabilizira na sabirnici, potrebno je 15ns do isporučivanja
podataka na podatkovnoj sabirnici. Adresa se stabilizira unutar prvog ciklusa radog takta, dakle podaci
se sigurno ne mogu pročitati tijekom drugog ciklusa (potrebno je minimalno 15ns), pa tijekom tog
perioda memorija drži aktivnim signal WAIT’, a procesor ubacuje stanje čekanja (wait states). Nakon
isteka perioda 15ns, WAIT signal se deaktivira i počinje čitanje podataka. Tijekom prve polovine takta
T3 memorija postavlja podatke na podatkovnu sabirnicu. U trenutku silazne ivice T3 procesor čita
podatke iz memorije i deaktivira signala MREQ’ i RD’.
Vremena na dijagramu imaju značenje:
• TAD je interval između uzlazne ivice T1 i stabilizacije adrese (4ns)
• TDS je interval od dohvata podataka iz memorije do silazne ivice T3 (2ns)
Dakle, od trenutka pojavljivanja adrese potrebno je maksimalno 19 ns za isporuku podataka, a
realno potrebno je do 10ns.
2.8.
Arbitriranje sabirnice
Mehanizam arbitriranja sabirinicom omogućuje uređeni pristup više uređaja sabirnici. Kod
jednostavnog centraliziranog pristupa prikazanog na slici jedan uređaj (arbitar sabirnice) određuje
uređaj koji će sljedeći dobiti pristup sabirnici.
Figure 2.2.: Arbitriranje sabirnice
Sabirnica ima jednu liniju za zahtijevanje pristupa na koji su povezani svi uređaji u OR načinu. Kada
arbitar dobije signal za zahtjev pristupa, on daje dozvolu slanjem signala na vod na koji su vezani svi
uređaji. Najbliži uređaj nakon prijema signala prvojerava da li je on poslao zahtjev. Ukoliko jest,
pristupa sabirnici, ukoliko ne, dozvolu prosljeđuje susjednom uređaju.
Kod decentraliziranog pristupa postoji veći broj priotiriziranih vodova za zahtijevanje pristupa, koje
prate svi uređaji. Na kraju svakog ciklusa svaki uređaj zna da li je njegov zahtjev trenutno najvećeg
prioriteta, pa može pristupiti sabirnici.
23
Nakon dobivanja pristupa, uređaji sabirnicom prenose riječ po riječ, ili efikasnije, blokove riječi
određene veličine. Kada započne čitanje bloka podataka, glavni uređaj na sabirnici najprije pasivnom
uređaju šalje veličinu bloka podataka, a nakon toga šalje po jednu riječ po ciklusu do isporuke cijelog
bloka. Primjer ovakvog prijenosa četiri riječi prema memoriji prikazan je na sljedećoj slici:
Figure 2.3.: Prijenos bloka
Block signal naznačuje da se radi prijenosu bloka podataka. Prva riječ u bloku nije podatak već broj
riječi u bloku. MREQ signal označava komunikaciju s memorijom za razliku od memorijski preslikanih
U/I uređaja kada nije aktiviran.
Signali sistemskih prekida, preko kojih U/I uređaji zahtijevaju pozornost procesora, također se
prenose sabirnicom. Kako je U/I uređaja također veći broj, arbitriranje je i ovdje važno. Rješenje u
ovom slučaju je prioritiziranju uređaja i korištenju centraliziranog arbitriranja. Uređaji ovog tipa
postoje kao standardni integrirani sklopovi, npr. Intel 8259A za PC:
Slika 2.7.: Organizacija prekidnog sustava računala
Do osam U/I uređaja može se povezati na osam ulaznih linija prekidnog kontrolera. U/I uređaji
izazivaju prekid slanjem signala (impulsa) prekidnom linijom. Ukoliko dva uređaja zatraže prekid
24
istovremeno, prednost dobiva uređaj višeg prioriteta (što je obično uređaj nižeg IRQ broja). Kada
procesor prekine tekući posao, može započeti obradu prekida, te šalje signal INTA (Interrupt
Acknowledge). Sada interrupt kontroler šalje redni broj uređaja koji je izazvao prekid, koji se koristi u
nastavku obrade prekida U/I uređaja.
2.9.
PCI sabirnica
PCI (Peripheral Computer Interconnect) sabirnica je masovno korištena sabirnica skoro 20 godina.
Širine je 32 bita, takt 33MHz, s dvostrukom širinom i brzinom u novijim izvdebama.
Slika 2.8.: Računalo temeljeno na PCI sabirnici
Jedna od izvedbi računala prikazana je na slici. PCI sabirnica koristi se za sabrinicu srednje brzine.
Komunikacija prema memoriji je preko specifične brze sabirnice, slično je i s grafičkim sustavom, a PCI
se koristi za ATA, USB i SCSI sučelja. Krug mosta je najvažniji dio računala uz procesor. Vanjski uređaji
male brzine (spojeni su najčešće preko USB sabirnice) i čine sabirnicu male brzine.
PCI je sinhrona magistrala, sve transakcije odvijaju se između glavnog i sporednog uređaja. Prije
korištenja, uređaj ”preuzima” sabirnicu. Arbitriranje na PCI sabirnici je centralizirano:
25
Slika 2.9.: Arbitriranje na PCI sabirnice
Svaki PCI uređaj koristi dvije linije:
• REQ# (request), za zahtjev pristupa, i
• GNT# (grant), dozvolu arbitra za korištenje sabirnice.
PCI uređaj, pri čemu se i procesor smatra jednim od njih, šalje signal REQ. Nakon dozvole od arbitra
uređaj počinje koristiti sabirnicu već od sljedećeg ciklusa taktnog signala. Algoritam po kojem radi
arbitar nije određen PCI specifikacijom, ali mora osigurati efikasno korištenje sabirnice i minimalno
čekanje uređaja.
Arbitar može deaktivirati GNT signal i prije no uređaj završti započeti prijenos, stoga uređaj mora
nadgleadati GNT signal i osloboditi sabirnicu kada se on deaktivira. Ovakva organizacija omogućuje
duge neprekinute prijenose kada samo jedan uređaj zahtijeva sabirnicu, ali istovremeno omogućuje
brzu reakciju na zahtjev drugih uređaja (najčešće je procesor taj koji prekine prijenose drugih
uređaja).
2.9.1. Signali PCI sabirnice
Signal CLK je taktni signal. Transakcija započinje na silaznom bridu taktng signala. 32 AD signala
prenose multipleksirano adrese i podatke, adresa u prvom, a podaci u trećem ciklusu. Signal C/BE#
tijekom prvog ciklusa sadrži informaciju da li se radi o prijenosu riječi ili bloka, a tijekom drugog ciklusa
prenosi 4-bitnu bitmapu koja određuje validne oktete iz riječi ukoliko se prenosi samo dio riječi.
• FRAME# signalom glavni uređaj započinje transakciju obaviještavajući sporedni uređaj da su
adrese i naredbe sabirnici spremni.
• IDSEL (ID select) signal je zahtjev za čitanjem konfiguracijskog prostora uređaja. Svaki PCI uređaj
ima 256 okteta memorije koja sadrži njegove konfiguracijske parametre koje mogu čitati drugi
uređaji. Na taj način moguće je ispravno konfiguriranje uređaja nakon spajanja na sabirnicu.
• DEVSEL je signal koji šalje sporedni uređaj obavještavajući da je postavio na sabirnicu ispravnu
adresu.
• TRDY (transmission ready) signal podređeni uređaj stavlja kada je postavio podatke na sabirnicu,
ili da je spreman na prijem podataka od glavnog uređaja.
• STOP signal šalje sporedni uređaj kada zbog nepredviđenih okolnosti želi prekinuti transakciju.
• SERR (system error) signalom dojavljuju se sistemske ili greške pri adresiranju.
• RST signal je oznaka sistemskog reseta i vraća sve uređaju u početno stanje.
Signal
Vodova
Glavni/sporedni
uređaj
CLK
AD
PAR
C/BE
FRAME#
1
32
1
4
1
Glavni/Sporedni
Glavni
Glavni
Glavni
Glavni
IRDY#
1
Glavni
Opis
Radni takt (33/66 MHz)
Multipleksirane adrese i podaci
Paritetni bit
Naredba sabirnici / validni okteti
Ispravnost signala AD i C/BE
Prihvat od glavnog uređaja (čitanje) / Ispravnost podataka
(pisanje)
26
IDSEL
DEVSEL
TRDY#
STOP#
PERR#
SERR#
REQ#
GNT#
RST#
1
1
1
1
1
1
1
1
1
Glavni
Sporedni
Sporedni
Sporedni
Odabir konfiguracijskog prostora / memorije
Sporedni uređaj je dekodirao vlastitu adresu
Ispravnost podataka (čitanje) / prihvaćanje podataka (pisanje)
Sporedni uređaj prekida transkaciju
Primatelj je detektirao pogrešku u prijenosu
Greška u prijenosu adrese i sistemska greška
Arbitriranje: zahtjev
Arbitriranje: dozvola
Ponovno pokretanje sustava
Tablica 2.1.: Glavni signali PCI sabirnice
2.9.2. Arbitriranje PCI sabirnice
Slika 2.10. Transakcije na PCI sabirnici
Tokom silaznog brida ciklusa T1 vlasnik sabirnice postavlja adresu na AD linije, a naredbu na C/BE
liniju. FRAME signalom započinje transakcija. Tijekom ciklusa T2 glavni uređaj slobađa sabirnicu, a
tijekom T3 preuzima je sporedni uređaj. CB/E ? nejasno. Tijekom ciklusa T3 sporedni uređaj šalje
DEVSEL signal kao potvrdu glavnom ureađaju da je odabran. TRDY signal sporedni uređaj postavlja
kada ima spremne podatke za slanje, a do tada umeće stanja čekanja. Počevši od T5, glavni uređaj
započinje novu operaciju upisivanja, postavljanjem adrese i komande na sabirnicu. U ovom ciklusu
glavni uređaj šalje i podatke, bez potrebe za paznim ciklusom jer nema izmjene vlasnika sabirnice. U
T7, memorije prihvaća podatke.
2.10.
U/I sklopovi
Kako je prikazano u primjeru računala temeljenog na PCI sabirnici, ono se sastoji od procesora,
memorijskog sklopa i različitih U/I uređaja (upravljači diskova, grafički podsustav, USB sučelje, itd).
27
Primjeri jednostavnih U/I uređaja su UART (Universal Asynchronous Receiver Transmitter), sučelje
za serijsku komunikaciju sa sporim uređajima koji podatke preko sabirnice prenosi u oktetima ili PIO
(programmed input-output) sklop koji ima 24 TTL ulaza/izlaza koje procesor računala može čitati ili
postavljati.
Slika 2.11.: PIO sklop 8255A
24 bitni priključci podijeljeni su u tri okteta, koji su povezani s oktetnim registrima koji sadržavaju
proočitanu ili vrijednost koja se upisuje na priključak. 8 vodova povezuje sklop na sabirnicu: vodovi za
odabir (CS) vodovi za čitanje i pisanje (WR, RD), RESET, adresni i podatkovni vodovi. Adresni vodovi
odabiru jedan od četiri registra kojima se pristupa: tri su vezana na priključke, a jedan je statusni, te
određuje mod rada uređaja.
2.10.1. Dekodiranje adresa
Kako je do sada prikazano, U/I uređajima pristupa se slično kao i memoriji. Razmotrimo primjer 16bitnog računala s PIO integriranim krugom i memorijama:
• EPROM za pohranu programa veličine 2 kB,
• RAM za pohranu podataka veličine 2 kB.
PIO sklop se može integrirati u računalo na dva načina:
• Kao klasični U/I uređaj, uz postojanje posebnih vodova sabirnice za odabiranje uređaja.
• Kako memorijski-preslikani U/I uređaj, uz postojanje 4 okteta rezervirana u memoriji za tri
priključka U/I uređaja i upravljački registar.
Kako je računalo 16-bitno, ukupan mogući adresni prostor iznosi 216=64 kB. Memorijski prostor
moguće je organizirati na način:
• EPROM zauzima memorijski prostor 0-2 kB;
• RAM zauzima memorijski prostor 32-34 kB;
• PIO sklop zauzima zadnja 4 okteta adresnog prostora (65532 – 65535):
28
Slika 2.12.: Primjer organizacija adresnog prostora računala
U ovakvom rasporedu, EPROM adrese se nalaze u rasponu 0x00 - 0x7FF (0b 0000 0111 1111 1111),
tj. EPROM adrese nalaze se u adresno prostoru s binarnim nulama u pet najviših bitova. Na taj način,
izvod za biranje EPROM memorijskog kruga moguće je realizirati OR vratima s 5 ulaza, koji će
generirati CS’ signal.
RAM adrese nalaze se u rasponu 0b 1000 xxxx xxxx xxxx, pa se aktiviranje može obaviti na sličan
način.
Dekodiranje PIO sklopa nešto je složenije, jer je adresni raspon 0b 1111 1111 1111 11xx.
Drugi, jedostavniji pristup je korištenje činjenice da samo EPROM adrese imaju MSB bit u nuli, pa
se on izravno može koristiti kao CS’ signal, RAM memorije nalaze se na adresama koje započinju s
0b10, a PIO adrese započinju s 0b11.
29
Slika 2.13.: Potpuno i parcijalno dekodriranje adresa
Pojednostavljeni pristup naziva se parcijalnim dekodiranjem adresa. Prednost jednostavnosti,
onemogućuje proširivanje računala drugim tipovima memorije, a problem može nastati i što je vrlo
lako pristupiti nekorištenom adresnom prostoru.
30
3. Razina mikroarhitekture
Iznad razine mikroarhitekture nalazi se razina mikroarhitekture. Zadatak ove razine ja
implementacija razine arhitekture skupa instrukcija ISA (Instruction Set Architecture). Dizajn razine
mikroarhitekture ovisi o arhitekturi skupa intrukcija koju treba implementirati, traženoj cijeni i
performansama računala.
Većina današnjih ISA arhitektura, posebno RISC tipa, sadrže jednostavne instrukcije koje je moguće
izvršiti unutar jednog ciklusa radnog takta. Složenije ISA arhitekture (npr. Intel Pentium) zahtijevaju
više ciklusa za izvršavanje više ciklusa za izvršavanje samo jedne instrukcije. Izvršavanje instrukcije
uključuje nekoliko operacija: dohvat operanada iz memorije i čitanje, dekodiranje i izvođenje zadane
aritmetičke ili logičke operacije te konačno zapisivanje rezultata natrag u memoriju. Određivanje
redoslijeda operacija unutar instrukcije značajno je drugačije od rukovanja instrukcijama na ISA razini.
3.1.
Primjer mikroarhitekture
Za primjer razmatranja mikroarhitekture uzeti ćemo jednostavni skup instrukcija za rad s cijelim
brojevima IVM (Integer Virtual Machine), kao primjer ISA razine. Osnova svake mikroarhitekture je
mikroprogram, sadržan u ROM memoriji, čiji je zadatak preuzimanje, dekodiranje i izvršavanje IVM
instrukcija. Mikorprogram sadrži niz varijabli stanja koje su dostupne svim instrukcijama koje se
izvode. Primjer ove varijable stanja je programsko brojilo (PC, program counter), koje pokazuje ne
adresu sljedeće instruckcije koju treba izvršiti.
IVM instrukcije su kratke, svaka ima nekoliko polja, svaka sa specifičnom svrhom. Obvezno polje je
operacijski kod (operation code, opcode), koji identificira instrukciju, npr. ADD, BRANCH, itd. Većina
instrukcija imaju i polje za operand, npr. memorijsku adresu.
Model izvršavanja ISA instrukcija naziva se ciklusom preuzmi-izvrši (fetch-execute). Putanja
podataka (datapath) je dio procesora koji sadrži aritmetičko-logičku jedinicu te njezine ulaze i izlaze.
Primjer putanje podataka korišten u ovom poglavlju prikazan je na sljedećoj slici:
31
Slika 3.1.: Primjer mikroarhitekture
Putanja podataka prikazana na slici sadrži niz 32-bitnih registara simboličnih imena, npr. PC, SP, itd.
Većina registara može svoj sadržaj postaviti na sabirnicu B. Izlaz iz ALU ulaz je u sklop pomaka ili
sabirnicu C. Sadržaj sabirnice C moguće je upisati istovremeni u jedan ili više registara povezanih na
nju.
ALU jedinica ima dva ulaza: A povezan na registar H i B koji je vezana na sabirnicu preko koje može
preuzeti sadržaj bilo kojeg od devet registara. Registar H može se popunitit ukoliko se odabere ALU
funkcija koja će samo propuštati signal s sabirnice B do izlaza iz ALU, npr. sumiranje ulaza ALU, pri
32
čemu je ENA ulaz negiran, pa je ulaz A uvijek u nuli. Dodavanjem nule na sabirnicu B dobija se
vrijednost s sabirnice B, koja se može propustiti kroz sklop pomaka i smjestiti u registar H.
Osim navedenih funkcija, izlazom iz ALU može se nezavinso upravljati i pomoću dva upravljačka
signala: SLL8 i SRA1:
• SLLB (Shift Left Logical) pomiče sadržaj ulijevo za 8 mjesta, a ispražnjenih 8 LSB bitova postavlja
u nulu.
• SRA1(Shift Right Arithmetic) pomiče sadržaj udesno za jedno mjesto, bez izmjene MSB bita.
Moguće je istovremeno čitanje i pisanje u registar, npr. moguće je poslati sadržaj SP na sabirnicu B,
oenemogućiti ulaz A ALU, aktivirati signal INC i smjestiti rezultat u SP, čime se SP uvećava za 1.
Naravno, čitanje i pisanje obavljaju se u različitim vremesnkim trenucima, jer drugačije nije ni moguće.
Kada se registar odabere kao desni ulaz u ALU, njgiova vrijednost stavlja se na sabirnicu B i tu ostaje
tijekom cijelog ciklusa. ALU jednica, nakon obavljanja operacije, generira rezultat koji preko sklopa
pomaka dolazi do sabirnice C i jednog ili više registara, uključujući i registar koji je generirao ulazne
podatke za ALU.
Pri svakom otkucaju radnog takta generira se kratki impuls, nakon čega se aktiviraju skopovi koji
čine putanju podataka (dw). Nakon toga se bira registar čiji će se sadržaj propustiti na sabirnicu B i
sadržaj mu se postavlja na sabirnicu (dx). ALU i sklop pomaka trebaju vrijeme dy za generiranje
rezultata. Vrijem dz potrebno je prijenos rezultata do odredišnog registra. Prijenos iz registra u
memoriju moguć je tijekom slijedeće uzlazne ivice taktnog signala, tijekom koje se izvorišni registar
odvaja od sabirnice B.
Svaki element putanje podataka zahtijeva određeno vrijeme rada, te je potrebno strogo vremensko
usklađivanje u skladu s kašnjenjem koje svaki element unosi kako bi putanja podataka ispravno
funkcionirala.
3.2.
Rad memorije
Predstavljeni model računala komunicira s memorijom 32-bitnom sabirnicom za adresiranje
memorijskih riječi podataka i 8-bitnom sabirnicom za adresiranje memorijskih okteta instrukcija.
Adresiranje riječi podataka obavlja se pomoću dva 32-bitna registra MAR (Memory Adrress Register) i
MDR (Memory Data Register). Adresiranje okteta instrukcija obavlja se pomoću PC (Program Counter)
registra, koji učitava oktet podataka u 8 najnižih bita registra MBR. Podatke u memoriji je moguće
mijenjati, dok se instrukcije mogu samo pročitati iz memorije.
Svakim od navedenih registara upravlja jedan ili dva upravljačka signala. Neispunjena strelica
označava signal koji šalje sadržaj registra na sabirnicu B. Puna strelica označava signal koji prima
sadržaj sa sabirnice C u registar.
Operacija čitanja ili pisanja u memoriju obavlja se upisivanjem sadržaja u odgovarajuće memorijske
registre, nakon čega se memoriji šalje signal za čitanje ili pisanje.
Fizička implementacija memorije je 8-bitna, ali se dohvaćanje 32 bitni riječi omogućuje
jednostavnom metodom. Ukupno je moguće adresirati 232 okteta podataka ili 230 32-bitnih riječi. 32bitna adresa se pomiče za dvije pozicije ulijevo, a MSB i MSB+1 bitovi se postavljaju u nulu, primjerice
adresa 1 prevodi se u adresu 4, adresa 2 u adresu 8, itd. Instrukcije se iz memorije dohvaćaju u
oktetima i spremaju u registar MBR.
33
3.3.
Mikroinstrukcije
Upravljanje putanjom podataka zahtijeva ukupno 29 signala iz ukupno pet skupina:
• Devet signala za upravljanje upisivanjem podataka s sabirnice C u reguistre
• Devet signala za upravljanje pražnjenjem registara na sabirinicu B, koja je ulaz u ALU.
• Osam signala za upravljanje radom ALU i sklopa pomaka.
• Dva signala za razlikovanje operacije čitanja/pisanja u memoriju preko MAR/MDR registara.
• Jedan signal za označavanje operacije čitanja iz memorije preko PC/MBR registara.
29 navedenih signala određuju operacije tijekom jednog ciklusa putanje podataka. Ciklus se sastoji
od propuštanja vrijednosti iz odabranog registra na sabinricu B, prolaska signala kroz ALU i sklop
pomaka, prosljeđivanja na sabinricu C i konačnog zapisivanja u odredišni registar. Osim toga, pšostoji
signal za čitanje podataka iz memorije, operacija s memorijom započinje na kraju ciklusa putanje
podataka, pošto je registar MAR učitao vrijednost. Podaci iz memorije raspoloživi su na samom kraju
naredog ciklusa u registru MBR ili registru MDR i mogu se upotrijebiti u narednom ciklusu, odnosno
operacija čitanja podataka iz memorije preko bilo kojeg priključka koja je započeta na kraju ciklusa k,
daje podatke koji se ne mogu iskoristiti u ciklusu k+1, već samo u ciklusu k+2 ili kasnijima. Signali za
upravljanje memorijom ne generiraju se u prvom sistemskom ciklusu sve dok registri MAR i PC ne
učitaju vrijednist na uzlaznoj ivici signala, pred kraj prvog ciklusa. Memorija svoje podatke postavlja na
memorijsku sabirnicu u toku jednog ciklusa tako da regiustri MBR i/ili MDR mogu učitati vrijednosti pri
nailasku sljedeće uzlazne ivice signala radnog takta, paralelno s drugim regustrima.
Drugim riječima, podatci se učitavaju u registar MAR pri kraju ciklusa putanje podataka, nakon čega
odmah započinje memorijska operacija. Zbog sporosti memorije, nije realno očekivati da će podaci
pročitani iz memorije biti upisani u MDR na početku idućeg ciklusa. Jedan ciklus putanje podataka
mora se nalaziti između operacije čitanja podataka iz memorije i korištenja pročitanih podataka.
Registri MDR i MBR učitavaju vrijednosti pri uzlaznom bridu taktnog signala, a sadržaj zadržavaju
sve do sljedeće operacije čitanja. Sadržaj sabirnice C može se upisati u više registara istovremeno, ali
naravno, sadržaj više registara ne može se upisati na jedni sabirnicu C.
24 opisana signala koriste se za upravljanje putanjom podataka tijekom jednog ciklusa. Važan dio
upravljanja odnosi se i na sljedeći ciklus toka podataka. Konačni izgled formata mikroinstrukcije
prikazan je na slici:
Ukupno 36 signala podijeljeno je u šest grupa:
• Addr – Adrese sljedeće potancijalne mikroinstrukcije
• JAM – Način biranja sljedeće mikroinstrukcije
• ALU – funkcija aritmetičko-logičke jedinice
• C – Biranje registara za upisivanje podataka s sabirnice C
• Mem – Funkcije za rad s memorijom
• B – Biranje izvora podataka za sabirnicu B
34
3.4.
Upravljanje mikroinstrukcijama
Signali koji upravljaju radom putanje podataka generira sklop sekvencera (sequencer). On mora
tijekom jednog ciklusa putanje podataka osigurati dva skupa informacija:
Stanje svakog upravljačkog signala u sustavu
Adresu mikroinstrukcije koja je sljedeća u redu za izvršavanje
Razrađena slika mikroarhitekture za prikazani model procesora sastoji se od putanje podataka i
upravljačkog dijela:
Slika 3.2. Potpuni blok dijagram mikroarhitekture
Najvažniji element upravljačkog dijela procesora je upravljačka memorija (control store), koja
pohranjuje mikroinstrukcije. U našem primjeru veličine je 512 36-bitnih riječi, svaka riječ odgovara
35
jednoj mikroinstrukciji čiji je format već prikazan. Iako je i upravljačka memorija memorija u klasičnom
smislu, glavna razlika je u načinju izvršavanja instrukcija i mikroinstrukcija: instrukcije u radnoj
memoriji računala izvode se adresnim redoslijedom, osim kod grananja, dok se mikroinstrukcije
izvršavaju znatno drugačijim redoslijedom. Uvećanje vrijednosti programskog brojila za jedan
označava pomak na sljedeću instrukciju u radnoj memoriji, dok je u mikroprogramu zahtijevana veća
fleksibilnost jer su nizovi mikroinstrukcija u pravilu kratki pa se nakon svake mikroinstrukcije izvodi
točno poznata mikroinstrukcija, a ne ona koja slijedi u mikroprogramskoj memoriji. Mikroprogramska
memorija je također memorija za čitanje, pa joj se pristupa preko adresnog registra MPC – brojila
mikroinstrukcija (microinstruction counter), pri čemu, kako je kazano brojač u imenu je samo radi
ekvivalencije s programskim brojilom, jer se instrukcije dohvaćaju eksplicito, a ne slijedno.
Mikroinstrukcije se tijekom izvođenja pohranjuju u registru mikroinstrukcija MIR (Microinstruction
register).
Bitovi mikroinstrukcije imaju značenje upravljačkih signala, kako je već prikazano. Podijeljeni su u
šest grupa:
• Addr i J (JAM) upravljaju izborom sljedeće mikroinstrukcije
• ALU sadrži 8 bitova za izbor funkcije ALU i pokretanje sklopa pomaka
• C bitovi određuju registre koji će učitati rezultat iz ALU i sklopa pomaka preko sabirnice C
• M bitovi upravljaju memorijskim operacijama
Zadnja 4 bita upravljaju dekoderom koji određuje sadržaj na sabirnici B. Od ukupno 16 mogućih
signala koristi se samo 9.
Na početku silaznog brida svakog ciklusa takta registar MR iz upravljačke memorije učitava riječ
koja je adresirana MPC registtrom, za vrijeme dw (prvi potciklus). Nankon toga u drugom potciklusu
trajanja dx, na sabirnicu B se postavlja sadržaj određenog registra, a ALU saznaje koju operaciju treba
obaviti. Nakon vremena dy ALU generira rezultat i upisuje ga u sklop za pomak., te vrijednosti N i Z.
Oni se, kao i svi regsitri koji učitavaju podatke sa sasbinrice C i memorije spremaju pri uzlaznom bridu
taktnog signala, pri kraju ciklusa putanje podataka. Aktivnost ALU odvija se tijekom potckilusa 3.
NAkon intervala dz, izlaz iz sklopa pomaka stigao je preko sabirnice C do odredišnog registra u koji se
upisuje pred kraj ciklusa, pri uzlaznom bridu taktnog signala. U potciklusu 4 učitava se sadržaj
registara i N, Z signala. Nakon toga, svi rezultati obrade su smješteni u odredišne registre, rezultat
pšrethodne memorijske operacije je dohvaćen, a MPC je učitao sljedeću mikroinstrukciju. Opisani
postupak sada se ponavlja za sljedeće mikroinstrukcije.
Paralelno s upravljanjem putanjom podataka, mikroprogram mora odrediti i sljedeću
mikroinstrukciju. Izračunavanje adrese sljedeće mikroinstrukcije počinje nakon što registar MIR učita
podatke. U prvom koraku se u MPC kopira sadržaj NEXT_ADDRESS polja. Dok se obavlja kopiranje,
ispituje se sadržaj JAM registra. Ako je vrijednost 0, adresa sljedeće instrukcije nalazi se u MPC.
Ukoliko je saržaj različit od 0, potreni su dodatni koraci, koji se nalaze sklopu najznačajniji bit:
F = (JAMZ & Z) ∨ (JAMN & N) ∨ NEXT _ ADDRESS[8]
Primjerice, kada su oba JAM polja u nuli, adresa sljedeće instrukcije je u polju NEXT_ADDRESS. Ako
je jedno od JAM polja u jedinici, ovisno o N i Z vrijednostima, adresa sljedeće mikroinstrukcije je ili
NEXT_ADDRESS ili NEXT_ADDRESS s MSB bitom na koji je primjenjena OR operacija s jedinicom.
(slika i opis)
36
Treći bit u polju JAM je JMPC. AKo je postavljen, na 8 bita MBR registra primjenjuje se OR operacija
s 8 LSB NEXT_ADDRESS polja tekuće mikroinstrukcije, a rezultat se šalje u MPC. Blok s oznakom 0 na
slici obavlja navedenu operaciju.
Mogućnost promjene MBR i NEXT_ADDRESS registara koji se zatim upisuju u MBR registar
omogućuje izvođenje skokova u progranmskoj memmoriji. Registar MBR u pravilu sadrži operacijski
kod, tako da će rezultat upotrebe bita JMPC biti izbor jedinstvene sljedeće mikroinstrukcije za svaki
mogući operacijski kod.
3.5.
ISA instrukcije i primjer realizacije mikroarhitekture
....
3.5.1. Realizacija stoga
Svi moderni programski jezici baziraju se na proceduralnom modelu, gdje glavni program poziva
različite procedure, koje imaju lokalne varijable vidljive samo njima. Ove varijable nalaze se u
posebnom memorijskom području zvanom stog (stack), ali njihova adresa nije unaprijed poznata,
kako kod globalnih varijabli, već postoji registar koji samo pokazuje na početak memorijskog područja
u kojem su u slijedu pohranjene lokalne varijable trenutne procedure. U našem primjeru to je registar
LV (local variables). Drugi registar, SP (stack pointer), ukazuje na posljednju riječ iz niza lokalnih
varijabli, a pojedina lokalna varijabla referencira se preko udaljenosti (offset) od vrijednosti registra
LV. Struktura podataka koja se nalazi između vrijednosti registara SP i LV naziva se okvir lokalnih
varijabli (local variable frame).
Pozivi procedura prikazani su na sljedećoj slici:
Slika 3.3.: Primjer korištenja stoga kod poziva funkcija A, B i X
Procedura A ima tri 32-bitne varijable: a1, a2 i a3. LV ima sadržaj 100, pa će SP imati sadržaj 108
(svaka varijabla zauzima 4 okteta). Kada procedura A pozove proceduru B, varijable procedure B b1-b4
alociraju se na stogu iznad lokalnih varijabli procedure A, pa se LV registar pri pozivu procedure B
pomiče na odgovarajuće mjesto.
Kada se izvođenje procedure B završi, procedura A ponovno postaje aktivna, pa se stog ponovno
podešava na odgovarajuće vrijednosti LV i SP, a prostor koji je na stogu koristila procedura B više nije
dostupan i smatra se slobodnim, te će biti prebrisan novim skupom lokalnih varijabli kod nekog
budućeg poziva neke procedure X iz procedure A.
3.5.2. Memorijski model
Memorija IVM arhitekture može se promatrati kao niz od 232 (4G) okteta ili 230 (1G) riječi duljine 32
bita. Ukupna raspoloživa memorija podijeljena je u četiri područja:
37
Područje konstanti: pohranjuje konstante, nepromjenjive znakovne nizove i pokazivače na druga
memorijska područja. Nakon pokretanja programa, on dobija od operativnog sustava računala ovu
adresu i pohranjuje je u CPP registar.
Okvir lokalnih varijabli: kako je već kazano, koristi se pohranu lokalnih varijabli unutar procedura.
Ukoliko procedura ima argumente, tada se formalno naziva funkcijom, a argumenti se pohranjuju na
početku okvira, prije lokalnih varijabli.
Područje metoda: ovo je područje u kojem se nalazi program i sve procedure, ponekad se naziva i
text područjem. Za razliku od ostalih područja, ovdje se dohvaćanje (instrukcija) obavlja na razini
okteta, a ne riječi, a adresa s koje se obavlja dohvaćanje nalazi se u PC registru.
3.5.3. Primjeri IVM ISA instrukcija
Lista instrukcija koje IVM ISA arhitektura podržava prikazana je u sljedećoj tablici:
Operacijski
kod
Mnemonik
Opis
0x10
0xa7
0x60
0x7e
0x99
0x9b
0x84
0x15
0xb6
0x80
0xac
0x36
0x64
0x00
BIPUSH oktet
GOTO offset
IADD
IAND
IFEQ pomak
IFLT pomak
IINC var
ILOAD var
INVOKE proc
IOR
IRETURN
ISTORE
ISUB
NOP
Stavlja oktet podataka na stog
Bezuvjetni skok
Uzima dvije riječi sa stoga, sumira ih i rezultat upisuje na stog
Uzima dvije riječi sa stoga, rezultat AND operacije upisuje na stog
Grananje ukoliko je vrijednost varijable na stogu nula
Grananje ukoliko je vrijednost varijable na stogu manja od nule
Uvećava lokalnu varijablu za jedan
Stavlja lokalnu varijablu na stog
Poziva proceduru ili funkciju
Uzima dvije riječi sa stoga, rezultat OR operacije upisuje na stog
Vraćanje cjelobrojnog rezultata iz funkcije
Skida lokalnu varijablu sa stoga
Uzima dvije riječi sa stoga, oduzima ih i rezultat upisuje na stog
Prazna instrukcija
Tablica 3.1.: Instrukcije IVM arhitekture
Prikazane instrukcije mogu se podijeliti u tri grupe:
• Aritmetičke instrukcije (IADD, ISUB, IINC)
• Logičke instrukcije (IAND, IOR)
• Instrukcije grananja (IFEQ, IFLT, GOTO)
• Instrukcije stoga (ILOAD, ISTORE)
• Instrukcije poziva procedure (INVOKE, IRETURN)
• Prazna instrukcija NOP nema efekta, a koristi se za ubacivanje ciklusa čekanja
Primjer programa napisanog u višem programskom jeziku i njegovo prevođenje u IVM instrukcije
prikazan je na sljedećem primjeru:
i = j + k;
if (i == 0)
k = 4;
ILOAD j
ILOAD k
IADD
IFEQ L1
GOTO L2
učitava j na stog
učitava k na stog
j+k stavlja na stog
ako je rezultat nula skače na L1
inače bezuvjetno skače na L2!
38
L1:
BIPUSH 4
ISTORE k
L2:
labela L1
stavlja 4 na stog
sprema 4 u varijablu k
L2 - kraj
Mehanizam pozivanja procedura zahtijeva detaljnije objašnjenje. Procedura pozivatelj dužna je
postaviti na stog parametre koje prosljeđuje funkciji. Nakon povratka iz pozvane procedure procedura
pozivatelj mora nastaviti izvršavanje na liniji koja slijedi neposredno iza linije u kojoj se poziva
procedura. To je logično i ispunjeno u svim višim programskim jezicima današnjice, uključujući i strojni
jezik procesora. Nakon povratka u pozivatelj, stanje stoga mora biti neizmjenjeno, kako bi se ona
mogla normalno nastaviti izvršavati. Pozvana procedura koristi stog za prijem argumenata, lokalne
varijable i povratnu vrijednost koju će vratiti proceduru pozivatelju.
Adresa procedure unutar područja metoda zadaje se kao argument INVOKE instrukcije. Prva četiri
oketa na početku procedure su specijalni podaci: prva dva oketat su broj parametara funkcije, a
sljedeća dva okteta određuje veličinu podučja lokalnih varijabli pozvane funkcije. Peti oktet je prva
instrukcija pozvane procedure.
INVOKE instrukcija izračunava početnu adresu novog okvira oduzimanjem broja parametara od
vrijednosti SP. Na početku okvira upisuje se adresa lokacije na koju treba staviti staru vrijednost PC
registra, a koja je prva lokacija iznad prostora lokalnih varijabli pozvane procedure. Na lokaciju iza nje
sprema se stara vrijednost registra LV. Nakon nje započinje prostor lokalnih varijabli pozvane
procedure.
Slika 3.4.: Memorija prije i poslije INVOKE instrukcije
Posljednja operacija INVOKE instrukcije je postavljanje PC registra na adresu petog okteta pozvane
procedure, što je prva instrukcija pozvane procedure.
Instrukcija IRETURN ima završava izvođenje pozvane procedure, stoga mora osloboditi zauzeti
prostor na stogu, vraća stare vrijednosti pokazivača LV i SP i postavlja na njega rezultat procedure.
39
Staro stanje SP i LV registara dohvaća se preko veznog pokazivača, koji nakon toga više nije
potreban pa se na njegovo mjesto upisuje povratna vrijednost procedure na koju pokazuje SP. Time je
stanje stoga vraćeno u prvobitno stanje, osim što se na njemu sada nalazi povratna vrijednost
funkcije, koju funkcija pozivatelj sada može dohvatiti i upotreijebiti kao lokalnu varijablu u svom radu.
Slika 3.5.: Memorija prije i poslije IRETURN instrukcije
3.5.4. Mikroinstrukcije i notacija
Slično ISA instrukcijama, i mikroinstrukcije se pišu korištenjem mnemonika koji opisju operaciju
koja obavlja svaka mikorinstrukcija u toku jednog ciklusa radnog takta. Jezik mikroarhitekture
odražava njene karakteristike. U toku svakog taktnog ciklusa može se pisati u svaki registar, ali se po
pravilu piše u samo jedan. Samo jedan registar može svoju vrijednost proslijediti B strani ALU, dok na
strani A možemo upisati konstante 0, -1, +1 ili sadržaj registra H. Primjerice, ako želimo upisati sadržaj
registra SP u MDR, pišemo:
MDR = SP
Zbrajanje sadržaja H i SP i upis u MDR postižemo s:
MDR = SP + H
Potrebno je imati u vidu strukturu procesora i detalje svake instrukcije, npr. MDR = MDR + SP nije
moguće izvesti u jednom radnom taktu jer zbrajanje u ALU zahtijeva da jedan od operanada bude u H
registru.
Podatkovnoj memoriji preko 32-bitnog priljučka pristupa se mikroinstrukcijama rd i wr, a preko 8bitnog priključka mikroinstrukcijom fetch.
Skokovi se bezuvjetno obavljaju goto mikroinstrukcijom s naznačenim mjestom skoka, ili uvjetno,
na osnovi stanja N i Z zastavica, primjerice:
Z=TOS
if (Z)
40
goto L1;
else
goto L2;
Prva mikroinstrukcija će upisati TOS u ALU, koja će postaviti sadržaj Z bita. Operacijom OR između Z
i MSB bita MPC mijenja se vrijednost MPC registra, pa će sljedeća mikroinstrukcija biti ili sa adrese L1
ili L2, koje se u mikroprogramskoj memoriji moraju nalaziti udaljene za 28(256) riječi.
JMPC bit se koristi mikroinstrukcijom goto:
goto (MBR OR value)
čime ćemo postići da se value vrijednost iskoristi za polje NEXT_ADDRESS, a JMPC bit se dobije OR
operacijom MBR i NEXT_ADDRESS i rezultat smjesti u MPC.
3.5.5. Primjeri realizacije IVM instrukcija mikroinstrukcijama
Zadatak mikroprograma je prihvaćanje ISA IVM instrukcija i njihovo izvođenje, dakle sadrži
beskonačnu petlju koja dohvaća instrukcije i izvodi mikroinstrukcije koje im odgovaraju.
Mikroprogram s beskonačnom petljom i primjerom nekoliko nizova mikroinstrukcija koje odgovaraju
IVM instrukcijama:
Oznaka
Main 1
nop1
iadd1
iadd2
iadd3
pop1
pop2
pop3
bipush1
bipush2
bipush3
iload1
iload2
iload3
iload4
iload5
ifeq1
ifeq2
ifeq3
ifeq4
Operacije
goto Main1
MAR = SP = SP-1, rd
H = TOS
MDR = TOS = MDR + H; wr;
goto Main1
MAR = SP = SP-1, rd
TOS = MDR;
goto Main1
MAR = SP = SP+1
PC = PC+1; fetch;
MDR = TOS = MBR; wr;
goto Main1
H = LV
MAR = MBRU+H; rd
MAR = SP = SP+1
PC = PC+1; fetch; wr;
TOS = MDR;
goto Main1
MAR = SP = SP-1; rd
OPC = TOS
TOS = MDR
N = OPC;
if(N)
goto T;
else
goto F;
Komentar
Pročitaj predzanju riječ sa stoga
H = vrh stoga
Zbroji i upiši rezultat na vrh stoga
Pročitaj predzanju riječ sa stoga
Pričekaj dok se učita novi sadržaj TOS iz memorije
Kopiraj novu riječ u TOS
MBR = oktet za stavljanje na stog
Uvećaj PC, preuzmi sljedeći operacijski kod
Stavi konstantu na stog
MBR sadrži indeks, kopiraj LV u H
MAR = adresa lokalne varijable za stavljanje na stog
SP pokazuje na vrh stoga
Uvećaj PC; preuzmi sljedeći operacijski kod i upiši na vrh stoga
Ažuriraj TOS
Pročitaj predzanju riječ sa stoga
Snimi privremeno TOS u OPC
Stavi novi vrh stoga u TOS
Skoči ako je Z postavljen
CPP ?
Na početku i kraju svake instrukcije, TOS registar sadrži vrijednost memorijske lokacije na koju
pokazuje SP – vrh stoga, jer se time štedi jedan spori pristup memoriji.
41
OPC registar je privremeni registar, npr. za čuvanje adrese operacijskog koda instrukcije za
grananje dok se PC ne uveća da bi se pristuplio operandima.
Glavna petlja program počinje u retku Main1. Vrijednost PC mora pokazivati na adresu sljedeće
instrukcije koja se treba izvesti, a sadržaj instrukcije nalazi se u MBR. Ove mikroinstrukcije obavljaju se
za svaku IVM isntrukciju, pa je bitno da su izvode brzo i efikasno.
Uzmimo za primjer da MBR registar sadrži vrijednost 0x60, što odgovara mukroinstrukciji IADD. U
jednom ciklusu obavljaju se tri operacije:
1. Uvećava se PC (adresa prvog okteta nakon operacijskog koda)
2. Započinje preuzimanje sljedećeg okteta u MBR (operand ili operacijski kod sljedeće
instrukcije, ovisno o trenutnoj instrukciji).
3. Obavlja se višestruko grananje na adresu iz registra MBR na početku petlje Main1. Ova
adresa je jednaka numeričkoj adresi operacijskog koda koji se trenutno izvršava! U MBR ju
je smjestila prethodna mikroinstrukcija.
Sada započinje preuzimanje sljedećeg okteta, kako bi on bio raspoloživ na početku treće
mikroinstrukcije.
Ukoliko MBR sadrži nulu, što odgovara nop instrukciji, sljedeća mikroinstrukcija ima oznaku no1 i
preuzima se s lokacije 0. Ta instrukcija nema efekta, pa se programski tok vraća u Main1, gdje se niz
ponavlja, ali s novom vrijednošću MBR. Main1 se na nalazi na adresu 0, koja je rezervirana za nop
instrukciju. Mikroinstrukcije se povezuju kratkim nizovima korištenjem polja NEXT_ADDRESS. Svaki niz
započinje na adresi koja odgovara brojčanoj vrijednosti IVM operacijskog koda, npr. POP započinje na
adresi 0x57, ali ostatak ne mora biti na adresama koje slijede.
1. IADD instrukcija izvodi se u sljedećim koracima:
2. TOS već postoji, ali se predzadnja riječ mora dohvatiti iz memorije, te se zbraja s TOS
vrijednošću.
3. Dobiveni rezultat stavlja se na stog, odnosno TOS registar.
Preuzimanje operanda iz memorije započinje umanjenenjm SP pokazivača za jedinicu i njegovim
upisivanjem u MAR. MPC dobiva vrijednost iz polja NEXT_ADDRESS mikroinstrukcije iadd1, što je
adresa mikroinstrukcija iadd2. Tokom drugog ciklusa, dok se čeka na učitavanje operanda iz memorije,
kopira se gornja riječ stoga iz registra TOS u H, gdje će biti ulaz za operaciju zbrajanja.
Na početku trežeg ciklusa (iadd3) MDR sadrži vrijednost dohvaćenu iz memorije. Ona se u ovom
ciklusu zbraja s sadržajem registra H, a rezultat upisuje u MDR i TOS. Nakon toga, započinje operacija
zapisivanja u memoriju. U ovom ciklusu naredba goto dodjeljuje adresu Main1 registru MPC, čime se
proces započinje od početka za sljedeću instrukciju.
3.6.
Priručna memorija
Rast takta procesora zbog realnih fizičkih ograničenja nije mogao pratiti odgovarajući rast brzine
memorije kao elementa koji jako utječe na ukupne performanse računala. Procesor pri pristupu
memoriji doživljava dva faktora usporenja: latencija (vrijeme potrebno za dohvat iz memorije) i
ograničenje brzine. Većina tehnologija povećavaju brzinu istovremenim povećanjem latencije.
Rješenje ovog problema je korištenje priručne memorije.
42
Priručna memorija je brza i mala memorija koja se postavlja između procesora i glavne memorije.
Ukoliko se veliki postotak traženih podataka pronađe u priručnoj, umjesto u glavnoj memoriji, utjecaj
latencije enormno se umanjuje.
Priručna memorija najčešće se razdvaja na dio za podatke i dio za instrukcije (split cache). Time se
memorijske operacije za instrukcije i podatke razdvajaju i odvojeno ubrzavaju mnogo više nego kod
zajedničke priručne memorije. Druga tehnika poboljšavanja efekta priručne memorije je korištenje
više razina priručne memorije: L1 je priručna memorija integrirana u procesoru, a L2 je druga razina
priručne memorije koja je veća od L1, ali nije nužno iste brzine i ne mora se nalaziti integrirana u
procesor, a podaci i instrukcije ne moraju biti razdvojeni. Organizacija po razinama je inkluzivna, tj. L2
će sadržavati kopiju L1 podataka.
Dijelovi glavne memorije koji će se kopirati u priručnu memoriju određuju se na dva jednostavna
principa; Velika je vjerojatnost pristupa memorijskim lokacijama:
• u blizini lokacija kojima je nedavno pristupano (prostorna lokaliziranost, spatial locality):
• memorijskim lokacijama kojima je nedavno pristupano (vremenska lokaliziranost, temporal
locality)
Lokacije koje zadovoljavaju jedan ili oba uvjeta kandidati su za kopiranje u priručnu memoriju, a
brisanje iz priručne memorije bazira se najčešće ukoliko duže vremena nije ispunjen uvjet vremenske
lokaliziranosti.
Sve priručne memorije organizirane su na sličan način: glavna memorija promatra se kao skup
blokova fiksne veličine, a priručna memorija organizirana je po linijama čija je duljina jednaka veličini
bloka radne memorije, što je 4 – 64 okteta. Linije se numeriraju počevši od 0. Kada procesor pristupa
memoriji, najprije se provjeri da li se traženi podatak nalazi u priručnoj memoriji. Ukoliko se nalazi
dohvat se obavlja iz nje, što je mnogo brže od dohvata iz glavne memorije (pogodak, cache hit).
Ukoliko nije (promašaj, cache miss), jedna od linija će se brisati, a u nju će se kopirati blok iz glavne (ili
L2 priručne) memorije koji uključuje traženi podatak. Idealan cilj kojem se teži je da svaki traženi
podatak procesor pronađe u priručnoj memoriji, odnosno da je broj promašaja nula. Tada bi procesor
memoriji pristupao na brzini L1 cache memorije, a ne na brzini stvarne memorije.
Direktno preslikana priručna memorija
Ovo je najjednostavniji model priručne memorije:
Slika 3.6: Primjer organizacije direktno preslikane priručne memorije i razdvajanje memorijske lokacije
43
Primjer priručne memorije sadrži 2048 linija, svaka veličine 32 okteta, dakle ukupno 64 kB. Svaka
linija sadrži osim podataka i dva parametra:
• Valid bit označuje da li je linija prazna ili sadrži podatke;
• Tag polje sadrži 16-bitnu oznaku memorijske lokacija koja je kopirana u priručnu memoriju.
Mapiranje memorijskih blokova u linije priručne memorije obavlja se algoritmom direktnog
preslikavanja ili set-asocijativnim preslikavanjem.
3.6.1. Direktno preslikana priručna memorija
Direktno preslikavanje radi na jednostavnom principu: memorijska lokacija može se kopirati samo
u točno određenu liniju priručne memorije, pa je pretraživanje brzo i jedostavno, što je glavna
prednost ovog pristupa.
Kod kopiranja iz memorije, adresa lokacije dijeli se u četiri dijela:
• Tag dio upisuje se u tag parametar priručne memorije.
• Line dio određuje liniju gdje će se podaci kopirati.
• Word dio riječ unutar linije.
• Byte dio označava oktet unutar riječi ukoliko se sprema samo jedan oktet.
Kada CPU pristupa memoriji, podatak se najprije pokušava pronaći u priručnoj memoriji: izdvoji se
11 bita iz tražene adrese, i pretraži odgovarajuća linija priručne memorije. Ukoliko ta linije nije prazna,
uspoređuju se tag vrijednosti. Ukoliko se podudaraju, imamo pogodak, inače se radi o promašaju.
Dohvaća se samo dio podataka koji procesor traži.
U slučaju promašaja, linija kojoj se pristupalo se zamjenjuje traženim sadržajem iz memorije. Kod
izmjena sadržaja linije, njen sadržaj se kopira u glavnu memoriju.
Mana ovog pristupa je ograničenost memorijskih lokacija koje je moguće kopirati u priručnu
memoriju: dvije memorijske lokacije koje imaju isti LINE dio adrese ne mogu se kopirati u priručnu
memoriju. U našem slučaju te se lokacije razlikuju za n*64k. Ukoliko procesor pristupa dvjema takvim
lokacijama, njih će se dvije izmjenjivati u istoj liniji nakon svakog pristupa memoriji i rezultat će biti
mnogo sporiji nego bez korištenja priručne memorije.
3.6.2. Set-asocijativna priručna memorija
Rješenje problema učestalog izmjenjivanja istih dijelova memorije u jednog liniji priručne memorije
je u dozvoljavanju da se određeni blok memorije kopira u jednu od n linija priručne memorije.
Najčešće varijante su n=2 ili n=4 (2-way, 4-way set-associative cache):
44
Slika 3.7.: Set-asocijativna memorija n=4
S obzirom da se linija ne može odrediti izravno iz adrese, već je potrebno pretraživanje 2 ili 4 linije
performanse su nešto lošije nego kod direktno preslikane varijante, ali se izbjegavaju njena druga
ograničenja.
Kod promašaja, briše se jedan zapis linije iz seta, i to onaj kojem najdulje nije pristupano, stoga je
potrebno voditi računa o svakom pristupu memoriji.
45
4. Razina arhitekture skupa instrukcija
Razina arhitekture skupa instrukcija nalazi se između razine mikroinstrukcija i razine operativnog
sustava računala, i do uvođenja razine operativnog sustava bila je jedina razina.
ISA razina određuje vezu hardvera i softvera i predstavlja najnižu razina računala kojoj je moguće
programski pristupiti. Programi pisani na različitim jezicima visoke razine svi se prevode na razinu ISA
instrukcija. S druge strane, procesor mora izvršavati samo ISA instrukcije.
Ispravno prevođenje na ISA jezik zahtijeva definiranje parametara ISA razine: svih instrukcija, svih
memorijskih modela, svih registara i svih tipova podataka.
4.1.
Tipovi instrukcija
ISA instrukcije mogu se podijeliti u logičke grupe koje postoje na svakom procesoru.
4.1.1. Instrukcije za premještanje podataka
Ove instrukcije su osnovne instrukcije svakog procesora. S obzirom da postoje dva područja koja
pohranjuju podatke tijekom izvođenja programa (registri i glavna memorija), moguće se ukupno četiri
grupe ovakvih instrukcije:
LOAD – učitava iz memorije u registar
STORE – sprema sadržaj registra u memoriju
MOVE – kopira podataka s jedne na drugu memorijsku lokaciju
Pojedine grupe sadrže više različitih instrukcije, ovisno o podržanom modelu adresiranja.
4.1.2. Binarne operacije
Binarne operacije uzimaju dva argumenta, pa ovdje spada većina aritmetičkih operacija, većina
logičkih i instrukcija binarnih pomaka.
4.1.3. Unarne operacije
Unarne operacije uzimaju jedan argument (inkrement, dekrement, inverzija, itd).
4.1.4. Instrukcije usporedbe i uvjetnog grananja
Instrukcije usporedbe realizirane su redovito kao oduzimanje, a rezultatom se smatra 0, pozitivna
ili negativna vrijednost, koja se upisuje u statusni registar procesora.
Instrukcije skoka mogu biti bezuvjetne, kada se skok unutar programske memorije promjenom
vrijednosti PC registra izvodi bezuvjetno, ili uvjetne, kada se prije instrukcije uvjetnog skoka izvodi
instrukcije usporedbe ili druga aritmetička operacija, koja postavlja vrijednost statusnog registra.
Bitno je imati u vidu da svaka aritmetička ili instrukcija usporedbe postavlja vrijednost statusnog
registra, te instrukcija uvjetnog skoka morati slijediti neposredno nakon instrukcije koja određuje
uvjet.
4.1.5. Instrukcije za pozivanje procedura
Procedura je skupina instrukcija koja čini smislenu logičku cjelinu. Završetak procedure mora
omogućiti nastavak procedure pozivatelja na liniji koja slijedi neposredno nakon poziva procedure.
46
Kako bi se omogućilo ulančeno pozivanje funkcija, povratna adresa sprema se na stog, koja se u
zadnjoj instrukciji procedure skida sa stoga i upisuje u PC registar.
4.2.
Registri
Sva računala imaju definiran skup registara koji su dostupni na ISA razini, upravljaju izvršavanjem
programa, i čuvaju privremene rezultate. Skup registara opisan na razini mikroarhitekture čini
podskup registara vidljiv na ISA razini, jer mikroarhitektura implementira ISA skup i vidi sve ISA
registra, dok na razini mikroarhitekture postoje i registri specifični samo za nju (npr. TOS i MAR) koji
nisu vidljivi ISA razini.
Registri ISA razine dijele se u dvije skupine:
Registri opće namjene pohranjuju lokalne varijable i međurezultate proračuna, kako bi se elminirao
česti spori pristup glavnoj memoriji. RISC računala po pravilu imaju minimalno 32 registra, a trend
stalnog povećanja broja registara je prisutan. Registri opće namjene su najčešće potpuno simetrični i
međusobno zamjenjivi, tj. pri pisanju korisničkih programa, programer (prevodioc) ima potpunu
slobodu odabrati proizvoljno registre koji će se korsititi.
Registri specijalne namjene imaju predefiniranu ulogu (npr. SP, PC) i njih se ne može korsititi kao
lokalne varijable. Neki od ovih registara pokrivaju strogo specifičnu namjenu procesora (npr.
rukovanje cache memorijom), pa programeri (prevodioci) korisničkih programa ih uopće nisu svjesni,
jer ih koristi procesor sam ili u operativni sustav računala.
Registar specifične namjene je statusni registar (status register) koji ima niz bitova, svaki
specifičnog značenja. Neki od bitova izražavaju stanje prethodno izvršene ALU instrukcije:
• N – postavlja se ukoliko je ALU generirao negativan (negative) rezultat
• Z – postavlja se ukoliko je ALU generirao rezultat nula (zero)
• V – postavlja se ukoliko je ALU generirao pretek (oVerflow) sa MSB bita
• C – postavlja se ukoliko je ALU generirao pretek (Carry) na MSB bit
Ovi bitovi su pristutni u svim procesorima, jer su osnova za realizaciju ispitivanja uvjeta i skokova u
programu. Osim toga, statusni registar može sadržavati i niz drugih statusnih bitova za specifične
parametere pojedinog procesora.
4.3.
Adresiranje
Adresiranje omogućuje pristup instrukcija operandima.
4.3.1. Neposredno adresiranje
Kod neposrednog adresiranja operand se zadaje unutar instrukcije (immediate adressing) zajedno s
instrukcijom, npr.
ldi R1, 4
učitava konstantu u registar koji je zadana unutar instrukcije. Prednost neposrednog adresiranja je
izbjegavanje dodatnog pristupa memoriji, a mana je mogućnost zadavanja samo konstranti.
47
4.3.2. Direktno adresiranje
Direktno adresiranje (direct addressing) koristi adresu memorijske lokacije unutar instrukcije.
Mana ovakog pristupa je mogućnost pristupa isključivo zadanoj memorijskoj lokaciji (globalna
varijabla)
4.3.3. Registarsko adresiranje
Registarsko adresiranje identično je direktnom adresiranju, osim što se ne zadaje memorijska
lokacija, već registar unutar procesora. Većina prevodioca nastoji što više varijabli prekopirati u
registre, jer se njima najbrže pristupa. Većina arhitektura stoga nastoji sve instrukcije organičiti na
pristup registrima, a komuniciju s memorijom rade isključivo load i store instrukcije.
4.3.4. Indirektno registarsko adresiranje
Ovaj mod adresiranja koristi se kod pristupa memoriji, ali adresa memorijske lokacije nije zadana
unutar instrukcije, nego se nalazi unutar jednog od registara, pa se naziva pokazivač (pointer). Ovaj
način adresiranja omogućuje slobodan pristup memoriji, posebno nizovima podataka unutar
memorije.
4.3.5. Indeksno adresiranje
Indeksno adresiranje koristi se isključivo kod pristupa varijablama na stogu. Adresa memorijske
lokacije zadaje se kao indeks koji se pridodaje vrijednost LV registra. Kako se LV registar postavlja kod
svakog poziva funkcije, korištenjem indeksnoga adresiranja moguće je pristupiti svakoj (lokalnoj)
varijabli na stogu.
4.3.6. Bazno-indeksno adresiranje
Bazno-indeksno adresiranje izračunava adresu iz dva parametra: bazne adrese i pomaka. Vrijednost
pomaka može se mijenjati, a konačna adrese je suma dva parametra.
4.4.
Tipovi podataka
4.4.1. Realni brojevi u formatu pomičnog zareza
Eksponencijalni zapis brojeva, koji se koristi u svim inženjerskim tehnikama, u računalima se koristi
kroz tehnologiju realnih brojeva u formatu pomičnog zareza.
Općeniti zapis eksponencijalnog zapisa je u formatu:
n = f × 10e
gdje f označava razlomak (mantisu), a e je pozitivnai ili negativni eksponent. U format pomičnog
zareza ovaj prikaz bi bio:
3,14
=
0,000001 =
0,314
0,1
× 101
× 10 −5
=
=
3,14
1,0
× 10 0
× 10 −6
1941
= 0,1941 × 10 4 = 1,941 × 103
Opseg je efektivno određen brojem znamenki eksponenta, a točnost brojem znamenki mantise.
Kako se isti broj može prikazati na nekoliko različitih načina.
48
Primjerice, uzmimo broj R, s mantisom od tri znamenke u rasponu [-1, +1], uključujući nulu, i
eksponentom u rasponu [-99, +99]., što čini skoro 199 redova veličine, zapisivih s pet znamenki i dva
znaka.
Slika 4.1.: Raspon vrijednosti broja R
U primjeru možemo razlikovati ukupno 7 raspona vrijednosti, uključujući nulu kao raspon 5:
• Rasponi 1 i 7 su preveliki pozitivni ili negativni brojevi (overflow error)
• Rasponi 2 i 6 su regularne vrijednosti
• Rasponi 3 i 5 su premali pozitivni ili negativni brojevi (underflow errror)
Rasponi 3 i 5 predstavljaju manji problem od raspona 1 i 7, jer se jako male vrijednosti mogu često
aproksimirati nulom.
Brojevi u formatu pomičnog zareza ne mogu formirati kontinuitet, pa su samo aproksimacija
realnog skupa brojeva, pa je nužno zaokruživanje, koje raste s apsolutnom vrijednošću broja, što je
prikazano točkama u područjima 2 i 6.
Efikasnost formata pomičnog zareza povećava se normalizacijom: Ukoliko je krajnja lijeva
znamenka nula, ona se eliminira, sve znamenke se pomiču u lijevo za jedno mjesto, a eksponent
smanjuje za 1.
Danas standardizirani zapis je IEEE 754 iz 1985 godine. Definirani su tri fomata: obična točnost (32
bita), dvostruka točnost (64 bita) i proširena točnost (80 bita).
Slika 4.2.: Formati obične i dvostruke točnosti brojeva u sustavu pomičnog zareza
Oba formata započinju bitom predznaka po sustavu drugog komplementa. Eksponent se zapisuje
dodavanjem fiksne vrijednosti 127 ili 1023 iznosu predznaka, kako bi iznos eksponenta uvijek bio
pozitivan, pa je zapisivanje eksponenta jednostavnije i efikasnije.
Normalizirana mantisa započinje s binarnom točkom, iza koje slijedi bit 1 mantise. Normalizacijom
se svaki broj dovodi u oblik u kojem je MSB bit jedinica, pa se ona podrazumijeva i ne zapisuje.
Primjerice, ako su svi bitovi mantise i eksponenta 0, to odgovara vrijednosti 1. Svi bitovi mantise u
jedinici odgovaraju njenoj vrijednosti nešto manjoj od 2. KOmbinacija podrazumijevanog bita 1,
podrazumijevane binarne točke i 23 ili 52 zadana bita naziva se stoga ispravno signifikantom, jer je
značajno izmjenjen u odnosu na originalni pojam mantise. Primjerice, broj 0,15625 u formatu obične
točnosti, bio bi prikazan kao:
49
v = (−1)predznak ∗ 1.[signifikan t]∗ 2eksponent −127
1
v = 0.15625 = 1.2510 ∗ = 1{.012 ∗ 2−3
8 x
+
0
31
0
1
Eksponent (124 ~ -3)
1 1 1 1 0
0
0
23
22
1
0
0
0
0
0
0
Signifikant (0,25 = 0∙2-1+1∙2-2)
0 0 0 0 0 0 0
0
0
0
0
0
0
0
0
0
Figure 4.1.: Primjer kodiranja po IEEE 754 standardu
50