Professional Documents
Culture Documents
Pregled arhitekture
Sve instrukcije su 32 - bitne, kao što je pomenuto gore. Ovo znači da, na primer, nije
moguće uključiti 32 - bitne konstante u instrukcije. Instrukcija load immediate je
ograničena na 16 - bitnu vrednost. Specijalna instrukcija load uppper immediate
praćena sa or immediate mora biti upotrebljena da bi se u registar upisala 32 - bitna
vrednost.
Akcije instrukcije moraju odgovarati pipeline toku izvršavanja. Svaka akcija instrukcije
se mora izvršiti u tačno određenoj fazi sa tačnim redosledom, u jednoj periodi takta.
Na primer, WB faza se izvršava samo jednom, na kraju ciklusa izvršavanja instrukcije,
tako da je moguće ažurirati vrednost samo jednog registra.
Instrukcije su trooperandske. Aritmetičko/logičke operacije ne zahtevaju definisanje
memorijske lokacije, pa ostaje dovoljno mesta za definisanje dva operanda i odredišni
registar instrukcije. Kompajlerima odgovaraju ovakve instrukcije sa tri operanda, jer
im omogućava da unaprede kod, koji rukuje komplikovanim izrazima.
Trideset dva registra procesora (file registers) odgovaraju kompajlerima, sa tim da je
plaćena cena u vidu skupljeg enkodovanja registara koje se koriste u instrukcijama.
Nema statusnog registra. Ovo je urađeno, da bi se obezbedilo da se stanje izvršenja
instrukcije čuva na samo jednom mestu, file registru procesora. Instrukcije grananja
testiraju vrednost određenog registra. Testira se znak vrednosti, da li je 0 ili jednakost
vrednosti para registara.
Reference prema memoriji su uvek tipa učitaj u/iz registra. Aritmetičke operacije nad
memorijskim lokacijama smetaju pipeline sistemu, tako da nisu implementirane u
tom obliku. 32 - bitni registri omogućavaju čuvanje više promenljivih u svakom od
njih.
Postoji samo jedan oblik adresiranja. Sve naredbe čitanja/upisa se odnose na adrese,
definisane osnovniom vrednošću registra i 16 - bitnim, označenim odstojanjem.
Set instrukcija podrazumeva skup za rad sa 8 - bitnim (byte) i 16 - bitnim (halfword)
podacima.
Podaci moraju biti pravilno složeni po adresama. Operacije nad memorijom, koje rade
sa rečima, pristupaju adresama, sa pravilno složenim četvorobajtnim podacima.
Instrukcije programskih skokova imaju 26 - bitnu adresu skoka. Obzirom da su sve
instrukcije 32 - bitne, dva bita adrese najnižeg značaja nisu od interesa, te su mogući
skokovi na memorijska odstojanja od 256 MB. Karakteristika je da vrednost
programskog skoka nije relativna prema vrednosti programskog brojača, već
predstavlja apsolutnu adresu u 256 MB segmentu programske memorije. Teorijski,
ovo bi trebalo da predstavlja problem, ali ga u praksi nije bilo.
Programski skok van segmenta je moguć koristeći jr instrukciju, koja za programski
skok koristi vrednost registra.
Uslovni skokovi, tj. instrukcije grananja imaju 16 - bitnu vrednost skoka, koja se
interpretira kao označena (pozitivna ili negativna) u odnosu na programski brojač.
Registri
Hardver nameće svega nekoliko pravila kojih se treba pridržavati pri upotrebi
registara opšte namene, ali njihova upotreba je ograničena većim brojem konvencija.
Ove konvencije omogućavaju razmenu softverskih alata i biblioteka među MIPS
okruženjima. TABELA konvencionalni nazivi registara
Sa konvencionalnim nazivim aregistara ide njihova konvencionalna upotreba.
Preporučuje se upotreba registara prema konvenciji.
Instrukcije procesora
MIPS I ISA set instrukcija koristi tri formata kodovanja istih. Kodovanje instrukcija je
izabrano sa ciljem postizanja što većih brzina rada procesora.
Metode adresiranja
Kao što je napomenuto gore u tekstu, postoji samo jedan osnovni adresni mod
procesora. Ofset je označeni 16 - bitni celi broj (dakle vrednosti između -32768 i
32767). Adresa se dobija sabiranjem vrednosti registra procesora i ofset vrednosti.
Ovo je korisno u C sintaksi. Nizovima se pristupa prema indeksu. Ovakvo adresiranje
je dovoljno za prosleđivanje formalnih parametara funkcijama, pristup steku, kao i
efikasan pristup globalnim promenjivim, koristeći gp registar.
Asembler omogućava direktno adresiranje promenjivih. Ovo je prividno. Adresni mod
je naravno osnovni, a računanje adresese se obavlja u toku linkovanja programa.
Mnogo kompleksniji modovi, kao što je pristup dvoregistarskim promenjivim uzrokuje
umetanje složenijeg dodatnog koda.
Tipovi podataka
Sistemsko adresiranje
MIPS programske adrese su retko identične fizičkim, ali jednostavan ugrađeni softver
će verovatno koristiti adrese u segmentima kseg0 i kseg1, gde je očigledna relacija
među programskim i fizičkim adresama.
U kernel modu (u koji procesor dolazi posle reseta) su dostupne sve programske
adrese.
U korisničkom modu važi:
•Programske adrese iznad 2GB su ilegalne i prouzrokuju izuzetak. Ukoliko procesorska
jedinica poseduje MMU, svako adresiranje od strane korisnika mora da se prevede
od strane MMU jedinice. Za procesore bez memorijske jedinice, kuseg adresni
prostor je mapiran u određenom delu memorije. Zbog toga se može desiti da su
resursi kernela (U/I jedinice koje su takođe memorijski mapirane, npr.) nedostupni
softveru u korisničkom modu bez zahteva operativnom sistemu za pristup ovim
jedinicama. Alternativno, hardver može izabrati da ignoriše bite najviše vrednosti
pri izvođenju dekodiranja adresa, pakujući segmente kuseg, kseg0, kseg1, kseg2
u jedan fizički, adresni prostor.
•Instrukcije van seta standardnih korisničih su ilegalne. Specifično, kernel može
zabraniti korisnčkom programu da pristupi CP0 kontrolnom koprocesoru koji
kontroliše izuzetke, stanja procesora te izvršava funkcije procesorskog
menadžmenta memorije.
Prema tome su osnovne razlike između korisničkog i kernel moda u tome da se
korisničkom programu može zabraniti pristup resursima kernel memorije, ovde
uključujući U/I uređaje i strukture podataka operativnog sistema. Ovo takođe
podrazumeva zaštitu pristupa resursima među različim korisničkim procesima. Bitna
razlika između programa u korisničkom i kernel modu je i to što se korisničkom
programu može zabraniti menjanje konfiguracije sistema, podešene od strane
kernela.
Za procesore, derivate R3000 procesora, bez MMU jedinice važi sistem fiksnog
prevođenja adresa. Na raspolaganju je sledeći sistem prevođenja adresa:
•kuseg segment se prevodi u kontinualni 2GB memorijski prostor između 1 i 3GB. Na
primer, adresa vezana za ovaj memorijski segment vrednosti 0x0000 0000 se
prevodi u fizičku adresu 0x4000 0000, dok adresa 0x7FFF FFFF u fizičku adresu
0xBFFF FFFF.
•kseg2 segment se ne prevodi, već adrese podataka u opsegu 0xC000 0000 do
0xFFFF FFFF odgovaraju stvarnim fizičkim lokacijama tih podataka.
Upravljanje izuzetcima
Izuzetci
U MIPS arhitekturi se prekidi, sistemski pozivi i sve što izaziva prekid normalnog
izvršavanja programa naziva izuzetkom. Upravljanje izuzetcima se vrši jednostavnim
mehanizmom. Događaji koji uzrokuju izuzetke su:
•Spoljni događaji kao što su spoljašnji prekidi ili greška na magistrali prilikom čitanja.
Izuzetci jedinice za rad sa brojevima sa pokretnim zarezom se svrstavaju u
spoljašnje prekide. Prekidi su jedini oblik izuzetaka koji se može zanemariti pod
softverskom kontrolom.
•Programske greške i neuobičajena stanja kao što su nepostojeća instrukcija,
prekoračenje celobrojnog tipa promenjive, greška uzrokovana neporavnavanjem
memorije, pristup memoriji van kuseg segmenta korisničkog programa.
•Izuzetci prevođenja mamorijskih adresa, nastali na primer neispravnim prevođenjem
adresa, prilikom pokušaja upisa u ROM lokacije.
•Sistemski pozivi i zamke, su namerni izuzetci, uzrokovani od strane korisničke
aplikacije sa ciljem pristupa kernel resursima na bezbedan način.
Određeni događaji ne izazivaju izuzetke, iako ih procesorska jedinica tako može
tretirati. Softver mora koristiti posebne metode za detekciju ovih događaja:
•greške na magistrali pri ciklusu upisa,
•greška parnosti detektovana u kešu.
Vektori izuzetaka
Ugneždeni izuzetci
Prekidi
MIPS procesori poseduju pet posebnih hardverskih bita prekida aktiviranih od strane
ulaznih pinova centralnog procesora, kao i dva bita koja se mogu postaviti softverski.
Aktivan nivo na svakom pinu se detekzuje svakim ciklusom takta, te izaziva izuzetak
ako je dozvoljen.
Dozvola prekida se izvršava iz dva poteza:
•Globalni bit dozvole prekida (IEc) u statusnom registru mora biti setovan da bi se
dozvolili prekidi. Ovo je jednostavan, obuhvatan i brz način da se zabrane prekidi
kada je to potrebno, npr. za vreme obrade izuzetaka, kada je softver ranjiv na
prekide. Ponovna dozvola prekida se najčešće obavlja pratećom instrukcijom
povratka iz obrade prekida.
•Individualno maskiranje prekida bitima IM koji pripadaju statusnom registru.
Postavljanjem bita se dozvoljava odgovarajući prekid. Manipulaciju maskiranja
prekida obavlja softver prema potrebama, pri čemu se mora voditi računa da se
izmene bita vrše u režimu sistemske zabrane prekida.
TABELA prekidni biti