PRED4

You might also like

Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 48

5. Neki komercijalni procesori 5. Neki komercijalni procesori 5.1.

Karakteristike i performanse raunala Trite raunala u posljednjih pedesetak godina naraslo je praktiki od nule do veliine od nekoliko stotina milijardi dolara godinje i pokazujui tendenciju daljnjeg velikog rasta. Raunala su postala dio svakodnevnog ivota zahvaljujui svojim mogunostima koje su dostupne za relativno prihvatljivu cijenu. Performanse raunala, njihovo vrednovanje, odnos cijena/performanse, kompatibilnost s prethodnim generacijama neke su od tema koje e se prve razmotriti. 5.1.1. Smanjenje cijene i poveanje performansi Projektanti raunala i inenjeri raunarstva stalno su zaokupljeni cijenom svojih proizvoda kao i omjerom cijena/performanse. Cijena i performanse komponenata u domeni implementacije odreuju performanse ureaja razvijenog da se s odreenim karakteristikama prodaje za odreenu cijenu. Cijena odreenih komponenata koje tvore raunalo opada strahovitom brzinom. Za usporedbu elektronike cijevi koritene u prvim raunalima izmeu 1940. g. do 1950 g. kotale su nekoliko dolara po komadu. Diskretni tranzistori koji su ih zamijenili u 60.tim godinama kotali su manje od dolara po komadu. Ipak stvarni pad u cijeni po komponenti poinje s pojavom integriranih sklopova. Integrirani sklop, s tisuama tranzistora, sadri vie funkcionalnih blokova. Cijenu integriranog sklopa ne ini broj komponenata koje on sadri ve troak njegovog razvoja koji se mora amortizirati ve u ranoj fazi njegovog izlaska na trite. U kasnijim fazama cijena istog integriranog znatno pada i nije neuobiajeno da podnoje kota vie od samog integriranog sklopa. Tako npr. tipkovnica, a naroito monitor kotaju vie nego matina ploa raunala. S gospodarstvenog gledita u ovom podruju mnogo toga se drastino promijenilo. Cijena integriranog sklopa, odnosno silicija je zanemariva ili pak besplatna. Ono to ini njegovu cijenu je znanje potrebno za njegov razvoj kao i informacija sadrana u njemu. Slino vrijedi i za programske proizvode. Cijena CD ROM-a je oko $2, ali ako je na njemu zapisan MS Office tada je njegova cijena $500. Grubo govorei uskoro se moe oekivati da e se platiti operacijski sustav i aplikacije a sklopovlje e se dobiti besplatno. Ipak do tada projektanti raunala i sklopova suoavaju se s kompromisom izmeu cijene i performansi sklopova i ureaja koje projektiraju i izrauju. U raunalnim sustavima uobiajeno je odreivati performanse raunala pomou odreenih programa ili niza programa koje se na njima izvode. 5.1.2. Kompatibilnost s prethodnim generacijama ( Upward Compatibility) IBM 360 raunala je su prva porodica raunala sa svojstvom da programi razvijeni za prethodna, starija raunala mogu se bez problema izvoditi na novijim monijim raunalima iz te porodice. Ovo svojstvo potaklo je mnoge potroae da bre mijenjaju svoja raunala. Razlog je bio jednostavan budui su oni znatno vie investirali u programe nego u sklopovlje. Nabavka sklopovlja, raunala, s boljim performansama bez potrebe da se nabavljaju ili razvijaju novi programski paketi sigurno je neusporedivo opravdanija u usporedbi sa sluajem kada je potrebno nabaviti ili ponovo razviti itavu programsku podrku. Stoga proizvoai raunala projektiraju raunala na nain da imaju bolje performanse od prethodnih ali da je mogue potpunu ili uz manje modifikacije koristiti

Sven Gotovac, Arhitektura i organizacija digitalnih raunala

5. Neki komercijalni procesori programsku podrku razvijenu za prethodne generacije. Kompatibilnost s prethodnim generacijama podrazumijeva: Binarna kompatibilnost. Binarne datoteke generirane na prethodnim verzijama raunala mogu se nesmetano izvoditi i na novim raunalima. Obino je dobro ponovno prevesti izvorne programe kako bi poboljanja novih raunala dola do izraaja. Binarna kompatibilnost uz odreene ograde. Binarne datoteke s prethodnih verzija mogu se nesmetano izvoditi na novim verzijama raunala uz uvjet da su prilikom pisanja izvornog koda potovana odreena pravila. Kompatibilnost izvornog koda (source code compatibility). Izvorni kod napisan za prethodne verzije raunala potrebno je samo ponovo prevesti te se novi binarni oblik programa moe nesmetano izvoditi na novoj verziji raunala. Kompatibilnost ostvarena emulacijom koda. Proizvoai raunala u suradnji s programerskim firmama razviju programe koji prevode binarni kod starih u binarni kod novih verzija raunala. Ovaj proces se odvija tijekom izvoenja programa. Izvoenje programa na ovaj nain u pravilu je znatno due. Prednost je da korisnik ipak moe koristiti stare verzije programa dok se ne razviju nove.

5.1.3. Performanse raunala Procjena performansi raunala varira od krajnje jednostavnih kvalitativnih (Raunalu je potrebno 15 sekundi da starta MS Word) do ozbiljnih objektivnih kvantitativnih testova temeljenih na programima projektiranim posebno za ispitivanje performansi raunarskih sustava. Openito testiranje jednog sustava zapoinje definiranjem prosjenog ili oekivanog optereenja raunala (workload). To je skup programa ili koji se na raunalu izvode i ije vrijeme izvoenja se mjeri. Idealno je kada se radi o upravo onim programima koje korisnik namjerava koristiti. Tada je mogue najobjektivnije dobiti odgovor na pitanje koje raunalo korisniku za tu aplikaciju ili skup aplikacija najbolje odgovara. Naravno u praksi je situacija znatno sloenija pa se zato definiraju programi za ispitivanje i usporedbu performansi raunala (benchmark programs). Oni simuliraju oekivano optereenje raunala. Vrijeme izvoenja, frekvencija takta, broj taktova po naredbi ( Clocks per Instruction CPI). Mjera performansi raunala je vrijeme. Raunalo koje u kraem vremenu obradi zadani program ima najbolje performanse za taj tip optereenja. Vrijeme izvoenja programa ovisi o mnogim imbenicima. Obino se mnogi od njih previde kao npr. ekanje na obavljanje ulazno/izlaznih operacija koje ne ovisi o brzini procesora. Vrijeme potrebno da procesor izvede zadani program odreeno je izrazom: vrijeme izvoenja = IC * CPI * T gdje je IC - broj naredbi programa, CPI prosjean broj taktova po naredbi, T trajanje takta. Procesor s kraim taktom, manjim brojem taktova po naredbi, te manjim brojem naredbi koje su potrebne da bi se obavila zadana obrada ima bolje performanse. Nedostatak ovog izraza je to rauna s prosjenim brojem taktova po naredbi. Naime u obradi dominiraju neki tipovi naredbi (npr. prebacivanje podataka), dok se drugi tipovi ne moraju uope koristiti (npr. dijeljenje dva realna broje). Ako izvoenje prvih naredbi traje znatno krae od izvoenje drugih znai da e i sam program manje trajati. Zato je vano

Sven Gotovac, Arhitektura i organizacija digitalnih raunala

5. Neki komercijalni procesori uzeti u obzir stvarnu distribuciju (raspodjelu) naredbi za odreeni tip obrade. Takoer, zbog razliitosti arhitektura procesora te razliitosti njihovih skupova naredbi neke obrade na jednom procesoru zahtijevaju vei broj naredbi nego na drugom, a to moe biti sasvim obratno za neki drugi tip obrade. Zato je mogue dobiti razliite rezultate primjenom razliitih ispitnih programa. MIPS (Millions Instruction per Second). Jedno uobiajeno, ali dosta neprecizno mjerilo performansi raunala je koliko milijuna naredbi raunalo moe izvesti u sekundi. Ovu vrijednost jednostavno se dobiva izvoenjem nekog programa ili skupine programa s poznatim brojem naredbi te mjerei vrijeme potrebno da se on ili oni izvedu. Praktino postoji vie razloga nepouzdanosti ove mjere. Moda najvanije je da mogunosti naredbi znatno variraju od procesora do procesora. Npr. procesori koji koriste naredbe s tri adrese za aritmetiku naredbu zahtijevaju vei broj taktova (npr. dohvat naredbe 3 takta + dohvat operanada 2 takta + proraun i pohrana rezultata 1 takt = 6 taktova) u usporedbi s istom naredbom RISC procesora temeljenog na spremnicima ope namjene koja se praktiki izvodi u jednom ciklusu (npr. 1 ciklus = 4 takta). U stvarnosti drugi procesor nije 6/4 puta bri od prethodnoga jer je za istu obradu ponekad i potrebno dohvatiti operande iz memorije i pohraniti ih u spremnike to dodatno produuje trajanje izvoenja za etiri ciklusa. Ovo bi znailo da je drugi procesor realno sporiji 20/6 puta. Openito broj naredbi za istu obradu kod RISC procesora je oko 20% vei nego broj naredbi kod CISC procesora. RISC procesori naprotiv rade i s nekoliko puta veom frekvencijom takta nego CISC procesori. MIPS kao mjerilo bilo je popularno u kasnim 70tim i ranim 80tim. U to vrijeme raunalo VAX 11/780 uzimalo se za referencu, a ostala raunala usporeivala su se s njim kao MIPS relativno prema VAXu. FLOPS (Floating-Point Operations per Second) i MFLOPS. Potrebe mnogih prorauna su obino takve da se ee barata s realnim (brojevi s pominim zarezom), a rjee s cijelim brojevima. Kod takvih prorauna mjera performansi raunala je broj naredbi s realnim brojevima u sekundi koje ono moe izvesti. FLOPS predstavlja za ove sluajeve puno realnije mjerilo performansi raunala iz razloga to su operacije s realnim brojevima znatno sloenije od operacija s cjelobrojnim veliinama te ukoliko procesor nema prilagoeno sklopovlje za takvu obradu obrada je znatno sloenija i due traje. Whetstones i Dhrystones. Whetstone test program je prvi program za usporedbu performansi raunala. Razvijen je sredinom 70tih i dobio je naziv prema Whetston Algol programu prevodiocu razvijenom u gradiu Whetstone u Engleskoj. Ovaj test program razvijen je prvenstveno da ispituje performanse obrade nad realnim brojevima. Performanse su davane u MWIPS (Millions Whetstone instruction per Second ). Izvorno je pisan u programskom jeziku ALGOL 60, a naknadno je prenesen i na FORTRAN, Pascal i C. Dhrystone je test program razvijen za ispitivanja performansi raunala kod obrade nad cjelobrojnim veliinama. Isto kao Whetstone, on je mali program svega stotinjak naredbi u viem jeziku, odnosno 1 do 1.3 kB koda. Oba test programa su mali programi koji su stimulirali programere programa prevodilaca da do-optimiraju svoje proizvode kako bi test programi pokazali bolje performanse od stvarnih. SPEC (System Performance Evaluation Cooperative ) Zadruga za procjenu performansi sustava. Tijekom vremena pojavio se trend koji naputa sintetike test Sven Gotovac, Arhitektura i organizacija digitalnih raunala 3

5. Neki komercijalni procesori programe i okree se ka programima u opoj uporabi. Konzorcij SPEC, koji se sastoji od predstavnika mnogih kompanija koje proizvode raunala, ustanovljen je 1987 s ciljem definiranja standarda za test programe. Skup test programa koje je odredio SPEC sastoji se od programa prevodilaca, Booleovih minimizacijskih programa, tablinih kalkulatora te niza drugih programa koji ispituju brzinu izvoenja. SPEC je registriran kao: SPEC je neprofitabilna korporacija formirana s ciljem da uspostavi, odrava i te nadgleda standardizirani skup test programa koji mogu biti izvoeni na najnovijim generacijama raunala. SPEC razvija skup test programa koji imaju zadau mjeriti performanse raunala. Ovaj skup programa je prenosivi, dobro ispitani programski paket koji se sastoji od izvornog koda i alata. Oni su dostupni javnosti uz naknadu troka razvoja i administacijskih trokova. Prema licencnim pravima, SPEC lanovi i potroai suglasni da izvode test programski paket te objavljuju i dokumentiraju rezultate mjerenja. Danas dostupni SPEC test programi doivjeli su svoju posljednju preinaku 1992. kada su programskom paketu dodani test programi za cjelobrojnu aritmetiku i aritmetiku pominog zareza, SPECint92 i SPECfp92. Iako paljivo odabrani test programi ipak su pojedini proizvoai raunala i programske podrke posebno optimirali svoje programe kako bi iskazali bolje performanse od stvarnih. Neki od proizvoaa su ili toliko daleko da su u okviru programa prevodilaca ubacivali posebne zastavice koje su imale samo svrhu da poboljaju ocjenu prema SPECu bez stvarnih poboljanja performansi raunala i programa. Trenutna nastojanja SPECa su da onemogue spomenuta nastojanja specificiranjem dodatnih pravila o ponaanjima programa prevodilaca. U novije vrijeme SPEC uvodi i itav niz test programa namijenjenih ispitivanju klijent-posluitelj ( clientserver) arhitekture. Sve navedene metode mjerenja performansi raunala nastoje odgovoriti korisniku koje je raunalo najbolje za obradu koja je njemu potrebna. Korisne informacije dobivaju se i od korisnika koji su usporeivali objavljene rezultate s test programima od strane proizvoaa sa stvarnim poboljanjima koje su oni uoili izvoenjem svojih aplikacija. Tako se najobjektivnije dobiva informacija koliko su poboljanja u performansama, specificirana od strane proizvoaa, u suglasnosti s poboljanjima koja uoava krajni korisnik. 5.2. RISC ili CISC Potrebno je naglasiti da je razlika izmeu raunala sa sloenim skupom naredbi i raunala sa smanjenim skupom naredbi u konceptu ili filozofiji projektiranja raunala prije nego u svojstvima arhitekture. Naime dananji RISC procesori novih generacija imaju stotine naredbi koje nisu sasvim jednostavne nego ak i relativno sloene u svakom smislu. 5.2.1. CISC raunala CISC procesori nisu rezultat odreene filozofije u pristupu projektiranja raunala. Naprotiv, oni su rezultat tenji projektanata da u procesoru inkorporiraju to vie mogunosti kao npr. adresnih modova, tipova naredbi i sl. Ope karakteristike CISC procesora. Kod CISC procesora ISA se projektira s ciljem da naredbe imaju to vee mogunosti. Kao rezultat CISC procesori imaju iroki opseg adresnih modova, 14 kod Motorole 68 000 i 25 kod Motorole 68 020. Dalje ovi procesori dozvoljavaju korisniku da operandi i rezultat budu proizvoljno pohranjeni kako u memoriji

Sven Gotovac, Arhitektura i organizacija digitalnih raunala

5. Neki komercijalni procesori tako i u spremnicima ope namjene. Tako VAX ima naredbe s 0 do 3 adrese. VAX naredba za zbrajanje moe specificirati 2 ili 3 lokacije koje se nalaze bilo u memoriji ili u spremnicima ope namjene. Rezultat ovakve arhitekture su naredbe razliitih duina i vremena izvoenja. Povijesne injenice. Vee mogunosti naredbi naile se na jako povoljan odaziv kod programera iz razloga to je mogue s manje naredbi realizirati zadanu obradu. Cijena memorije u vrijeme pojave mikroprocesora M6800 (1975) iznosila je $500 za 16 KB RAMa, a tvrdi disk od 40 MB kotao je $55000. Pet godina kasnije kad se na tritu pojavio 16 bitovni procesor M68000 cijena 64 KB RAMa je jo uvijek iznosila nekoliko stotina dolara, a tvrdi disk od 10 MB je kotao $5000. Zbog cijene memorije programeri su teili da njihov kod i podaci zauzimaju to manje prostora. Novoprojektirani procesori nastojali su zadrati programsku kompatibilnost sa svojim prethodnicima. Prirodno je da njihove poveane mogunosti rezultirale su u sloenijem sklopovlju. Kompatibilnost sa prethodnim generacijama dodatno je poveavala tu sloenost. Nadalje, projektanti postali su svjesni raskoraka izmeu simbolikog i viih jezika. Pojavilo se razmiljanje da se taj raskorak moe uvoenjem sloenijih naredbi kao i sloenijih adresnih modova. Ipak projektanti programa prevodilaca odbijali su koritenje tih sloenih naredbi i u glavnom ostajali su u okviru prvobitnih skupova naredbi. Istraivanja koja je 1971 proveo Donald Knuth i 1982 David Patterson pokazala su da 85 % su naredbe koje varijablama pridodjeljuju vrijednost, uvjeti i pozivi procedura. Od naredbi koje mijenjaju vrijednost varijablama 80% su samo jednostavne naredbe za prebacivanja (MOVE), a tek 20% aritmetike i logike operacije. Takoer kako su proizvoai dodavali nove opcije svojim procesorima suoili su se s problemom da dodatna sloenost sklopovlja onemoguava poveavanje frekvencije takta odnosno veu brzinu izvoenja naredbi. Sloene naredbe i adresni modovi u suprotnosti su s veim frekvencijama zbog velikog broja mikrokoraka koje je potrebno izvesti kako bi se oni realizirali. Do nedavno je cijena memorije opadala 40% godinje. Tako je brzo dostignuta razina na kojoj cijena memorije nije vie kritina pa programeri svoje strateke ciljeve usmjeravaju prema brzini izvoenja dok memorijski zahtjevi programa postaju nebitni. 5.2.2. Prijelaz s CISC na RISC procesore Ve od prvih raunala njihovi projektanti teili su poveanju brzine izvoenja naredbi, odnosno poveanju brzine obrade. Uvoenjem paralelizma u radu procesora mogue je istovremeno obraivati vie naredbi. Time se poveava propusna mo procesora, odnosno broj naredbi koje on moe obraditi u jedinici vremena. Danas su uobiajena rjeenja preddohvat naredbe(prefetching), cjevovod (pipeline) i superskalarne operacije. U modelu obrade naredbe procesor u prvom trenutku dohvata naredbu, a zatim je izvodi. Nakon to se izvede naredba ide se u dohvat i izvoenje sljedee naredbe. Kod modernijih procesora ove dvije aktivnosti se preklapaju. Brzina obrade moe se znaajno poveati ukoliko se sljedea naredba dohvati ve za vrijeme izvoenja tekue naredbe ( prefetching). Prvi 16 bitovni mikroprocesor Intel 8086 imao je red za preddohvat naredbe veliine 6 okteta. Preddohvat naredbe predstavlja preteu cjevovoda.

Sven Gotovac, Arhitektura i organizacija digitalnih raunala

5. Neki komercijalni procesori Tako su praktiki prvi mikroprocesori primjenjivali primitivan oblik cjevovoda. Jednostavno reeno cjevovod podrazumijeva dohvat i poetak izvoenja sljedee naredbe prije nego to je zavrila sljedea naredba. Suvremeni procesori proces izvoenja sljedee naredbe privode skoro kraju u trenutku zavretka tekue naredbe. Tako npr. Motorola PowerPC 601 ima 20 zasebnih odsjeka u kojima se odvijaju razliite aktivnosti razliitih naredbi. Superskalarno raunanje podrazumijeva istovremeno izvoenje vie naredbi. Tako npr. Motorola PowerPC 601 ima tri nezavisne obradne jedinice: za cjelobrojne brojeve, brojeve s pominim zarezom i za grananja. Ove jedinice mogu istovremeno izvoditi svaka svoju naredbu. Kod ovih procesora dogaa se da se naredbe izvode i van redoslijeda odreenog programom. Tako npr. vremenski kraa naredba koja slijedi duu naredbu moe biti izvedena prije njene prethodnice. Projektanti CISC raunala primjenjivali su navedene tehnike za poveanje brzine obrada, ali duge naredbe koje zahtijevaju dohvat operanada pomou sloenih adresnih modova koji koriste sloenu aritmetiku za proraun efektivne adrese znaajno su oteavali njihovu realizaciju i umanjivali njihove efekte. Nadalje, sloene naredbe su u suprotnosti s veim frekvencijama takta u usporedbi s jednostavnim naredbama. Tako su RISC procesori projektirani kako bi uinkovito koristili prednosti cjevovoda, superskalarnog raunanja, malih brzih meumemorija (cach) razvijenih u doba CISC procesora. 5.2.3. Filozofija projektiranja RISCa Naziv RISC (Reduced Instruction Set Computer) raunalo sa smanjenim skupom naredbi, ukazuje na smanjenje i sloenost naredbi procesora. U stvarnosti postoji niz strategija kojima se poveava uinkovitost cjevovoda, superskalarnog raunanja i brzih meumemorija. Naravno, stvarni RISCovi koriste samo dio moguih rjeenja. Jednako trajanje izvoenja svih naredbi. Ovaj jednostavan koncept praktiki je najvaniji temelj u projektiranju RISCa. Prve definicije RISCa podrazumijevale su da se sve naredbe izvode u jednom ciklusu. Realizacija cjevovoda je jednostavnija ukoliko se u svakom taktu starta po jedna naredba. Kako vrijeme izvoenja ovisi o propusnosti procesora (koliko naredbi se izvede u jedinici vremena), a ne o vremenu izvoenja pojedine naredbe, izvoenje jedne naredbe po ciklusu je opravdan projektantski cilj. On se moe ostvariti pojednostavljenjem naredbi ali ne i poveanjem broja taktova po ciklusu. Jednaka duina svih naredbi. Ako se izvodi jedna naredba po ciklusu i ako su naredbe jednostavne tada je logino da su sve naredbe i fiksne duine, obino jedna rije. Ta rije specificira sve o naredbi, operacijski kod, gdje su smjeteni operandi, gdje pohraniti rezultat i gdje se nalazi sljedea naredba. Pristup memoriji preko load i store naredbi. Ako je naredba duine jedne rijei, odnosno 32 bita, te kako dohvat operanada iz memorije zahtijeva dodatno vrijeme, projektanti RISC raunala ograniavaju se na izvoenje svih operacija nad operandima pohranjenim u spremnicima procesora. Pristup operandima u memoriji ogranien je na operacije njihova dohvata, load, i pohrane, store. Ova vrsta podjela izmeu pristupa operandima u memoriji i njihove obrade minimizira broj pristupa memoriji od strane procesora, odnosno reducira optereenje vanjske sabirnice. Ovim se minimizira kanjenje pri dohvatu sljedee naredbe uzrokovano dohvatom operanada prethodne naredbe.

Sven Gotovac, Arhitektura i organizacija digitalnih raunala

5. Neki komercijalni procesori Jednostavni adresni modovi. Sloeni adresni modovi zahtijevaju vie taktova budui se mora provesti vie aritmetikih operacija. RISC procesori obino su ogranieni na samo dva adresna moda, indirektno pomou spremnika ( register indirect) i indeksno. Indeks moe biti pohranjen ili u spremniku ili konstanta koja je sastavni dio naredbe. Manje jednostavnih operacija. Jednostavne naredbe impliciraju krae vrijeme izvoenja (manji broj taktova) budui da je za njihovu realizaciju potreban znatno manji broj radnji. Tako npr. RISC procesor nee imati naredbu POLY koju ima VAX raunalo kojom se izraunavaju korijeni polinoma Hornerovom metodom. Svaka sloena naredba moe se podijeliti na niz jednostavnih naredbi. Projektanti su uestalo suoeni s dilemom dodati neke sloenije naredbe koje imaju za posljedicu poveanje sloenosti upravljake jedinice te mogue poveanje broja taktova po ciklusu. Odgoeni pristupi memoriji i grananja. Postoji jedna poslovica koja kae:Ako ne moe pobijediti mijenjaj pravila. Kod odreenih RISC arhitektura dohvat operanada ( load), pohrana rezultata (store) i grananja zahtijevaju vie ciklusa za izvoenje. Kod prve dvije naredbe produenje trajanja naredbe posljedica je potrebe ponovnog pristupa memoriji, dok kod grananja zbog dohvata naredbe koja je odreene rezultatom ispitivanja. Zbog cjevovoda ovo praktino znai da dvije naredbe istovremeno zavravaju (prva traje dva ciklusa, a sljedea koja poinje ciklus kasnije i traje samo jedan ciklus). Kako bi se osiguralo da naredba koja slijedi neku od navedenih naredbi ne bi ovisila o njenom rezultatu uvodi se posebna naredba nop koja nita ne radi. Ona samo zauzima mjesto u nizu naredbi i troi vrijeme kako bi se omoguilo prethodnoj naredbi da zavri i dostavi rezultat koji mogu koristiti sljedee naredbe. Programeri u simbolikom jeziku moraju poznavati nain izvoenja svake pojedine naredbe te po potrebi ubacivati nop naredbu. Programi za prevoenje viih jezika imaju ugraene automatizme za prepoznavanje i rjeavanje spomenutih situacija. Preddohvat naredbe i spekulativno izvoenje . Prednosti preddohvata naredbi naroito dolazi do izraaja kod RISCa. Kada su sve naredbe jednake duine jednostavnije je analizirati naredbu kako ue u cjevovod te zakljuiti da li se radi o naredbi aritmetikoj ili logikoj naredbi, pristupu memoriji ili grananjima. Ukoliko se zakljui da se radi posljednjima moe se odmah pristupiti dohvatu operanda ili naredbe koja slijedi ukoliko doe do grananja. Ovim pristupom praktiki ne dolazi do kanjenja zbog grananja ili pristupa memoriji. Procesor ima vie jedinica koje mogu istovremeno obavljati dijelove obrade naredbi, a kao je mogue znati adresu mogueg grananja unaprijed, procesor zapoima obradu naredbe koja je rezultat grananja bez obzira da li je zadovoljen uvjet grananja (spekulira o rezultatu grananja). Rezultat dijela njene obrade e se odbaciti ukoliko se pokae da nije potrebno izvesti grananja. Znaenje programa prevodioca . RISCovi imaju krae naredbe koje izvode samo jednostavnije operacije. Razbijanje sloenih naredbi CISCa na niz jednostavnih naredbi uspostavlja veu ovisnost izmeu naredbi. Kako bi se to bolje iskoristile karakteristike RISCova potrebno je da se izvoenje naredbi izvodi i izvan redoslijeda odreenog programom kad god je to mogue. Ovaj zahtjev ozbiljno optereuje programera jer on ili ona ne mora samo paziti na ispravnost programa nego i da kod bude optimiran za odreeni procesor u smislu da u potpunosti iskoristi karakteristike njegove arhitekture i sklopovlja (preddohvat naredbi, cjevovod, odgoen pristup memoriji i grananja, spekulativno izvoenje). Veina programa prevodilaca optimira kod da navedeni zahtjevi Sven Gotovac, Arhitektura i organizacija digitalnih raunala 7

5. Neki komercijalni procesori budu ispunjeni. To je razlog da se RISCova programiraju obino u viem jeziku, a znatno rjee u simbolikom. PowerPC. PowerPC je moderni procesor koji je primjer do koje razine se koriste opisane tehnike. PowerPC moe izvesti preko 200 naredbi, od kojih su neke i sloene. Npr. naredba fctiwz, pretvori broj s pominim zarezom u cjelobrojni sa zaokruivanje prema nuli, nije sasvim jednostavna naredba. Ovaj procesor pristupa memoriji samo pomou naredbi load i store, naredbe su sve iste duine, postoji manji broj adresnih modova te koristi preddohvat naredbi i cjevovod. Sve ovo ima za cilj da se izvede jedna naredba po ciklusu. Ovaj procesor ne koristi tehnike odgoenog pristupa memoriji i grananja, ali koristi spekulativno izvoenje grananja. Tako PowerPC koristi samo dio znaajki RISCova. 5.3. CISC mikroprocesor: Motorola MC68000 Nakon to su opisane razlike izmeu CISC i RISC procesora slijedi detaljan opis CISC mikroprocesora Motorola MC68000. Motorola je postigla veliki uspjeh sa svojim 8 bitovnim mikroprocesorom M6800 koji se pojavio 1975, te poboljanim sljedbenikom M6809 koji se pojavi nakon nekoliko godina. Prvi 32 bitovni mikroprocesor MC68000 pojavio se 1979. Radilo se o CISC procesoru sa 14 adresnih modova i velikim brojem naredbi. Nakon ovoga procesora Motorola je proizvela i druge procesore koji pripadaju ovoj porodici poevi od MC68010 koji je ima identinu internu arhitekturu ali vanjsku 8 bitovnu podatkovnu sabirnicu u usporedbi sa 16 bitovnom vanjskom podatkovnom sabirnicom MC68000, pa do MC68040 koji uz mnoga poboljanja koristi i 32 bitovnu vanjsku podatkovnu sabirnicu. Ne postoji standardizirana definicija o veliini rijei procesora, ali je uobiajeno da se procesor definira kao n-bitovni procesor ako je veina njegovih internih podatkovnih sabirnica n-bitovna. Tako su svi procesori iz porodice MC68000 32 bitovni procesori budui da je veina operacija nad 32 bitovnim podacima, ali vanjske podatkovne sabirnice su od 8 do 32 bita. Proces opisa ISA procesora, koji je ve primijenjen u prethodnim poglavljima, opisan je sljedeom tablicom: Memorija: struktura spremnika u raunalu Spremnici procesora Organizacija glavne memorije Formati i njihovo tumaenje: znaenje pojedinih polja spremnika Tipovi podataka Formati naredbi Interpretacija adresa naredbi Interpretacija naredbi: to rade naredbe Ciklus dohvati i izvedi Obrada posebnih stanja i prekida Izvoenje naredbe: ponaanje pojedinih naredbi Grupiranje naredbi po vrstama Aktivnosti koje izvode pojedine naredbe

Sven Gotovac, Arhitektura i organizacija digitalnih raunala

5. Neki komercijalni procesori 5.3.1. Arhitektura CPUa i memorije Na sljedeoj slici prikazani su spremnici procesora MC68000.
31 16 15 8 7 0 D D D D D D D D A A A A A A A A 0 1 2 3 4 5 6 7 0 1 T ra c e m o d e 2 S u p e r v is o r s ta t e 3 I n te r r u p t m a s k 4 E x te n d N e g a tiv e 5 Z e ro 6 O v e r flo w 7 /S P /U S P C a rry IR 15 2 2 3 r i je i m e m o r ije 2 2 3 -1
S I S T E M S K I K O R I S N I K I O KTET O KTET 15 13 10 8 4 0

0 0

8 s p r e m n ik a o p e n a m je n e

T S

I 2 I1 I 0

XNZVC

S ta tu s n i s p r e m n ik CC

8 a d r e s n ih s p r e m n ik a

A 7 '/ S S P 31 23 19 0 PC

15

Slika pokazuje da je ovaj procesor temeljen na jednoj varijanti procesora sa spremnicima ope namjene. Razlika od klasine arhitekture sa spremnicima ope namjene je da se razlikuju spremnici za operande D0 D7 i spremnici za adrese A0 A7. Spremnici procesora mogu se podijeliti na: 32 bitovno programsko brojilo PC. Kako MC68000 ima 24 bitovnu adresnu sabirnicu samo se koriste posljednja 24 bita PC dok se bitovi 24 31 zanemaruju. 16 bitovni spremnik naredbe IR u koji se pohranjuje prvih 16 bita naredbe. Pri dohvatu naredbe PC se automatski povea za 2 kako bi pokazivao na sljedeu naredbu. Neke naredbe su due od 16 bita. U tom sluaju dohvata se dodatnih 16 bita te se dodatno inkrementira PC kako bi pokazivao na sljedeu naredbu ili na sljedeu rije iste naredbe. Kada se proita i posljednja rije naredbe PC pokazuje na prvu rije sljedee naredbe. Spremnici ope namjene za pohranu operanada i adresa. D0 D7 sadre operande, a A0 A7 adrese koje koristi tekua naredba. Spremnik A7 posebno se koristi kao kazalo stoga, dok A7 kao kazalo stoga u nadzornom ( supervisor) reimu rada. Statusni spremnik podijeljen je na sistemski i korisniki oktet. Sastoji se od niza jednobitovnih zastavica (flag) koje ukazuju na odreena stanja procesora: T: Mod praenja (trace mode) S: Nadzorni ili korisniki mod rada (supervisor mode) I2 I0: Maska prekida (interrupt mask) Sven Gotovac, Arhitektura i organizacija digitalnih raunala 9

5. Neki komercijalni procesori C: prijenos (carry) V: pretek (overflow) Z: nula (zero) N: negativan (negative) X: proirenje (extend) Posljednjih pet bita poznati su kao uvjetni kod ( condition code skr. CC). Spremnici procesora MC68000 mogu se pomou RTN opisati na sljedei nain: D[0..7]31..0: A[0..7]31..0: A731..0: PC31..0: IR15..0: Status15..0: SP:=A[7]: SPP:=A7: C:=Status0: V:=Status1: Z:=Status2: N:=Status3: X:=Status4: INT2..0:=Status10..8: S:=Status13: T:=Status15: spremnici ope namjene za operande spremnici ope namjene za adrese sistemsko kazalo stoga programsko brojilo spremnik naredbe statusni spremnik korisniko kazalo stoga sistemsko kazalo stoga zastavica prijenosa (carry) zastavica pretka (overflow) zastavica nula (zero) zastavica negativan (negative) zastavica proirenja (extend) maska prekida (interrupt mask) nadzorni mod (supervisor mode) mod praenja(trace mode)

Glavna memorija. Glavna memorija ograniena je na 2 24 okteta izvedbom procesora s 24 linije adresne sabirnice u cilju smanjenja cijene procesora. Procesor moe pristupati oktetima, rijeima (16 bita) i dugim rijeima (32 bita). Okteti mogu biti smjeteni proizvoljno u memoriji, rijei samo na parnim adresama, a duge rijei na adresama djeljivim sa etiri. Ukoliko ovi zahtjevi nisu ispunjeni, logika procesora signalizira greku na adresnoj sabirnici i izvoenje programa se prekida. Ovaj nain koritenja memorije poznat je pod nazivom vrsto svrstavanje (hard alignment). Neki procesori nemaju ovakve vrste zahtjeve kao npr. Intel 8086, tj. koriste tz. makano svrstavanje (soft alignment). Posljednje daje veu slobodu u smjetanju operanada, ali npr. postavljanje rijei na neparnu adresu rezultira smanjenjem performansi jer su potrebna dva pristupa u memoriju te rekonstrukcija rijei od po dva okteta dviju proitanih rijei. Rijei i duge rijei pohranjuju se na nain da je na nioj odnosno najnioj adresi pohranjen oktet najveeg znaaja, a na vioj odnosno najvioj adresi oktet najmanjeg znaaja. Ovakav nain pohrane duih podataka naziva se vei kraj (big endian), jer kraj podatka (manja adresa) sadri oktet veeg znaenja. Ima procesora koji koriste drugaiji nain pohrane podataka tako da najmanja adresa sadri oktet najmanjeg znaenja, a najvea adresa oktet najveeg znaenja. Ovakav nain pohrane naziva se mali kraj (little endian).

Sven Gotovac, Arhitektura i organizacija digitalnih raunala

10

5. Neki komercijalni procesori

0012

0012

AB 1C

0 0 11 0010 000F

AB 1C

0 0 11 0010 000F

v e i k ra j ( b ig e n d ia n )

po d=1C A B

m a n ji k r a j ( l it t l e e n d i a n )

pod=A B 1C

Kod RTN opisa glavne memorije fiziki su prisutni samo okteti. Rijei i duge rijei tvore se od okteta kod kojih nije naglaen zahtjev da budu smjeteni na parnim odnosno adresama djeljivim sa etiri. Mb[0..224]7..0: Mw[0..223]15..0:=Mb[ad]# Mb[ad+1] Ml[0..222]31..0:= Mw[ad]# Mw[ad+2] okteti u glavnoj memoriji rijei u glavnoj memoriji duga rije u glavnoj memoriji

RTN moe ograniiti vrsti poredak rijei, primijenjen kod ovog procesora, na nain da adresi ad definira bitove pa bi parnoj adresi posljednji bit morao biti nula, a adresi duge rijei posljednja dva bita bi morala biti nula. Ovakva dopuna izostavljena je radi jednostavnosti opisa. 5.3.2. Formati operanada i naredbi te njihova implementacija Kako je ve spomenuto procesor obavlja operacije nad oktetima, rijeima i dugim rijeima. Tip operanda u simbolikom jeziku odreen je oznakom .B, .W i .L za oktet, rije i dugu rije. Tako npr. za prebacivanje okteta koristi se naredba MOVE.B, a za prebacivanje rijei MOVE.W. Ukoliko se ekstenzija ne specificira uzima se da je operand rije. Veina operacija izvodi se nad svim tipovima operanada. Aritmetike operacije interpretiraju operande kao oktete, rijei ili dvostruke rijei bez i s predznakom (aritmetika dvostrukog komplementa). Naredbe specificiraju uz operacijski kod i spremnike ili memorijske lokacije na kojima su pohranjeni operandi, odnosno gdje je potrebno spremiti rezultat ili gdje se nalazi adresa grananja. Interpretacija ovih podataka je logiki najsloeniji dio pri opisu rada procesora. Kao prvo to je posljedica ogranienog broja bita naredbe pa projektanti koriste razliite trikove da bi njima kodirali to vei broj informacija. Sljedei problem je to formati naredbi nisu standardizirani. Konano kako je kod CISC procesora tendencija da procesor podrava sve mogue varijante neke naredbe sam opis naredbe se time znatno komplicira u usporedbi s opisom naredbi RISC procesora. Put dohvata operanda, adresni modovi MC68000. Nain pristupa memoriji i spremnicima (adresni mod) obino je odreen 6 bitovnim poljem unutar naredbe.

Sven Gotovac, Arhitektura i organizacija digitalnih raunala

11

5. Neki komercijalni procesori


5 m od 3 2 s p r e m n ik 0

Naziv
Pod. u sprem. direktno Adr. sprem. direktno Adr. sprem. indirektno Autoinkrement Autodekrement Baza+Pomak (Bazno) Bazno indeksno kratko Bazno indeksno dugo Apsolutno kratko Apsolutno dugo Relativno Rel. indeksno kratko Rel. indeksno dugo Trenutno

Mod
0 1 2 3 4 5 6 6 7 7 7 7 7 7

Spr.
0-7 0-7 0-7 0-7 0-7 0-7 0-7 0-7 0 1 2 3 3 4

Simboliki
Dn An (An) (An)+ -(An) disp16(An) disp8(An,XnLo) disp8(An,Xn) addr16 addr32 disp16(PC) disp8(PC,XnLo) disp8(PC,Xn) #data

Dodatna Rije
0 0 0 0 0 1 1 1 1 2 1 1 1 1-2

Kratak opis
Dn An M[An] M[An];AnAn+d AnAn-d;M[An] M[An+disp16] M[An+XnLo+disp8] M[An+Xn+disp8] M[addr16] M[addr32] M[PC+disp16] M[PC+XnLo+disp8] M[PC+Xn+disp8] data

Tablica prikazuje adresne modove odreene est bitovnim poljem naredbe. Prije nego to se pree na detaljan opis adresnih modova opisati e se mogui formati naredbi. Procesor prvo dohvata prvu rije naredbe i pohranjuje je u spremnik naredbe. Ova rije sadri specifikaciju (6 bita) jedne ili dviju adresa, kao to je prikazano na slici a). Kako je ve spomenuto svaka specifikacija adrese sastoji se od moda i spremnika. Neke naredbe zahtijevaju dodatnu rije ili rijei. Ove rijei obino su ili 8, 16 ili 32 bitovna konstanta, ali u sluaju indeksnog adresiranja druga rije sadri dodatne informacije. Kako se D i A spremnici mogu koristiti prilikom indeksnog adresiranja polje za specificiranje spremnika je duine 4 bita. Na slici su prikazani neki formati naredbi.
15 0 15 0

IR

op

rg 2

m d2

rg 1

m d1

. .. ...

rg 1

m d1

1 6 b it o v n a k o n s ta n t a a ) n a r e d b a z a p o m a k d u i n e 1 r i je i
15 0

IR d ru g a r i je

b ) n a r e d b a d u i n e 2 r ij e i
15 0

IR d ru g a r i je tr e a r i je

rg 1 m d 1 1 6 b it o v n a k o n s ta n t a 1 6 b i t o v n a k o n s ta n t a c ) n a r e d b a d u i n e 3 r ij e i

.. .. ..

.. . ...
d /a In d e x re g w /l 0 0 0

11 0

R eg

d is p 8

IR d ru g a r ij e

d ) n a r e d b a s i n d e k s n im a d r e s i r a n je m operacijski kod drugo polje spremnika prilikom prebacivanja

op5..0:=IR15..12: rg22..0:=IR11..9:

Sven Gotovac, Arhitektura i organizacija digitalnih raunala

12

5. Neki komercijalni procesori md22..0:=IR8..6: rg12..0:=IR5..3: md12..0:=IR2..0: XR[0..15]31..0:= D[0..7]31..0#A[0..7]31..0: xr5..0:=Mw[PC]15..12: wl:=Mw[PC]11: disp87..0:=Mw[PC]7..0: index :=((wl=0)XR[PC]15..0: (wl=1)XR[PC]31..0: drugo polje moda prilikom prebacivanja prvo polje spremnika prilikom prebacivanja prvo polje moda prilikom prebacivanja Indeksni spremnik moe biti D ili A polje specifikacije indeksa oznaka kratkog ili dugog indeksa pomak pri indeksnom modu kratka ili duga specifikacija indeksa

Adresni modovi grupirani su na one koji proraunavaju memorijsku adresu pomou spremnika ope namjene, one koje ne koriste spremnike ope namjene ali sve jedno proraunavaju memorijsku adresu i one koji ne pristupaju glavnoj memoriji. Adresni modovi koji koriste spremnike za proraun memorijske adrese. Adresni modovi koji koriste spremnike procesora za proraun efektivne adrese opisani su na sljedei nain: ea(md, rg):=( (md=2)A[rg2..0]: (md=3)A[rg2..0]A[rg2..0]+d; (md=4)A[rg2..0]A[rg2..0]-d; (md=5)A[rg2..0]+Mw[PC]; PCPC+2): (md=6)A[rg2..0]+index+disp8; PCPC+2): mod 2 je indirektno pomou spremnika mod 3 je autoinkrement mod 4 je autodekrement mod 5 je bazno adresiranje s pomakom mod 6 je bazno, indeksno adresiranje

Duina operanada B, W ili L enkodira se razliito u ovisnosti o naredbi ali to ovdje nee biti opisano. Kako dva adresna moda (mod 3 i 4) zahtijevaju informaciju o duini podatka, uvesti e se funkcija dataln(IR) koja vraa vrijednost 1, 2 ili4 u ovisnosti da li se radi o operaciji nad oktetom, rijei ili dvostrukoj rijei. d:=dataln(IR) broj okteta koji se dohvaaju naredbom U modu 2, indirektno adresiranje pomou spremnika, efektivna adresa je sadraj A spremnika, a operand ili rezultat su pohranjeni u memoriji kako je prikazano slikom:

Sven Gotovac, Arhitektura i organizacija digitalnih raunala

13

5. Neki komercijalni procesori


m e m o r ija a d re s n i s p r e m n ic i

M O V E ( A 6 ) , .. .
S p r e m n ik n a r e d b e . .. 010 re g a d re s a

A0

A6 A7

o p e ra n d

Modovi 3 i 4, autoinkrement i aoutodekrement, identini su modu 2 uz razliku da se sadraj adresnog spremnika povea, odnosno umanji za duinu podatka kojem se pristupa. I u ovom sluaju mogu biti specificirani samo adresni spremnici. Primjeri naredbi za prebacivanje podataka koje koriste modove 3 i 4 su: MOVE.L MOVE.W (A5)+, ... -(A4)+, ... ;A5 se povea za 4 nakon prebacivanja podatka ;A4 se umanji za 2 nakon prebacivanja podatka

Kombinacija prebacivanja podataka s inkrementiranjem i dekrementiranjem korisna je prilikom pristupa stogu. U modu 5, baznom adresiranju (based addressing), adresa u adresnom spremniku A koristi se kao baza kojoj se dodaje 16 bitovna konstanta upisana u rijei koja slijedi naredbu. Kod ovog adresnog moda naredbe su duine dvije rijei. U tom sluaju programsko brojilo mora se dodatno inkrementirati to je opisano RTNom kao PC PC+2. Kako je ve spomenuto manje su razlike izmeu baznog i indeksnog adresiranja. Kod baznog adresiranja pomak je ogranien na 16 bita. Kod MC68000 ne postoji jednostavno indeksno adresiranje, ali kako je pomak 16 bitovna rije, bazno adresiranje predstavlja adekvatnu zamjenu. Bazno adresiranje obino se koristi prilikom pristupa lanu zapisa ili strukture. Sadraj adresnog spremnika pokazuje na poetak strukture dok pomak odreuje njenog lana. Bazno adresiranje koristi se i kod prijenosa parametara ija bazna adresa je poznata. Mod 6, bazno indeksno adresiranje ( based indexed addressing) koristi tri elementa za proraun efektivne adrese: adresa := sadraj baznog spremnika + sadraj indeksnog spremnika + 8 bitovna konstanta. Opis disp8 := Mw[PC]7..0 oznaava da je 8 bitovna konstanta sastavni dio druge rijei naredbe (bitovi 0 do 7) upisane na memorijskoj lokaciji na koju pokazuje sadraj programskog brojila. Adresa baze upisana je u adresnom spremniku A, ali indeks moe biti upisan ili u adresni A ili podatkovni D spremnik to odreuje zastavica a/d (15 bit druge rijei naredbe). Proraun adrese moe obuhvaati ili 32 ili 16 bita indeksnog spremnika to odreuje zastavica w/l (11 bit druge rijei naredbe).

Sven Gotovac, Arhitektura i organizacija digitalnih raunala

14

5. Neki komercijalni procesori


m e m o r ija A0

M O V E . W l d i s p ( A 6 , D 4 ) , . ..
S p r e m n ik n a r e d b e i d r u g a r ij e . ..
d /a In d re g w /l 0 0 0 15 11 7 010 re g d is p 8 = ld is p

a d r e s n i s p r e m n ic i

b a z n a a d re s a

A6 A7 o p e ra n d

0 = 1 6 b ito v n i in d e k s 1 = 3 2 b it o v n i in d e k s 0 = in d e k s je u D s p r e m n ik u 1 = in d e k s je u A s p r e m n ik u

D4

I n d e k s ( 1 6 il i 3 2 )

D 0 -D 7 A 0 -A 7

Adresni modovi koji ne koriste spremnike. Adresni mod 7 ne koristi za spremnike D ili A za adresiranje. Ovaj mod ukljuuje relativno adresiranje gdje programsko brojilo preuzima ulogu baznog spremnika. Polje spremnika unutar naredbe odreuje vrstu relativnog adresiranja. (md = 7 rg = 0) mod 7, spremnik 0: kratko apsolutno (Mw[PC]{proirenje predznaka na 32 bita}; PC PC+2): (md = 7 rg = 1) (M[PC]; PCPC+4): mod 7, spremnik 1: dugo apsolutno

(md = 7 rg = 2) mod 7, spremnik 2: relativno prema PCu (PC+Mw[PC]{proirenje predznaka na 32 bita}; PC PC+2): (md = 7 rg = 3) (PC+indeks+disp8; PCPC+2): mod 7, spremnik 3: relativno indeksno

Za primijetiti je da nedostaje mod md = 7, rg = 4, koji predstavlja neposredno adresiranje koje e biti objanjeno naknadno. Mod 7, rg = 0 ili 1, odreuje kratko, odnosno dugo apsolutno adresiranje. Ovakvo adresiranje obino se naziva i direktno. Apsolutna adresa se ne mijenja ukoliko se program premjesti na drugu lokaciju u memoriji. Zato se koristi za pristup lokacijama koje nisu ovisne o poloaju programa kao npr. ulazno/izlazne adrese, ili varijable operacijskog sustava. Kratko i dugo apsolutno adresiranje rezultat je nastojanja da se moe ostvariti kompatibilnost s novim generacijama ovog procesora koje e koristit 32 bitovne adrese. Konstanta koja odreuje apsolutnu adresu pohranjena je u drugoj odnosno i treoj rijei naredbe. Primjeri ovih naredbi su: MOVE.B IOPORT.W, ... MOVE.W INTVECT.L, ... ;prebaci oktet s IOPORT odreen kratkom adresom ;prebaci rije s INTVECT odreenog dugom adresom

Mod 7, rg = 2, je relativno adresiranje ( relative addressing) kod kojeg se pomak specificira u odnosu na sadraj programskog brojila. Kod premjetanja programa na drugu

Sven Gotovac, Arhitektura i organizacija digitalnih raunala

15

5. Neki komercijalni procesori memorijsku lokaciju adresa operanda se pomie zajedno s programom. Kod ovog procesora nije dozvoljeno koritenje relativnog adresiranja za pohranu rezultata iz razloga to bi na taj nain rezultat mogao prepisati kod programa, a programi koji sami sebi mijenjaju kod nisu poeljni. Mod 7, rg = 3, relativno indeksno adresiranja ( relative indexed addressing) je analogno baznom indeksnom adresiranju uz razliku da se kao bazni spremnik koristi programsko brojilo umjesto adresnog spremnika. Relativno indeksno adresiranje koristi se za pristup tablicama koje su sastavni dio programa. Primjer relativnog indeksnog adresiranja je: MOVE.W POMAK(PC, D4), ... Adresni modovi koji ne pristupaju memoriji. Naravno nisu svi operandi ili rezultati pohranjeni u memoriji. Oni mogu biti ili u podatkovnim ili adresnim spremnicima. Njima se pristupa pomou njihovog rednog broja. Takoer mogue je da je operand konstanta koja je sastavni dio naredbe. Iako za te operande nije potrebno raunati efektivnu adresu ovakvo njihovo koritenje smatra se adresnim modom. Zbog mogunosti ovog procesora da obrauje operande razliitih duina, razliiti dijelovi spremnika koriste se za operande razliitih duina kao to je razliit broj dodatnih rijei naredbe zbog konstante koja je njen sastavni dio. U preciznom RTN opisu potrebno je razluiti ove situacije pomou konstante d := duinapod(IR). U nastavku slijedi opis ovog moda: memval(md, rg) := ( (md2..1 = 1) (md2..1 = 2) (md2..0 = 6) ((md2..0 = 7) (rg2 = 0))): opndl(md, rg)31..0 := ( memval(md,rg) Ml[ea(md,rg)]31..0: md = 0 D[rg]31..0: md = 1 A[rg]31..0: (md = 7 rg = 4) (Ml[PC]31..0: PC PC + 4)) opndw(md, rg)15..0 := ( memval(md,rg) Mw[ea(md,rg)]15..0: md = 0 D[rg]15..0: md = 1 A[rg]15..0: (md = 7 rg = 4) (Mw[PC]15..0: PC PC + 2)) opndb(md, rg)7..0 := ( memval(md,rg) Mb[ea(md,rg)]7..0: md = 0 D[rg]7..0: md = 1 A[rg]7..0: (md = 7 rg = 4) (Mb[PC]7..0: PC PC + 2)) opnd(md, rg) := ( (d = 1) opndb(md, rg): (d = 2) opndw(md, rg): memorijska adresa se koristi samo sa ovim adresnim modovima dugi operand moe biti: u memoriji u podatkovnom spremniku u adresnom spremniku u okviru naredbe rije (operand) moe biti: u memoriji u podatkovnom spremniku u adresnom spremniku u okviru naredbe oktet (operand) moe biti: u memoriji u podatkovnom spremniku u adresnom spremniku u okviru naredbe Duina operanda u naredbi ukazuje koji tip naredbe je potrebno

Sven Gotovac, Arhitektura i organizacija digitalnih raunala

16

5. Neki komercijalni procesori (d = 4) opndl(md, rg)): koristiti

Modovi 0 i 1, direktno podatkovni odnosno adresni spremnik ( data register direct, address register direct) pristupaju operandima i pohranjuju rezultat direktno u spremnike ope namjene. Primjeri ovih naredbi su: MOVE MOVE D6, ... A6, ...

Mod 7, rg = 4, neposredno adresiranje ( immediate addressing) koristi se za pristup konstanti koja je sastavni dio programa. Konstanta moe biti oktet, rije ili dvostruka rije. Ovakva konstanta pohranjena je neposredno nakon prve rijei naredbe. Kod pristupa konstanti duine okteta zanemaruje se osma bita veeg znaenja druge rijei naredbe. Naredbe koje koriste neposredno adresiranje prikazane su na sljedeoj slici:
o k te t 111 1 0 0 0000 0000 15 8 7 v r ije d n o s t 0 15 r ije 111 1 0 0 v r ije d n o s t 0 15 d v o s t r u k a r i je 111 1 0 0 v r ije d n o s t M S B v r ije d n o s t L S B 0

M O V E .B # 1 2 , ...

M O V E .W

# 1 2 0 0 , ...

M O V E .L # 1 2 0 0 0 0 , ...

Saetak adresnih modova MC68000 Postoji vei broj adresnih modova kao i mogunost njihovog koritenja kod mnogih razliitih naredbi to je jedna od obiljeja CISC procesora. Osnovni elementi koje koriste adresni modovi su spremnici procesora, programsko brojilo te konstanta koja je sastavni dio naredbe. Kako je u okviru naredbe moe postojati promjenjivi broj konstanti tako su i naredbe razliitih duina. Praktiki ukoliko naredba za pomak koristi direktnu adresu za operand i rezultat ta naredba je duine pet rijei. Za primijetiti je da su A spremnici privilegirani prilikom prorauna efektivne adrese u usporedbi s D spremnicima. Samo A spremnici mogu se koristiti kod indirektnog adresiranja pomou spremnika te kod auotinkrementa i autodekrementa. Iako A i D spremnici se koriste kod indeksnog adresiranja, samo A spremnik moe biti baza. Pojedini adresni modovi imaju i dodatnog utjecaja na neke spremnike. Tako autoinkrement i autodekrement mijenjaju sadraj adresnog spremnika, a modovi koji zahtijevaju dodatne rije naredbe poveavaju za odgovarajuu vrijednost sadraj programskog brojila.

5.3.3. Skup naredbi MC68000 Slijedi opis skupa naredbi procesora MC68000. Razmatranje e zapoeti opisom aktivnosti koja je zajednika svim naredbama, a to je interpretacija naredbe. Pojam interpretacija naredbe je skraenica za ciklus dohvata i izvoenja naredbe. Posebna stanja ( exceptions) takoer se mogu promatrati kao interpretacija naredbe. Sven Gotovac, Arhitektura i organizacija digitalnih raunala 17

5. Neki komercijalni procesori Skup naredbi dijeli se u podskupove, klase naredbi slinih aktivnosti. Zbog velikog broja naredbi opisati e se samo najee koritene naredbe za prebacivanje podataka, aritmetike i logike naredbe te naredbe za upravljanje programskim tokom. Naredbe koje se relativno rijetko koriste kao i neke posebne naredbe biti e preskoene. Njihov opis dostupan je u literaturi koju daje proizvoa ovog procesora. Ciklus dohvati i izvedi (fetch-execute). Neke aktivnosti zajednike su svim naredbama procesora. Temelj procesora je ciklus dohvati i izvedi. Za svaku naredbu potrebno je dohvatiti rije koja predstavlja naredbu, pohraniti je u spremnik naredbe, poveati sadraj programskog brojila da pokazuje na sljedeu rije te poduzeti aktivnosti u ovisnosti o sadraju spremnika naredbe, odnosno izvesti naredbu. Za vrijeme izvoenja naredbe programsko brojilo moe biti dodatno poveano ukoliko je potrebno dohvatiti konstantu koja je sastavni dio naredbe. Kod RTN opisa ovog ciklusa ponovo se koristi Run zastavica koja je praktiki vanjski signal koji se koristi da zaustavi izvoenje programa. interpretacija_naredbe := ( Run ((IR15..0 Mw[PC] 15..0: PC PC + 2); izvoenje_naredbe); dok je izvoenje dohvati naredbu inkrementiraj PC i izvedi naredbu

Naknadno kada se budu opisivala posebna stanja i prekidi ustanoviti e se da se interpretacija naredbe ne sastoji samo od ciklusa dohvati i izvedi. Dodatno uz obradu posebnih stanja postoje i odreene informacije o stanju procesora koje utjeu na interpretaciju naredbe. Upravljanje procesorom i razine privilegija . Oktet veeg znaenja statusnog spremnika posveen je definiranju statusa procesora kao i njegovim upravljanjem. Procesor MC68000 ima dvije razine privilegija, nadzorni mod rada i korisniki. U nadzornom modu, kada je S bit statusnog spremnika postavljen mogu se izvoditi sve naredbe kojima raspolae procesor. Tu spadaju i privilegirane naredbe koje mogu mijenjati sadraj statusnog spremnika i sistemskog kazala stoga A7. U korisnikom modu rada privilegirane naredbe se ne mogu izvesti. Mod u kojem se procesor nalazi signaliziran je logikom razinom na jednom izlazu sklopa. Ovaj signal moe koristiti npr. sklop za upravljanje memorijom kako bi dodatno ograniio pristup odreenim memorijskim lokacijama. Naredbe za prebacivanje podataka . Sljedea tablica prikazuje neke naredbe za pomak podataka: Naredba
MOVE.B MOVE.W MOVE.L MOVEA.W MOVEA.L LEA.L EXG EAs: EAd: EAc:

Operandi
EAs, EAd EAs, EAd EAs, EAd EAs, An EAs, An EAc, An Dx, Dy

Prva rije
0001ddddddssssss 0011ddddddssssss 0010ddddddssssss 0011rrr001ssssss 0010rrr001ssssss 0100aaa111ssssss 1100xxx1mmmmmyyy

XNZVC
x x x x x x 0 0 0 0 0 0 -

Operacija
dst src dst src dst src An src An src An EA Dx Dy

Veliina
oktet rije dvostruka rije rije dvostruka rije adresa dvostruka rije

Adresa izvora (source), svi adresni modovi osim prebacivanje okteta u adresni spremnik Adresa odredita (destination), svi adresni modovi osim neposrednog ili relativnog Upravljaka adresa (control), svi adresni modovi osim pomou spremnika, autoinkrement i autodekrement i neposredno ssssss, dddddd: specifikacija adresnog moda izvorine i odredine adrese

Sven Gotovac, Arhitektura i organizacija digitalnih raunala

18

5. Neki komercijalni procesori


rrr, yyy: aaa: An, Dn: mmmmmm: Uvjetni kod: specifikacija jednog od osam spremnika jedan od osam adresnih spremnika jedan od osam adresnih ili podatkovnih spremnika polje moda. 01000 - izmjeni sadraj podatkovnihspremnika, 01001 izmjeni sadraj adresnih spremnika, 10001 izmjeni sadraj adresnih i podatkovnih spremnika, xxx odreuje podatkovni a yyy adresni spremnik - nepromijenjena predhodna vrijednost, x operacija mijenja zastavicu, 0 ili 1 - vrijednost

Prve tri naredbe, MOVE, podrazumijevaju prijenos podataka izmeu dviju memorijskih lokacija. Druge dvije naredbe, MOVEA, podrazumijevaju da je jedan ili oba operanda pohranjeni u spremnicima. Znaenje pojedinih polja prve rijei naredbe detaljno je opisano legendom iza tablice. Tablica pokazuje da prve tri naredbe mijenjaju stanje zastavica u spremniku stanja. Ako se prebacuje negativna vrijednost ili nula tada se postavljaju zastavice N i Z. Kako se ne radi o aritmetikim ili logikim operacijama nije mogue da doe do preteka ili prijenosa pa se V i C bitovi postavljaju u nulu. Sljedei RTN opis MOVE naredbi koristi dodatni privremeni spremnik tmp 31..0 kako bi opisao utjecaj naredbe na zastavice spremnika stanja. Ovaj spremnik ne postoji u praktinoj implementaciji. Sljedei je RTN opis naredbe MOVE: op5..0 := IR15..12: rg12..0 := IR2..0: md12..0 := IR5..3: rg22..0 := IR11..9: md22..0 := IR8..6: tmp31..0: move (:= op5..2 := 0) ( tmp opnd(md1, rg1); ( Z (tmp=0): N (tmp<0): V 0: C 0 ): rslt(md2, rg2) tmp): Programeri nisu bili jedinstveni u ocjeni da li je potrebno da naredbe za prebacivanje podataka mijenjaju sadraj spremnika stanja, odnosno da li to dozvoliti samo aritmetikim i logikim naredbama. Naredba MOVEA omoguava prebacivanje vrijednosti, obino adrese, u jedan od adresnih spremnika bez utjecaja na spremnik stanja. Ovo je razumno rjeenje s obzirom na injenicu da pri prebacivanju adrese programer nije zainteresiran za njenu aritmetiku vrijednost. Paljivo razmatranje operacijskog koda ukazuje da MOVEA je praktiki MOVE naredba s adresnim modom 1. Ovo rjeenje istog operacijskog koda dviju naredbi uz dodatnu provjeru polja specifikacije adresnog moda koji odreuje da li naredba utjee ili ne na spremnik stanja, uslonjava RTN opis naredbi kao i postavlja dodatne zahtjeve na sklopovsku realizaciju procesora LEA naredba (load effective address) omoguava programeru da provodi sloeniji proraun adrese operanda, pohrani rezultat prorauna u adresni spremnik, a sve bez pristupa toj adresi. RTN opis ove naredbe je: lea (:=op5..0 = 0100) md2 = 7)) A[rg2] ea(md1,rg1): Opis pokazuje da se adresa, a ne sadraj adrese upisuje u odredini spremnik. Nisu dozvoljeni svi adresni modovi jer npr. adresiranje pomou spremnika ili neposredno adresiranje ne izvodi proraun adrese.

Sven Gotovac, Arhitektura i organizacija digitalnih raunala

19

5. Neki komercijalni procesori Naredba EXG (exchange registers) zamjenjuje sadraj dvaju spremnika. Pored oblika naredbe prikazanog u tablici kada se zamjenjuje sadraj dvaju podatkovnih spremnika, mogue je i zamijeniti sadraj dvaju adresnih spremnika te jednog podatkovnog i jednog adresnog spremnika. Ova naredba ne utjee na sadraj spremnika stanja. Osim navedenih postoje i druge naredbe za prebacivanje podataka kao npr. naredba kojom se sadraj kratke konstante koja je sastavni dio naredbe upisuje u spremnik MOVEQ, odnosno naredba koja zamjenjuje oktete jedne rijei SWAP, i druge. I bez detaljnije analize prikazanih naredbi uoava se nedostatak pravilnosti u obliku naredbi. To je posljedica namjere projektanta da sa to manje bita kodira to vei broj naredbi i adresnih modova. Aritmetike i logike naredbe . U sljedeoj tablici prikazan je dio aritmetikih i logikih naredbi procesora MC68000: Naredba
ADD SUB CMP CMPI MULS DIVS AND OR EOR CLR NEG TST NOT rrr mmm

Operandi

Naredbena rije

XNZVC

Operacija

Veliina

EA aaaaaa ww CMPI

1101rrrmmmaaaaaa x x x x x EA,Dn b, w, l dst dst + src 1001rrrmmmaaaaaa x x x x x EA,Dn b, w, l dst dst - src 1011rrrmmmaaaaaa - x x x x EA,Dn dst-src b, w, l 00001100wwaaaaaa - x x x x #dat,EA dst-immed.data b, w, l 1100rrr111aaaaaa - x x 0 0 EA, Dn DnDn*src lw*w 1000rrr111aaaaaa - x x x 0 EA,Dn DnDn/src ll/w 1100rrrmmmaaaaaa - x x 0 0 EA,Dn b, w, l dstdstsrc 1000rrrmmmaaaaaa x x 0 0 EA,Dn b, w, l dstdstsrc 1011rrrmmmaaaaaa - x x 0 0 EA,Dn b, w, l dstdstsrc 01000010wwaaaaaa - 0 1 0 0 EAs b, w, l dstdst 01000100wwaaaaaa - x x x x EAs b, w, l dst0 - dst 01001010wwaaaaaa - x x 0 0 EAs b, w, l dst0 01000110wwaaaaaa x x x x EAs b, w, l dst dst je D spremnik 3 bitovno polje moda koje specificira dst, EA ili Dn i operande kao b, w, ili l oktet rije dvostruka rije odredite 000 001 010 Dn 100 101 110 EA efektivna adresa 6 bitovno polje koje specificira adresiranje. Nisu svi modovi dozvoljeni kod ovih naredbi polje koje specificira veliinu rijei: 00 oktet, 01 rije, 10 dvostruka rije naredbu slijedi jedna ili dvije rijei koje sadre neposredni operand za usporedbu

Naredbe za zbrajanje ADD, oduzimanje SUB i usporedbu CMP imaju isti oblik, a razlikuju se samo u etiri bita najveeg znaenja naredbene rijei. Ova etiri bita odreuju o kojoj se operaciji radi. Ove operacije provode se nad operandima duine okteta, rijei ili dvostruke rijei u ovisnosti o vrijednosti polja op-moda mmm. Jedan od operanada mora biti u podatkovnom spremniku Dn, dok je drugi odreen est bitovnim EA poljem. mmm polje takoer odreuje da li se rezultat operacije (odredite) pohranjuje u podatkovni spremnik Dn ili u memoriju EA. Naredbe CMPI usporeuje neposrednu vrijednost koja je sastavni dio naredbe s podatkom pohranjenim u memoriji. Naredbe za zbrajanje i oduzimanje su tipine aritmetike naredbe. Kod MC68000 rezultat uvijek prepisuje vrijednost drugog operanda. Ukoliko se zanemari postavljenje zastavica spremnika stanja, RTN opis naredbe za oduzimanje SUB je: Sven Gotovac, Arhitektura i organizacija digitalnih raunala 20

5. Neki komercijalni procesori sub(:= op = 9) (md22 = 0) D[rg2] D[rg2] opnd(md1,rg1): (md22 = 1) (memval(md1,rg1) (tmp ea(md1,rg1); M[tmp] M[tmp] D[rg2]): memval(md1,rg1) rslt(md1,rg1) rslt(md1.rg1) D[rg2])): Naredba SUB definirana je operacijskim kodom 9. U ovisnosti o polju md2 moe se od spremnika odbiti vrijednost iz memorije (2 bit md2 je 0) ili od vrijednosti memorije odbiti sadraj spremnika. U drugom sluaju polja md1 i rg1 mogu specificirati gdje se nalazi adresa operanda, kada je potrebno efektivnu adresu dohvatiti iz memorije i pohraniti je u privremeni spremnik tmp, a tek onda dohvatiti operand i pohraniti rezultat. Ukoliko ova polja direktno odreuju adresu operanda bez pristupa memoriji mogue je preskoiti prvi korak. Naredbe CMP i CMPI razlikuju se od ostalih aritmetikih i logikih naredbi budui da one nigdje ne upisuju rezultat obrade. Ove naredbe koriste se kako bi se postavile zastavice u spremniku stanja bez ikakve preinake operanada. Naredba MULS mnoi dvije rijei s predznakom. Rezultat se pohranjuje kao dvostruka rije u jedan od podatkovnih spremnika. Slino naredba DIVS dijeli jednu dvostruku rije s predznakom iz podatkovnog spremnika Dn s jednom rijei s predznakom iz memorije pohranjene na adresi EA. Rezultat dijeljenja, odnosno kvocijent upisuje se u rije manjeg znaaja spremnika Dn, dok se ostatak dijeljenja upisuje u rije veeg znaaja spremnika Dn. Takoer postoje naredbe za mnoenje i dijeljenje bez predznaka, MUL i DIV. Logike operacije AND (I), OR (ILI) i EOR (iskljuivo ILI) imaju slian oblik naredbi ADD. Razlika je samo u etiri bita veeg znaenja koji specificiraju operaciju. etiri unarne operacije CLR, NEG, TST i NOT takoer su meusobno slinog oblika. Osam bita veeg znaenja specificira o kojoj se operaciji radi, sljedea dva bita, ww, specificiraju tip operanda (oktet, rije, dvostruka rije), a posljednjih est bita specificira efektivnu adresu, EA. Naredba CLR (clear), oisti, postavlja sve bitove operanda u nulu. Naredba NEG (negate), negativno, odreuje negativnu vrijednost, odnosno 2ki komplement operanda. Naredba TST (test), ispitaj, ispituje vrijednost operanda i postavlja zastavice spremnika stanja ukoliko je operand negativan N zastavicu, odnosno ako je nula Z zastavicu. Naredba NOT, ne, izvodi logiku NE operaciju nad operandom mijenjajui nule jedinicama te jedinice nulama, odnosno odreuje 1vi komplement. Postoje jo i naredbe koje izvode aritmetike i logike operacije nad neposrednim vrijednostima, ADD, SUB, CMP, AND, OR i EOR. Logike naredbe mogu se koristiti za ienje (AND) (postavljanje u nulu), postavljanje (OR) ili invertiranje (EOR) bita operanada. Dodatno MC68000 moe obavljati operacije nad pojedinanim bitovima operanada, postavi u nulu (BCLR) ili jedinicu (BSET), invertiraj (BCHG), ispitaj (BTST). Ove naredbe rade s oktetima ili dvostrukim rijeima. Redni broj bita koji se obrauje odreen je direktnim poljem naredbe ili moe biti sadraj podatkovnog spremnika. Redni broj bita za operand duine okteta specificiran je s tri bita manjeg znaenja, a za operand duine dvostruke rijei s pet bita manjeg znaenja.

Sven Gotovac, Arhitektura i organizacija digitalnih raunala

21

5. Neki komercijalni procesori Naredbe za posmak i rotaciju koriste se za pomicanje ili rotiranje sadraja spremnika u lijevo ili desno za odreeni broj mijesta. Bit najveeg, odnosno najmanjeg znaenja pohranjuje se pri svakom posmaku u spremnik statusa na mjesto C ili X bita. Rotacija se izvodi preko X bita. Naredbe za posmak i rotaciju prikazane su u tablici. Pri tome d bit je oznaka smjera posmaka, odnosno rotacije.

Sven Gotovac, Arhitektura i organizacija digitalnih raunala

22

5. Neki komercijalni procesori

Naredba
ASd ASd ASd ROd ROd ROd LSd LSd LSd ROXd ROXd ROXd d rrr ccc RRR EA aaaaaa

Operandi
EA #cnt,Dn Dm,Dn EA #cnt,Dn Dm,Dn EA #cnt,Dn Dm,Dn EA #cnt,Dn Dm,Dn

Naredbena rije
1110000d11aaaaaa 1110cccdww000rrr 1110RRRdww100rrr 1110011d11aaaaaa 1110cccdww011rrr 1110RRRdww111rrr 1110001d11aaaaaa 1110cccdww001rrr 1110RRRdww101rrr 1110010d11aaaaaa 1110cccdww010rrr 1110RRRdww110rrr

XV
xx xx xx -0 -0 -0 x0 x0 x0 x0 x0 x0
C C X

Operacija
ASL 0 ASR Dn RO L RO R Dn C X 0 LS L 0 LS R Dn R O XL R O XR Dn C X C X C X

X C

bit smjera: 0 ili D posmak/rotacija u desno, 1 ili L - posmak/rotacija u lijevo jedan od podatkovnih spremnika Dn broj pomaka: 0 = 8, 1 7 = broj spremnik gdje je broj pomaka pohranjen efektivna adresa odreena s aaaaaa est bitovno polje koje specificira efektivnu adresu. Svi su modovi dozvoljeni osim neposrednog, direktno adresni spremnik, relativno i indeksno relativno ww veliina operanda: 00 oktet, 01 rije, 10 dvostruka rije N, Z i C bitovi spremnika statusa mijenjaju svim naredbama

Naredbe za upravljanje programskim tokom . MC68000 koristi uvjetna grananja temeljen stanja jednog ili vie zastavica, bitova, spremnika statusa, C, N , V i Z. Sljedea tablica prikazuje naredbe za upravljanje programskim tokom. Naredba
Bcc DBcc

Operandi
disp Dn,disp

Naredbena rije
Uvjetna grananja 0110ccccdddddddd DDDDDDDDDDDDDDDD 0101cccc11001rrr DDDDDDDDDDDDDDDD 0101cccc11aaaaaa

Operacija
if (cond) then PC PC + disp if (cond) then (Dn Dn 1 if Dn -1 then PC PC + disp) else PC PC + 2 if(cond) then (EA) FFH else (EA) 00H

Scc

EA

BRA BSR JMP JSR

disp disp EA EA

Bezuvjetna grananja 01100000dddddddd PC PC + disp DDDDDDDDDDDDDDDD 01100001dddddddd -(SP) PC; PC PC + disp DDDDDDDDDDDDDDDD 0100111011aaaaaa PC EA 0100111010aaaaaa -(SP) PC; PC EA Naredbe za povrat iz potprograma

Sven Gotovac, Arhitektura i organizacija digitalnih raunala

23

5. Neki komercijalni procesori


RTR RTS 0100111001110111 0100111001110101 CC (SP)+; PC (SP)+ PC (SP)+

rrr adresni spremnik An Ako je 8 bitovni pomak dddddddd jednak nuli, tada je pomak DDDDDDDDDDDDDDDD EA efektivna adresa aaaaaa 6 bitovno polje za specifikaciju adrese. Nisu dozvoljeni svi adresni modovi ww duina operanda, 00 oktet, 01 rije, 10 dvostruka rije cccc kod uvjeta definiran sljedeom tablicom

Kod uvjeta cccc je etiri bitovno polje koje je dio naredbe, ije znaenje je definirano sljedeom tablicom: Naziv
T F CC CS EQ NE MI PL LS LT GE GT LE HI VC VS

Znaenje
istina (true) nije istina (false) C nije postavljen (carry clear) C postavljen (carry set) jednako (equal) nije jednako (not equal) minus plus manje ili jednako (low or same) manje od (less than) vee ili jednako (greater or equal) vee od (greater than) manje od (less or equal) visok (high) nema preteka (overflow clear) pretek postavljen (overflow set)

Kod
0000 0001 0100 0101 0111 0110 1011 1010 0011 1101 1100 1110 1111 0010 1000 1001

Zastavice
1 0 C C Z Z N N C+Z (NV)(NV) (NV)( NV) (NVZ)(NVZ) (NV)(NV)Z CZ V V

U tablici koja prikazuje naredbe za upravljanje programskim tokom koristi se opis kao u viim jezicima. Razlog je sloen i dug opis pomou RTNa. Tako npr. (SP) oznaava da se kazalo stoga, SP, dekrementira a zatim koristi kao adresa za upis vrijednosti. Praktiki ovo oznaava operaciju stavljanje varijable (podatka ili adrese) na stog. Slino (SP)+ oznaava da se oitava vrijednost s adrese na koju pokazuje kazalo stoga, a zatim se kazalo stoga inkrementira. Ovo je operacija skidanja varijable sa stoga. Naredba za uvjetno grananje, Bcc, koristi se za upravljanje programskim tokom temeljen stanja jedne ili vie zastavica uvjeta (bitova spremnika stanja). Na ovaj nain mogue je realizirati razliita usporeivanja, vee, vee ili jednako, jednako, manje ili jednako, manje. Primjer ovih naredbi je ispitivanje da li je varijabla X jednaka nuli, te ako je, izvoenje programa se nastavlja na drugoj lokaciji (simboliki oznaena s LOC). Primjena ove naredbe prikazana je primjerom: if (X = 0) X LOC goto LOC ;postavlja Z ili N zastavice ;grananje na LOC ako je Z postavljen (Z = 1) TST BEQ

Naredba za dekrementiranje i grananje ukoliko je uvjet ispunjen, DBcc ( decrement and branch if condition), koristi se kod petlji. Ovu naredbu odreuju tri parametra, spremnik koji Sven Gotovac, Arhitektura i organizacija digitalnih raunala 24

5. Neki komercijalni procesori slui kao brojilo, Dn, adresa grananja, disp, i uvjet grananja, cc. Ova naredba djeluje na sljedei nain: Ispituje se uvjet grananja cc. Ako je zadovoljen, naredba se prekida nakon to se uvea programsko brojilo koje sada pokazuje na sljedeu naredbu. Ako uvjet nije zadovoljen, sadraj spremnika Dn se dekrementira. Ako je rezultat 1 (to pokazuje da je odbrojen broj prolaza kroz petlju) naredba se zavrava i prelazi se na izvoenje sljedee naredbe, odnosno izlazi iz petlje. Ako rezultat nakon dekrementiranja nije 1, tada se izvodi relativno grananje na adresu poetka petlje. Opis naredbe ukazuje da se ona moe koristiti za upravljanje petljom na nain ili da petlja zavrava kada je sadraj spremnika jednak 0 ili kada je zadovoljen uvjet odreen naredbom. Ako uvjet nije specificiran tada se petlja izvodi sve dok sadraj spremnika nije jednak nuli. Naredba Scc ispituje uvjet (zastavice stanja) te ako je uvjet zadovoljen upisuje na adresu FFH, a ako nije upisuje 00H. FFH moe se tumaiti kao logika konstanta istina ( True), a 00H kao logika konstanta neistina ( False). Ovo je proizvoljna interpretacija Booleove algebre od strane projektanta procesora. Mogunost postavljanja Booleovih varijabli korisna prilikom prorauna sloenijih Booleovih funkcija. Za bezuvjetna grananja koriste se naredbe BRA ( Branch) i JMP(Jump). Naredba BRA ima za posljedicu bezuvjetan nastavak izvoenja programa na adresi koja se nalazi udaljena za vrijednost konstante, koja je sastavni dio naredbe, od trenutne vrijednosti programskog brojila. Ukoliko je polje prve rijei naredbe dddddddd 0 tada ono odreuje 8 bitovni pomak, ukoliko je dddddddd = 0 tada pomak odreuje druga rije naredbe. JMP naredba razlikuje se od naredbe za grananje utoliko to koristi standardnu efektivnu adresu (apsolutnu adresu) za nastavak programa. Naredbe BSR (Branch to Subroutine), JSR (Jump to Subroutine), RTS (Return from Subroutine), i RTR (Return) koriste se za poziv i povratak iz procedura. Naredbe za poziv procedura ili potprograma, BSR i JSR, prvo stavljaju programsko brojilo na stog, a zatim izvode relativno ili apsolutno grananje. Adresa naredbe koja je sljedila poziv potprograma sada se nalazi na vrhu stoga. Po zavretku potprograma izvoenjem naredbe za povratak iz potprograma, RTS, skida se sadraja s vrha stoga i prebacuje u programsko brojilo. Nastavak programa je na naredbi koja je slijedila poziv potprograma. Naredba RTR ima slino djelovanje kao i naredba RTS s tim da prvo se sa stoga skida sadraj koji se pohranjuje u spremnik stanja (samo korisniki oktet), a zatim sadraj koji se pohranjuje u programsko brojilo. Ova naredba posljedica je potrebe da se ponekad nakon izvoenja potprograma obnovi ne samo stanje programskog brojila nego i stanje spremnika stanja (korisnikog okteta) iz trenutka grananja u potprogram. Da bi ova naredba ispravno djelovala potrebno je kao prvu naredbu potprograma staviti sadraj spremnika stanja na stog. 5.3.4. Primjer programa procesora MC6000 Iako je prethodnim tekstom opisan samo dio naredbi procesora MC68000 ipak su obraene sve znaajnije naredbe koje se koriste za prebacivanje podataka, aritmetike i logike naredbe te za upravljanje programskim tokom. Jednostavni programski odsjeak Sven Gotovac, Arhitektura i organizacija digitalnih raunala 25

5. Neki komercijalni procesori pokazati e koritenje tih naredbi, kao i neke druge karakteristike simbolikog jezika procesora MC68000. Uz naredbe kod simbolikog jezika postoje i direktive programuprevodiocu. One pomau programeru da itljivije i jednostavnije napie program te da definira apsolutne adrese. Direktive su npr. EQU (equate), direktiva koja pridodaje konstante simboliko ime. Tako u programu nije vie potrebno pisati vrijednost konstante nego je dovoljno se pozivati na njeno ime. DS.B/W/L (data storage), koristi se za rezerviranje memorije za varijable. ORG (origin), specificira da odsjeak programa koji slijedi poinje na adresi definiranoj ovom direktivom. Kod upisa programa u memoriju odsjeci programa moraju biti poinjati upravo na specificiranoj adresi. Temeljen ove direktive program prevodilac odreuje apsolutne adrese. # je oznaka za vrijednost. Ako se napie naredbe MOVE.W #10, D0 to znai da je nova vrijednost spremnika D0 = 10, za razliku MOVE.W 10,D0 kada se u D0 upisuje rije s memorijske adrese 10. $ je oznaka za heksadecimalnu vrijednost. $10 je 10H = 16.

Zadatak je napisati program koji pretrauje polje od 132 znaka koji predstavljaju liniju teksta traei znak za kraj linije i povratak na poetak ( carriage return CR), odnosno ASCII vrijednost 15. CR DUZ EQU 13 EQU 132 ORG $1000 LINIJA DS.B DUZ MOVE.B #DUZ-1, D0 MOVEA.L #LINIJA, A0 PETLJA CMPI.B #CR, (A0)+ DBEQ D0,PETLJA ;definira 13 kao CR ;definira 132 kao DUZ ;LINIJA je na adresi 1000H ;rezervira se DUZ (132) okteta memorije ;u D0 spremnik upisuje DUZ-1 (131), brojilo ;u A0 upisuje LINIJU (1000H), poetak linije ;usporeuje oktet sa CR (13) i inkrementira A0 ;Dvostruko ispitivanje ;ako nije postavljena Z zastavica ;(rezultat prethodne usporedbe nije istina) i ;ako je sadraj D0 0 (nije ispitana cijela linija) ;tada grananje na adresu PETLJA ;inae nastavi sa sljedeom naredbom

Ovaj jednostavan programski odsjeak moe posluiti za analizu pojedinih direktiva i naredbi. Za uoiti je razliku izmeu direktive EQU i DS.B. Prva direktiva samo dodjeljuje simbolikoj konstanti vrijednost CR = 13 i DUZ = 132, dok druga direktiva rezervira 132 okteta memorije. Direktivom ORG postavlja se poetak podruja rezerviranog za 132 okteta na adresu 1000H. Takoer, program prevodilac automatski labeli odnosno imenu LINIJA dodjeljuje vrijednost 1000H. Sljedee to je vano uoiti je da je sastavni dio naredbe MOVE.B #DUZ - 1, D0 izraz DUZ 1 koji se praktiki sastoji od dvije konstante, simbolike DUZ = 132 i neposredne 1. Ova naredba je praktiki upisivanje neposredne konstante (131) u spremnik D0. Vrijednost

Sven Gotovac, Arhitektura i organizacija digitalnih raunala

26

5. Neki komercijalni procesori neposredne konstante izraunava se za vrijeme prevoenja programa, a ne tijekom njegova izvoenja. U programu postoji jo i labela PETLJA koja predstavlja adresu na kojoj je smjetena naredba CMPI.B #CR, (A0)+. Jedan od zadataka programa prevodioca je da i ovoj labeli dodjeli vrijednost. Postupak se sastoji u sljedeem. Programom je odreeno da se 132 okteta rezerviraju poevi od adrese 1000H (memorijski segment od 1000H do 1083H). Iza ovog segmenta slijedi program, to znai da prva naredba programa MOVE.B #DUZ-1, D0 poinje na adresi 1084H. Radi se o naredbi koja neposrednu konstantu duine okteta upisuje u spremnik. Ova naredba je duine dvije rijei, odnosno zauzima memorijske lokacije od 1084H do 1087H. Sljedea naredba MOVEA.L #LINIJA, A0 je naredba koja neposrednu konstantu duine dvostruke rijei prebacuje u adresni spremnik A0. Ova naredba je duine tri rijei, odnosno nalazi se na adresama od 1088H do 108DH. Sljedea naredba poinje na adresi 108E to je ujedno i vrijednost labele PETLJA.
m o d a d r e s ir a n ja iz v o r a m d = 7 , rg = 4 , n e p o s re d n o m o d a d r e s ir a n ja o d r e d i t a m d = 0 , r g = 0 , s p r e m n ik d ir e k t n o o p . k o d : M O V E .B 00 0 1 0 0 0 0 0 0 111 1 0 0 k o n s ta n ta 1 3 1 m o d a d r e s ir a n ja iz v o r a m d = 7 , rg = 4 , n e p o s re d n o m o d a d r e s ir a n ja o d r e d i t a r g = 0 , m d = 1 , s p r e m n ik d ir e k t n o o p . k o d : M O V E A .L 0 0 1 0 0 0 0 0 0 1 111 1 0 0 k o n s ta n ta 0 k o n s ta n ta 1 0 0 0 m o d a d r e s ir a n ja iz v o r a m d = 3 , r g = 0 , d ir e k t n o , a u t io in k r e m e n t o p e r a n d je o k t e t op. ko d: C M P I 0 0 0 0 11 0 0 0 0 0 11 0 0 0 k o n s ta n ta 1 3 s p r e m n i k D 0 s e u s p o r e u je u v je t n i k o d 0 1 1 1 = E Q op. kod: D B E Q 0 1 0 1 0 111 110 0 1 0 0 0 k o n s ta n ta -4 1111 1111 1111 0 11 0 0 0 0 0 0 00 0 00 0 0 11 0 1 0000 0000 0000 0000 0001 0000 0000 0000 00 0 0 0 0 0 0 1 0 0 0 0 0 11

M O V E .B
103CH 0083H

#DU Z - 1, D 0

M O V E A .L
207CH 0000H 1000H

# L IN IJ A , A 0

C M P I.B # C R , (A 0 )+
0C 18H 000D H 8 a d re s a u n a tra g

DBEQ
57C 8H FFF6H

D 0, P E TLJA

Sven Gotovac, Arhitektura i organizacija digitalnih raunala

27

5. Neki komercijalni procesori Ovi primjeri pokazuju da postoji niz aktivnosti koje se odvijaju tijekom prevoenja programa. Obino program prevodilac prevodi program u dva prolaza ( two pass assembler). U prvom prolazu generira se tablica simbolikih imena i njima se dodjeljuju vrijednosti. U drugom prolazu kodiraju se naredbe i upisuju u naredbe stvarne vrijednosti. 1000 1084 1088 108E 1090 103C 207C 0C18 57C8 0083 0000 000D FFF6 LINIJA DS.B DUZ MOVE.B #DUZ-1, D0 MOVEA.L #LINIJA, A0 CMPI.B #CR, (A0)+ DBEQ D0,PETLJA

1000 PETLJA

Drugi primjer je potprogram CLRBLK koji blok rijei postavlja u nulu. Za potprogram potrebno je inicjalizirati broj rijei koje je potrebno postaviti u nulu te poetnu adresu bloka. Posebno je potrebno obratiti panju na mogunost da je inicjaliziran broj rijei jednak nuli. Tada se ne ponitava ni jedna rije bloka. ... MOVE.L MOVE.W JSR ... K BRA CLR.W DBF #POLJE, A0 BROJ, D0 CLRBLK ;u A0 poetna adresa polja ;u D0 broj podataka ;skok u potprogram

CLRBL PETLJA PETLJA1 RTS

;poetna adresa potprograma PETLJA1 ;bezuvjetni skok na adresu PETLJA1 (A0)+ ;postavljanje rijei na adresi A0 u 0 i inkr. A0 D0, PETLJA ;dekrementiranje D0 i ako je 0 grananje na PETLJA ;povratak iz potprograma

5.3.3. Obrada posebnih stanja Posebna stanja (exceptions) su nepredvieni dogaaji koji se zbivaju tijekom izvoenja programa. Za njihovu obradu posebne su posebne procedure. Mogue su tri vrste posebnih stanja: prekidi (interrupts), zamke (traps) i praenje (traces). Prekide uzrokuju vanjski dogaaji (tipka s tipkovnice, mi, nestanak napajanja i sl.) koji zahtijevaju od procesora da prekine trenutnu obradu i izvede posebnu proceduru ( exception handler). Zamke su interno generirana posebna stanja kao npr. aritmetiki pretek, dijeljenje s nulom, dohvat naredbe koju je nemogue dekodirati, i sl. Praenje je zamka najveeg prioriteta koja se koristi za izvoenje programa naredbu po naredbu. Ovo je znaajno prilikom ispravljanja programa. Sekvenca obrade posebnih stanja . etiri su koraka pri obradi posebnih stanja: 1. 2. 3. 4. Pratiti i prilagoditi stanje procesora. Odrediti adresu procedure za obradu posebnog stanja. Spremiti staro stanje procesora na stog. Granati se u proceduru za obradu posebnog stanja.

U prvom koraku radi se privremena kopija spremnika stanja. Zatim se postavlja S bit u jedinicu, odnosno procesor u nadzorni mod. Ujedno se T bit postavlja u nulu onemoguavajui mod praenja tijekom izvoenja procedure za obradu prekida. Za svako posebno stanje mora postojati procedura za njegovu obradu ( exception handler). Ova procedura slina je obinom potprogramu. Poetna adresa ove procedure odreena je Sven Gotovac, Arhitektura i organizacija digitalnih raunala 28

5. Neki komercijalni procesori rednim brojem vektora posebnog stanja (exception vector number). U drugom koraku odreuje se redni broj vektora posebnog stanja. U sluaju prekida ovaj podatak vanjski ureaj dostavlja procesoru odmah nakon to je procesor prihvatio zahtjev za prekidom. U sluaju zamki broj vektora posebnog stanja se generira interno. Ovaj broj je oktet koji nakon posmaka u lijevo za dva mjesta odreuje adresu memorijske lokacije na kojoj je upisana adresa prve naredbe procedure za obradu tog posebnog stanja, vektor posebnog stanja (exception vector). Ovaj vektor je duga adresa duine etiri okteta. Prije nego to se izvri grananje u proceduru za obradu posebnog stanja, potrebno je prvo zapamtiti stanje procesora koje je bilo prije pojave posebnog stanja kako bi se prekinuti program naknadno mogao nesmetano nastaviti. Minimalno je potrebno zapamtiti stanje programskog brojila (adresa prekinute naredbe) te stanje spremnika stanja. Ove dvije veliine stavljaju je na sistemski stog na koji pokazuje spremnik A7. U posljednjem koraku vektor prekida upisuje se u programsko brojilo to praktiki predstavlja grananje u proceduru za obradu posebnog stanja. Po zavretku obrade potrebno je obnoviti staro stanje procesora na nain da se sa stoga prvo obnovi sadraj spremnika stanja, a zatim i sadraj programskog brojila. Ovo se izvodi naredbom RTE (return from exception) koja radi na slian nain kao RTR naredba. Razlika je to kod RTR naredbe se obnavlja samo sadraj korisnikog okteta, dok kod naredbe RTE se obnavlja cijela rije. Prioriteti prekida. MC68000 dozvoljava podjelu prekida u sedam razina prioriteta. Trenutni prioritet odreen je bitovima 8-10 spremnika stanja. Procesor ima tri izlaza na kojima signalizira vanjskim jedinicama trenutnu razinu prioriteta. Prekidi jednakog ili manjeg prioriteta se zanemaruju odnosno odbacuju. Procedura za obradu prekida upisuje razinu prioriteta prekida kojeg obrauje u spremnik stanja. Procesor sklopovski ispituje po zavretku svake naredbe ulaz za postavljanje zahtjeva za prekidom. Ovakav redoslijed je potreban zato to je potrebno da se tekua naredba izvri, a tek onda da se prekine izvoenje. Drugaije rjeenje moglo bi ostaviti procesor u nepoznatom stanju te ne bi mogue poslije obrade prekida nastaviti izvoenje prekinutog programa. Obrada posebnih stanja unosi odreene preinake u RTN opisu procesa interpretacije naredbe. Proirenje opisa zahtijeva dodatne deklaracije u opisu stanja procesora: Reset: exc_req: exc_lev2..0: vect7..0: exc := exc_req (exc_lev > INT): tmp15..0: Reset ulaz zastavica: zahtjev za posebnim stanjem razina posebnog stanja broj vektora posebnog stanja postoji zahtjev s prioritetom veim od trenutnog privremeni spremnik za spremnik stanja Normalno izvoenje Reset

Interpretacija_naredbe := ( Run (Reset exc) (IR Mw[PC]: PC PC + 2); Izvoenje_naredbe); Reset (INT2..0 7: S 1: T 0: SSP Ml[0]: PC Ml[4]: Reset 0: Run 1); Sven Gotovac, Arhitektura i organizacija digitalnih raunala

29

5. Neki komercijalni procesori Run Reset exc (Tmp Status: S 1: T 0; (SSP SSP - 4; Ml[SSP] PC; SSP SSP - 2; Mw[SSP] Tmp; INT2..0 exc_lev2..0: PC Ml[vect7..0#002]); Interpretacija_naredbe: 5.3.6. Ulazno/izlazne aktivnosti kod MC68000 Kod procesora mogue je ulazno/izlazne aktivnosti obavljati na dva naina: preko memorijski mapiranog adresnog prostora ili preko posebnog U/I adresnog prostora, slika.
M E M O R IJ A n - b it o v n a s a b ir n ic a M E M O R IJ A
M E M O R IJ S K A S A B IR N IC A

PC na stog spremnik stanja na stog

C PU

C PU
U /I S A B IR N IC A U L A Z N O /IZ L A Z N I P O D S U S TAV

U L A Z N O /IZ L A Z N I P O D S U S TAV

U L A Z N O /IZ L A Z N I U R E A JI

U L A Z N O /IZ L A Z N I U R E A JI

a ) m e m o r ijs k i m a p ir a n U /I

b ) p o s e b a n U /I p r o s to r

Memorijski mapiran U/I prostor koristi istu sabirnicu za pristup memoriji i ulazno/izlaznim ureajima. MC68000 koristi ovaj koncept. Dio memorijskih adresa dodijeljen je U/I ureajima. Obino se radi o neprekinutom segmentu najviih memorijskih adresa (npr. FF8000H FFFFFH). Kod ovakvog koncepta pisanje na ili itanje s U/I ureaja identino je pristupu memoriji. Poseban U/I prostor koristi jednu sabirnicu za pristup memoriji, a drugu za pristup U/I ureajima. Ovi procesori imaju posebne naredbe za pristup U/I ureajima. Prednost ovakvog pristupa je da se moe iskoristiti za memoriju cijela adresna sabirnica te se koristi kod nekih procesora sa 16 ili 24 bitovnom adresnom sabirnicom. Kako veina dananjih procesora ima 24 ili 32 bitovnu adresnu sabirnicu tako da postoji dovoljno mjesta za memoriju i U/I ureaje. Poseban problem je to zasebna U/I sabirnica zahtijeva dodatne izlaze na integriranom sklopu. Projektanti ako ve poveavaju broj noica integriranog sklopa, radije dodjeljuju ove ulaze ili izlaze podatkovnoj ili adresnoj sabirnici. Tako je MC68000 u svojoj prvoj verziji imao 64 noice, a PowerPC ima sve ukupno 304 noice od kojih 64 samo za podatkovnu sabirnicu. Primjer oitanja znaka s tipkovnice . Primjer memorijski mapiranog ulazno/izlaznog ureaja uzeti e se tipkovnica. Kako MC68000 ima 24 bitovnu adresnu sabirnicu adresni prostor e se podijeliti na memorijski, 000000H do FF7FFFH, i U/I, FF8000H do FFFFFFH. Sven Gotovac, Arhitektura i organizacija digitalnih raunala 30

5. Neki komercijalni procesori To znai da je gornjih 64K adresnog prostora dodijeljeno U/I ureajima. Tipkovnica je spojena na sabirnicu preko U/I meusklopa koji se sastoji od spremnika stanja i spremnika za podatak svaki veliine jednog okteta. Neka je spremnik stanja postavljen na adresi FF8006H, a spremnik podatka na adresi FF8008H. Kada se s tipkovnice upie podatak u spremnik podatka tada se ujedno postavlja i msb spremnika stanja u jedinicu. Procesor ita spremnik stanja, ispituje njegov msb i kada ustanovi da je msb = 1 ita podatak iz spremnika podatka. Sklopovi ujedno kada je oitan podatak postavljaju automatski msb spremnika stanja u nulu.

F F 7F F F H

m e m o r i ja
000000H

p ro c e s o r
n znak u p is a n m e u s k lo p t ik p o v n ic e S TATU S F F 8006H 1 K B D ATA F F 8008H 0 0 0 0 11 0 1 "Q "

t ip k o v n i c a

Sljedei programski odsjeak moe se koristiti za itanje znaka s tipkovnice: STATUS KBDATA RDCHAR EQU EQU ... TST.B BPL MOVE.B RTS FF8006H FF8008H STATUS RDCHAR KBDATA, D0 ;adresa spremnika stanja tipkovnice ;adresa spremnika podatka tipkovnice ;ispituje se stanje tipkovnice ;ako je pozitivno ponovo ispitivanje ;stanje negativno, ita se znak ;povratak iz potprograma

Za primijetiti je da procesor stalno ispituje status tipkovnice. Ako je msb statusa 0, odnosno njegova vrijednost je pozitivna, podatak nije upisan u spremnik podatka. Ispitivanje se ponavlja sve dok vrijednost spremnika stanja nije negativna (msb = 1). tj. upisan je znak s tipkovnice u spremnik podatka. Procesor sada moe proitati podatak. Ovakav nain komunikacije gdje procesor stalno ispituje stanje U/I ureaja da bi ustanovi da li je U/I ureaj spreman za prijenos informacije naziva se aktivno ekanje. Ako se uzme da je mogue utipkati 5 znakova u sekundi, a neka procesor u prosjeku obrauje 5 milijuna naredbi u sekundi, slijedi da procesor provede 99.9999% vremena u ekanju. U tom Sven Gotovac, Arhitektura i organizacija digitalnih raunala 31

5. Neki komercijalni procesori vremenu moda je bilo mogue provoditi neku drugu obradu. Zato je bolje rjeenje da se ovakav prijenos odvija preko zahtjeva za prekidom. Kada se s tipkovnice upie znak u podatkovni spremnik U/I meusklopa, postavi se procesoru znak za prekidom. Procesor prihvati prekid i pomou procedure za obradu prekida se proita znak iz U/I meusklopa. Dok se utipka novi znak procesor moe izvoditi neku drugu obradu. Ovo je tzv. obavljanje U/I operacije pomou zahtjeva za prekidom. 5.4. RISC procesor, SPARC SPARC (Scalable Processor ARChitecture) razvio je Sun Microsystems 1987. godine, ne kao mikroprocesor nego kao posebno rjeenje arhitekture raunala. SPARC je otvoren sustav u smislu da su brojni proizvoai poluvodikih sklopova dobili licence za proizvodnju sklopova namijenjenih ovom raunalu koritenjem razliitih tehnologija, CMOS, ECL, GaAs itd. SPARC International je meunarodni konzorcij koji se sastoji od proizvoaa raunala, a lanstvo je otvoreno i drugim proizvoaima. SPARC specifikacije definiraju spremnike ope namjene, spremnike za podatke prikazane s pominim zarezom (realne brojeve), spremnike proirenja procesora (coprocessor) te druge jedinice koje definiraju stanje procesora i 69 osnovnih naredbi. Memorijski model je linearan, s 32 bitovnom virtualnom adresom. Adresiraju se okteti memorije, ali se podaci prenose preko 32 bitovne podatkovne sabirnice. Svi novi SPARC procesori su binarno kompatibilni s prethodnom generacijom. Kroz sljedea razmatranja opisati e se programerska arhitektura ovog procesora. Kod razmatranja na razini implementacije ograniiti e se na prvi procesor ove arhitekture, Fujitsu MB86900, koji je radio s frekvencijom takta 16.6 MHz i imao prosjene performanse od oko 10 MIPSa. Prema tome prosjeno izvoenje naredbe, ciklus, iznosi 1.66 taktova. Originalna arhitektura SPARCa definira tri procesne jedinice: jedinicu za obradu cjelobrojnih veliina (integer unit) IU, jedinicu za obradu brojeva prikazanih s pominim zarezom (floating-point unit) FPU i proirenje procesora ( coprocessor) CP. IU je srce procesora. Ona izvodi proraune efektivnih adresa, cjelobrojnu aritmetiku i upravlja programskim tokom. FPU koja nee biti detaljnije analizirana izvodi obradu nad brojevima prikazanim s pominim zarezom. Moe biti zasebni integrirani sklop ili dio IU. CP izvodi razliite korisniki definirane obrade. SPARC arhitektura ne definira u detalje koje su to obrade nego samo definira veze izmeu CP i IU. Istraivanja provedena 80-tih godina pokazala su da znaajan dio prijenosa podataka izmeu memorije i procesora otpada na postupak pohrane stanja procesora prilikom poziva procedura te obnovu starog stanja po povratku iz procedura. Ovaj problem projektanti arhitekture rijeili su tako da procesor ima vei broj spremnika ope namjene koji je podijeljen na grupe ili prozore ( register windows). Samo je jedan prozor u odreenom trenutku vidljiv programeru. Samo jedan u dio spremnika ope namjene upisuju se globalne varijable, u drugi ulazni parametri procedure, u trei lokalne varijable procedure, a u etvrti izlazni parametri procedure. Prilikom poziva procedure stvara se novi prozor na nain da izlazni spremnici stare procedure postaju ulazni spremnici nove procedure. Ovakav prijenos parametara izmeu procedura ne zahtijeva nikakav fiziki prijenos podataka te ne troi vrijeme procesora. Ukoliko je potrebno prenjeti iz jedne procedure u drugu vei broj parametara tada je potrebno koristiti memoriju, odnosno stog.

Sven Gotovac, Arhitektura i organizacija digitalnih raunala

32

5. Neki komercijalni procesori Poveani broj spremnika ope namjene rezultirao je potrebom da polja naredbe koja ih specificiraju budu vea. Iako definicija SPARC arhitekture ne zadire u razinu implementacije ipak se kompromis napravi kako bi se mogao realizirati cjevovod. Tako ova arhitektura definira odgoeno grananje. 5.4. RISC procesor, SPARC SPARC (Scalable Processor ARChitecture) razvio je Sun Microsystems 1987. godine, ne kao mikroprocesor nego kao posebno rjeenje arhitekture raunala. SPARC je otvoren sustav u smislu da su brojni proizvoai poluvodikih sklopova dobili licence za proizvodnju sklopova namijenjenih ovom raunalu koritenjem razliitih tehnologija, CMOS, ECL, GaAs itd. SPARC International je meunarodni konzorcij koji se sastoji od proizvoaa raunala, a lanstvo je otvoreno i drugim proizvoaima. SPARC specifikacije definiraju spremnike ope namjene, spremnike za podatke prikazane s pominim zarezom (realne brojeve), spremnike proirenja procesora (coprocessor) te druge jedinice koje definiraju stanje procesora i 69 osnovnih naredbi. Memorijski model je linearan, s 32 bitovnom virtualnom adresom. Adresiraju se okteti memorije, ali se podaci prenose preko 32 bitovne podatkovne sabirnice. Svi novi SPARC procesori su binarno kompatibilni s prethodnom generacijom. Kroz sljedea razmatranja opisati e se programerska arhitektura ovog procesora. Kod razmatranja na razini implementacije ograniiti e se na prvi procesor ove arhitekture, Fujitsu MB86900, koji je radio s frekvencijom takta 16.6 MHz i imao prosjene performanse od oko 10 MIPSa. Prema tome prosjeno izvoenje naredbe, ciklus, iznosi 1.66 taktova. Originalna arhitektura SPARCa definira tri procesne jedinice: jedinicu za obradu cjelobrojnih veliina (integer unit) IU, jedinicu za obradu brojeva prikazanih s pominim zarezom (floating-point unit) FPU i proirenje procesora ( coprocessor) CP. IU je srce procesora. Ona izvodi proraune efektivnih adresa, cjelobrojnu aritmetiku i upravlja programskim tokom. FPU koja nee biti detaljnije analizirana izvodi obradu nad brojevima prikazanim s pominim zarezom. Moe biti zasebni integrirani sklop ili dio IU. CP izvodi razliite korisniki definirane obrade. SPARC arhitektura ne definira u detalje koje su to obrade nego samo definira veze izmeu CP i IU. Istraivanja provedena 80-tih godina pokazala su da znaajan dio prijenosa podataka izmeu memorije i procesora otpada na postupak pohrane stanja procesora prilikom poziva procedura te obnovu starog stanja po povratku iz procedura. Ovaj problem projektanti arhitekture rijeili su tako da procesor ima vei broj spremnika ope namjene koji je podijeljen na grupe ili prozore ( register windows). Samo je jedan prozor u odreenom trenutku vidljiv programeru. Samo jedan u dio spremnika ope namjene upisuju se globalne varijable, u drugi ulazni parametri procedure, u trei lokalne varijable procedure, a u etvrti izlazni parametri procedure. Prilikom poziva procedure stvara se novi prozor na nain da izlazni spremnici stare procedure postaju ulazni spremnici nove procedure. Ovakav prijenos parametara izmeu procedura ne zahtijeva nikakav fiziki prijenos podataka te ne troi vrijeme procesora. Ukoliko je potrebno prenjeti iz jedne procedure u drugu vei broj parametara tada je potrebno koristiti memoriju, odnosno stog. Poveani broj spremnika ope namjene rezultirao je potrebom da polja naredbe koja ih specificiraju budu vea. Sven Gotovac, Arhitektura i organizacija digitalnih raunala 33

5. Neki komercijalni procesori Iako definicija SPARC arhitekture ne zadire u razinu implementacije ipak se kompromis napravi kako bi se mogao realizirati cjevovod. Tako ova arhitektura definira odgoeno grananje. 5.4.1. SPARC arhitektura procesora i memorije Ako se zanemari koncept prozora spremnika, programerski model SPARC procesora je tipian model RISCa. Njegovi spremnici ope namjene dijele se na spremnika za pohranu cjelobrojnih veliina i na spremnike za pohranu brojeva s pominim zarezom. Odgoeno grananje zahtijeva upotrebu dvaju programskih brojila: PC koje sadri adresu naredbe koja se trenutno izvodi, te nPC koji sadri adresu sljedee naredbe koju treba izvesti. Stanje procesora, koje ukljuuje 32 spremnika ope namjene trenutno dostupnih programeru, jedan prozor spremnika, je prikazan na sljedeoj slici.
31 0 31 0 s p r e m n ik p o n a v l ja n j a m u lt ip ly s te p r e g is te r

nP C
p r o g r a m s k o b r o jil o s l je d e e n a r e d b e n e x t p r o g r a m c o u n te r 31 0

Y
31 0

PC
p r o g r a m s k o b r o jil o 31 0

TBR
31 b a z n i s p r e m n ik " z a m k e " t r a p b a s e r e g is te r 0

IR
s p r e m n ik n a r e d b e

W IM
k o d o v i u v je ta m a s k a n e v a e ih p ro z o r a w in d o v - in v a li d m a s k

PSR
31 r3 1 r3 0

n
0

c
31 0

s p r e m n ik s ta n ja p r o c e s o r a

u la z n i p a r a m e tr i lo k a ln i s p r e m n ic i iz la z n i p a ra m e tri g lo b a ln i s p r e m n ic i

f3 1 f3 0 f2 9

r2 4 r2 3

r1 6 r1 5

r8 r7 f2 f1 f0

r1 r0

s p r e m n i c i c je lo b r o jn ih v e li in a

s p r e m n ic i z a b r o j e v e s p o m i n i m z a r e z o m

Sven Gotovac, Arhitektura i organizacija digitalnih raunala

34

5. Neki komercijalni procesori Kao kod svih RISCova sve naredbe SPARC procesora jednake su duine, 32 bita i upisuju se u spremnik naredbe. Spremnik za opis stanja procesora ( processor state register) PSR, sadri kodove, zastavice uvjeta: negativan (n), nula (z), pretek (v), prijenos (c).U spremniku stanja procesora izmeu ostaloga upisan je i pokaziva na trenutni prozor spremnika te zastavice koje koriste prekidi i zamke. Spremnik maske nevaeih prozora (WIM) koristi sustavu za rad s prozorima spremnika, spremnik baze zamki (TBR) kod obrade zamki i prekida, te spremnik ponavljanja (Y) kod naredbi koje se izvode u vie koraka. Spremnici za pohranu brojeva s pominim zarezom mogu uskladititi 32 podatka jednostruke preciznosti (32 bita) ili 16 podataka dvostruke preciznosti (64 bita) ili 8 podataka etverostruke preciznosti (128 bita). Spremnici ovog procesora mogu se opisati sljedeim RTN opisom: PC31..0: nPC31..0: IR31..0: r[0..31]31..0: f[0..31]31..0: WIM31..0: TBR31..0: Y31..0: PSR..: CCR5..0:= PSR..: n:=CCR3: z:=CCR2: v:=CCR1: c:=CCR0: pokaziva na naredbu koja se trenutno izvodi pokaziva na sljedeu naredbu spremnik naredbe spremnici ope namjene za cjelobrojne varijable spremnici za varijable prikazane s pominim zarezom spremnik maske nevaeih prozora spremnik baze zamki spremnik ponavljanja spremnik stanja procesora spremnik kodova uvjeta zastavica negativan zastavica nula zastavica pretek zastavica prijenos

Prozori spremnika. Koncept prozora spremnika temelj je programerskog modela SPARC procesora. Sljedea slika prikazuje kako funkcionira sustav prozora spremnika.

Sven Gotovac, Arhitektura i organizacija digitalnih raunala

35

5. Neki komercijalni procesori


r3 1 r2 4 r2 3 r1 6 r1 5 r8 r3 1 r2 4 r2 3 r3 1 r2 4 r2 3 r1 6 r1 5 r8 r1 6 r1 5 r8

u la z n i p a r a m e tr i lo k a ln i s p r e m n ic i iz la z n i p a r a m e tr i u la z n i p a r a m e tr i lo k a ln i s p r e m n ic i iz la z n i p a r a m e tr i

u la z n i p a r a m e tr i lo k a ln i s p r e m n ic i iz la z n i p a r a m e tr i

r7

C W P = N

save

C W P = N - 1

r e s to r e

C W P = N

r0

g lo b a ln i s p r e m n ic i

Ukupan broj spremnika ovisi o realizaciji procesora, ali kod prve verzije SPARC procesora bilo je 120 spremnika. Osam spremnika, r0 r7, rezervirani su za globalne varijable i dostupni su svim procedurama. U spremnik r0 trajno je zapisana vrijednost nula pa itanje iz tog spremnika uvijek daje nulu, a pisanju u njega nema uinka. Preostalih 112 spremnika pripadaju sustavu prozora spremnika. Osam posljednjih spremnika prozora koriste se za ulazne varijable u proceduru. Sljedeih osam procedura koristi za lokalne varijable, a prvih osam spremnika za prijenos varijabli proceduri koju poziva, odnosno za izlazne varijable. Sustav ima pokaziva na aktivni prozor ( current window pointer), CWP, koji je nevidljiv korisniku, a vidi ga samo sistem programer. CWP se dekrementira naredbom save nakon koje izlazni spremnici postaju ulazni spremnici nove procedure. Naredbom restore inkremetira se sadraj CWP, odnosno obnavlja se stanje procesora prije poziva procedure. Prilikom poziva procedure sadraj programskog brojila, odnosno adresa na koju se potrebno vratiti nakon zavretka procedure, pohranjena je u r15, odnosno nalazi se u r31 ulaska u proceduru. Pokuaj izvoenja naredbe save kada su svi prozori u upotrebi uzrokuje posebno stanje ili zamku te rezultira u izbacivanju sadraja prvog prozora i stavljanju istoga na stog. Slino kada se izvede restore naredba, a aktivan je prvi prozor, ponovo dolazi do posebnog stanja i stanje procesora se obnavlja skidanjem sadraja spremnika sa stoga. Neki detalji aktivnosti vezanih uz promjene stanja procesora opisane su pomou RTN na sljedei nain: WR[0..311]31..0: WIM31..0: CWP4..0: wrb8..0:=CWP#00002: r[0..7]:=g[0..7]: g[0]31..0:=0: r[8..31]:=WR[wrb..wrb+23] maksimalni broj prozora spremnika maska nevaeih prozora tekui pokaziva prozora (dio PSR) baza prozora spremnika spremnici r0 do r7 su za globalne varijable g0 do g7 spremnik g0 za globalne varijable je jednak nuli posljednja 24 spremnika mijenjaju se sa CWP 36

Sven Gotovac, Arhitektura i organizacija digitalnih raunala

5. Neki komercijalni procesori save ((WIMCWP-2 = 1) window_ov: ((WIMCWP-2 = 0) (WIMCWP-2 1): (CWP CWP - 1)): restore ((WIMCWP+2 = 1) window_un: ((WIMCWP+2 = 0) (WIMCWP-2 0): (CWP CWP + 1)): Naredbe save i restore koriste maku nevaeih prozora kako bi detektirali da nema vie slobodnih prozora (windows overflow) windows_ov, odnosno da su svi prozori prazni (windows underflow) windows_un. Ove naredbe mijenjaju sadraj WIM i CWP kako bi pratile koji je prozor aktivan te koji su prozori zauzeti. Kako izlazni parametri novog prozora mogu kod store naredbe prepisati ulazne parametre nekog prozora koji pripada nekoj starijoj proceduri potrebno je ispitati ne samo prozor iza, nego i dva prozora iza aktivnog. To se realizira ispitivanjem bita maske nevaeih prozora WIM CWP-2 koji se nalazi na mjestu CWP 2. Ako je on jednak jedinici tada je taj prozor zauzet te ga se mora prvo sauvati, a tek onda dozvoliti prijelaz na novi prozor. Slino razmatranje vrijedi za naredbu restore. Pokaziva CWP ima pet bita te kod inkrementiranja vrijednosti 11111 prelazi automatski na vrijednost 00000. Slino vrijedi za njegovo dekrementiranje. Glavna memorija. Memorijska adresa je odreena s 32 bita. Memorijski prostor je linearan i sastoji se od 232 okteta. Varijable due od jednog okteta pohranjuju se po principu veeg kraja (big endian). Oktet na najmanjoj memorijskoj lokaciji sadri msb, a oktet na navioj memorijskoj lokaciji lsb. Memorija se opisuje na nain: Mb[0..232-1]7..0: memorija u oktetima Mh[a]15..0:=Mh[a]7..0#Mh[a+1]7..0: pola rijei Mw[a]32..0:=Mh[a]7..0#Mh[a+1]7..0#Mh[a+2]7..0#Mh[a+3]7..0: rije SPARC arhitektura definira i jedinicu za preslikavanje (mapiranje) memorije ( Memory Mapping Unit) MMU. Ova jedinica omoguava proirenje memorije na vie adresnih prostora ili segmenata. Samo jedan segment dostupan je korisniku dok operacijski sustav moe pristupati cijeloj memoriji. Pojedinim adresnom segmentu pristupa se pomou osam bitovnog indikatora (address space indicator). Osim funkcije proirenja memorijskog prostora ova jedinica ima i funkciju zatite dijelova memorije od neautoriziranog pristupa. 5.4.2. Operandi, formati naredbi i njihova interpretacija Naredbe mogu pristupati podacima duine 16 bita (pola rijei), 32 bita (rije) i 64 bita (dvostruka rije). Rijei i podaci vee duine moraju biti smjeteni na adresama djeljivim sa etiri, odnosno posljednja dva bita adrese najmanjeg znaenja moraju biti jednaka nuli. Naredbe obrauju cjelobrojne veliine duine okteta, pola rijei, rijei i dvostruke rijei bez i s predznakom u aritmetici 2kog komplementa te 32, 64 i 128 bitovne brojeve s pominim zarezom. SPARC takoer podrava sklopovski i oznaku tipa podataka. Posljednja dva bita oznaenog podatka rezervirana su za oznaku tipu podatka. Postoje naredbe koje ispituju oznaku tipa podatka i u ovisnosti o rezultatu postavljaju u jedinicu zastavicu preteka, a konani rezultat moe biti prekid zbog preteka. Ovo svojstvo korisna je podrka viim jezicima kao to su Lisp, Smalltalk i Prolog kod kojih se tipiziraju podatci za vrijeme izvoenja programa.

Sven Gotovac, Arhitektura i organizacija digitalnih raunala

37

5. Neki komercijalni procesori Formati naredbi. I kod ovog procesora format naredbe zahtijeva sloeni postupak interpretacije iako ne u istoj mjeri kao kod CISC procesora. SPARC ima 55 osnovnih naredbi sa cjelobrojnim veliinama kao i 14 naredbi s brojevima s pominim zarezom. Takoer postoji nekoliko formata naredbi za dodatni procesor koje nee biti razmatrane. Veina naredbi koristi jedan od tri formata prikazana na slici. Informacije o poljima naredbe opisana su na sljedei nain: op1..0:=IR31..30: disp3029..0:= IR29..0: a:= IR29: con5..0:= IR28..25: rd4..0:= IR29..25: op22..0:= IR24..22: disp2229..0:= IR21..0: op35..0:= IR24..19: rs14..0:= IR18..14: opf8..0:= IR15..3: i:= IR13: simm1312..0:= IR12..0: rs24..0:= IR4..0:
31 29

operacijski kod pomak za poziv bit ponitavanja kod grananja uvjet grananja odredini spremnik operacijski kod konstanta kod grananja ili sethi operacijski kod izvorini spremnik br. 1 dopunski operacijski kod za pomini zarez indikator neposrednog operanda direktni operand s predznakom izvorini spremnik br. 2
0 d is p 3 0 21 d is p 2 2 d is p 2 2 19 18 rs 1 rs 1 rs 1 0 1 14 13 opf asi 5 4 rs 2 rs 2 0 0

1 . P o z iv 2 a . G r a n a n ja 2 b . s e th i 3 a . P o m i n i z a r e z 3 b . P o m a k p o d a ta k a 3c. A LU

01 31 29 25 24 00 a cond op2 00 31 29 00 00 00 rd rd rd rd op2 25 24 op3 op3 op3

s im m 1 3

s p r e m n ik ili n e p o s r e d n o

Adresni modovi. Prema svojoj prirodi, SPARC dozvoljava pristup memoriji samo preko naredbi upii, spremi. Broj moguih adresnih modova je znaajno manji nego kod CISC procesora kao npr. MC68000. Dozvoljena su samo dva adresna moda: 1. spremnik + spremnik 2. spremnik + direktna 13 bitovna konstanta {proirenje predznaka, 2ki komplement} Dva dodatna moda koriste kod grananja i poziva procedura. Procedura koristi 8 globalnih i 24 njoj pripadajua spremnika za proraun adrese direktno, preko pomaka, spremnika indirektno, indeksnog adresiranja. Tako neposredno adresiranje realizira se drugim adresnim modom koritenjem spremnika g0. Tim modom mogue je

Sven Gotovac, Arhitektura i organizacija digitalnih raunala

38

5. Neki komercijalni procesori pristupiti samo prvim i posljednjim 4K memorije ( 212 adresa). Ukoliko se spremnik g0 koristi u prvom adresnom modu adresu operanda odreuje samo sadraj drugog spremnika. Za realizaciju relativnih adresnih modova potrebno je proitati vrijednost programskog brojila. To je mogue pomou naredbe skoi i povei ( jump & link). Grananja i pozivi procedura koriste relativne adresne modove. Kako naredbe su smjetene na adresama djeljivim sa etiri (ogranienje na pristup rijei u memoriji) tako 30 bitovna konstanta, koja je sastavni dio naredbe za poziv procedure, dovoljna je za pristup cijelom adresnom prostoru (posljednja dva bita su uvijek nula). Slino vrijedi i kod grananja gdje 22 bitovna konstanta omoguava grananje unutar 223 = 8Mb od trenutne naredbe. Adresni modovi mogu se opisati na sljedei nain: adr31..0 := (i = 0 r[rs1] + r[rs2]: i = 1 r[rs1] + simm1312..0): calladr31..0 := PC31..0 + disp30#002: bradr31..0 := PC31..0 + disp22#002: prvi adresni mod drugi adresni mod poziv procedure grananje

5.4.3. Skup naredbi SPARC procesora Interpretacija naredbe kod SPARC procesora sloena je iz razloga postojanja posebnih stanja te dva programska brojila potrebna zbog odgoenog grananja. Obrada posebnih stanja ili zamki te odgoena grananja naknadno e biti opisani. Tako je grubi opis procesa interpretacije naredbe kod SPARC procesora slian kao i kod MC68000: interpretacija_naredbe := (IR M[PC]; izvoenje_naredbe; nova_vrijednost_PC_ili nPC; interpretacija_naredbe): SPARC procesor takoer ima tri osnovna tipa naredbi: za prebacivanje podataka, aritmetike i logike naredbe i upravljanja programskim tokom. Naredbe s brojevima prikazanim s pominim zarezom se nee posebno razmatrati. Ove naredbe sline su naredbama s cjelobrojnim veliinama s razlikom to koriste posebne spremnike. Takoer nee se obraivati naredbe koje koristi proirenje procesora ( coprocessor) kao ni privilegiranje naredbe koje koristi operacijski sustav u nadzornom modu rada. Naredbe za prebacivanje podataka. SPARC procesor pristupa memoriji samo pomou naredbi za itanje i pisanje. Jedina iznimka je naredba za zamjenu, swap, kao i neke privilegirane naredbe koje upravljaju zavisnim procesima. Naredba
ldsb ldsh ldsw ldub lduh ldd stb sth stw

Op.
11 11 11 11 11 11 11 11 11

Op3
00 1001 00 1010 00 1000 00 0001 00 0010 00 0011 00 0101 00 0110 00 0100

Znaenje
Proitaj oktet s predznakom Proitaj pola rijei s predznakom Proitaj rije s predznakom Proitaj oktet bez predznaka Proitaj pola rijei bez predznaka Proitaj dvostruku rije Upii oktet Upii polarijei Upii rije

Sven Gotovac, Arhitektura i organizacija digitalnih raunala

39

5. Neki komercijalni procesori


std swap or sethi 11 11 10 00 00 0111 00 1111 00 0010 Op2=100 Upii dvostruku rije Izmjeni sadraje spremnika i memorije r[d] r[s1] OR (r[rs2] ili trenutno) Gornjih 22 bita od Rdst disp22

Osim za or i sethi, vrijede oba adresna moda

Za primijetiti je da SPARC procesor podrava prijenos okteta, pola rijei, rije i dvostruke rijei. Dozvoljena su oba adresna moda specificirana 13 bitom naredbe. Podaci se upisuju u spremnik rd na nain da kada se upisuje oktet on zauzima osam bita spremnika najmanjeg znaenja a ostatak spremnika se postavlja u nulu ili se proiri s predznakom u ovisnosti da li se radi o prebacivanju bez ili s predznakom. Naredba ldd mora specificirati parni spremnik, a dvostruka rije se upisuje u rd (rije veeg znaenja) i u rd + 1 (rije manjeg znaenja). Naredba swap zamjenjuje sadraj spremnika i memorijske lokacije. Podrka prijenosu dijelova rijei, okteta i pola rijei, rezultirala je sa est naredbi za upis u i itanje iz memorije kao i sloenijim sklopovima koji povezuju procesor i memoriju. Ukoliko bi meusklop koji povezuje procesor i memoriju podravao samo 32 bitovni prijenos podataka tada bi naredba za upis okteta u memoriju, stb, zahtijevala da procesor prvo proita rije iz memorije, zamijeni odgovarajui oktet, te ponovo upie rije u memoriju. Zato neki RISC procesori, kako bi izbjegli dodatne naredbe i sloenije sklopovlje za povezivanje procesora i memorije, ne podravaju prijenos dijela rijei. Kod navedenih procesora prijenos dijela rijei iz spremnika u memoriju realizira se itanjem memorijske rijei, njenom obradom logikim operacijama i posmakom i upisom rezultat na odabranu lokaciju. Alpha arhitektura, Digital Equipment Corporation je primjer RISCa koji koristi opisano rjeenje. Moe se postaviti pitanje zato je naredba or smjetena s naredbama za pomak podataka. Praktiki ukoliko se napravi logika operacija ILI sadraja spremnika rs1 i sadraja spremnika r0, koji je uvijek jednak nuli, te se rezultat spremi u rezultat u spremnik r2 je identino prebacivanju sadraja spremnika r1 u spremnik r2. Naredba sethi koristi se za upis neposredne konstante u 22 bita veeg znaenja spremnika. Bitovi manjeg znaenja 0 do 9 postavljaju se u nulu. Ovom naredbom moe se realizirati naredba nop odabirom spremnika r0 (rd = 0 i disp22 = 0). Aritmetike naredbe. Sljedea tablica prikazuje aritmetike naredbe SPARC procesora. Naredba Op. op3 Znaenje
add 10 0S 0000 Zbroji, postavi ili ne uvjetni kod (CC) addx 10 0S 1000 Zbroji s prijenosom: postavi ili ne CCs sub 10 0S 0100 Oduzmi, postavi ili ne uvjetni kod subx 10 0S 1100 Oduzmi s posudbom,i postavi ili ne CC mulscc 10 10 1100 Jedan korak mnoenja Postavi Kod uvjeta CC ako je S = 1. Naredbe addcc, addxcc, subcc, subxcc. Naredbe koriste format 3: r[rd] r[rs1] op r[rs2] ili neposredno

Drugi operand cjelobrojne aritmetike odreuje se na identian nain kao kod prorauna adrese kod naredni za prijenos podataka. Ako je 13 bit naredbe (format 3c) postavljen u nulu tada je drugi operand sadraj spremnika r[rs2], a ako je jedinica tada je neposredna 13 bitovna konstanta, simm15. Odreivanje drugog operanda tipine aritmetike operacije, sub, opisan je na sljedei nain:

Sven Gotovac, Arhitektura i organizacija digitalnih raunala

40

5. Neki komercijalni procesori opnd231..0 := ((i = 0) r[rs2]: (i = 1) simm1312..0{proirenje predznaka}): sub (:= op = 102 op3 = 0001002) r[rd] r[rs1] opnd2: Kod SPARC arhitekture prihvaen je koncept da programer odluuje hoe li ili ne naredba postavljati kod uvjeta. Ako je S bit op3 polja postavljen u nulu naredba ne mijenja kod uvjeta, a ako je S bit postavljen u jedinicu tad naredba mijenja etiri bita koda uvjeta (n, z, v, i c). Naredbe addx i subx koriste se za realizaciju aritmetike vee preciznosti. Tako addx zbraja r[rs1] + opnd + c, a subx r[rs1] - opnd c. Originalna SPARC arhitektura ne podrava naredbe za mnoenje i dijeljenje. Njih se realizira ili programski ili pomou jedinice za obradu brojeva s pominim zarezom. Postoji samo odreena podrka programskoj realizaciji mnoenja pomou naredbe mulscc koja izvodi jedan korak u operaciji mnoenja tehnikom posmaka i zbrajanja. Ova procedura biti e detaljnije objanjena kada se bude obraivala aritmetika i logika jedinica procesora. RISC procesori imaju tendenciju da naredbe koje se obavljaju u vie koraka prebace na jedinicu za obradu brojeva s pominim zarezom gdje su takve naredbe neizbjene. Iz tog razloga ne postoje naredbe za mnoenje i dijeljenje u originalnoj SPARC arhitekturi. Realizacija mnoenja i dijeljenja sklopovski, ime bi se ove naredbe mogle realizirati u jednom koraku, dosta je sloena i zauzima dosta prostora na integriranom sklopu. Kako se stupanj integracije poveao, sve vie RISC procesora imalo je sklopovsko mnoenje i dijeljenje kao sastavni dio svoje arhitekture. Sljedea tablica prikazuje SPARC logike naredbe i naredbe za posmak. Naredba
AND ANDN OR ORN XOR XNOR SLL SRL SRA

Op
10 10 10 10 10 10 10 10 10

op3
0S 0001 0S 0101 0S 0010 0S 0110 0S 0011 0S 0011 10 0101 10 0110 10 0111

Znaenje
I, postavi (S=1) ili ne (S=0) CCs NI, postavi ili ne CCs ILI, postavi ili ne CCs NILI, postavi ili ne CCs Ekskluzivno ILI, postavi ili ne CCs NE Ekskluzivno ILI, postavi ili ne CCs Posmak u lijevo logiki, broj u RSRC2 ili imm13 Posmak u desno logiki, broj u RSRC2 ili imm13 Posmak u desno aritmetiki, broj u RSRC2 ili imm13

Naredbe za posmak pomiu sadraj spremnika r[rs1] za broj mjesta specificiran ili spremnikom ili neposrednom konstantom i upisuje rezultat u spremnik r[rd]. Broj mjesta posmaka odreen je samo s pet bita najmanjeg znaenja spremnika ili neposredne konstante. Za razliku od aritmetikih naredbi, naredbe za posmak ne mijenjaju kod uvjeta. SPARC procesori nemaju naredbe za rotaciju. Broj logikih naredbi je smanjen bez znaajnijeg utjecaja na mogunosti procesora. TAko npr. not naredba je izostavljena jer je istu mogue realizirati pomou orn naredbe spremnika sa spremnikom g0. Naredbe za upravljene programskim tokom . SPARC procesor ima bogat skup naredbi za grananja kao i nekoliko naredbi za pozive procedura. tablica. Naredba
ba bcc call

Format
2 2 1

Op
00 00 01

Op2 or Op3
010 010

Znaenje
Bezuvjetno grananje Uvjetno grananje Poziv i spremi PC u R15

Sven Gotovac, Arhitektura i organizacija digitalnih raunala

41

5. Neki komercijalni procesori


jmpl save restore 3 3 3 10 10 10 11 1000 11 1100 11 1101 Granaj na EA, spremi PC u Rdst Novi prozor spremnika, Izvedi ADD Vrati prozor spremnika, Izvedi ADD

Kodovi uvjeta prikazani su sljedeom tablicom


Naredba ba bcc bvs Uvjet 1000 1101 0111 Naredba bne bcs Uvjet 1001 0101 Naredba be bneg Uvjet 0001 0110 Naredba ble bvc Uvjet 0010 1111

Kodovi uvjeta su etiri bitovno polje koje je dio naredbe (format 2). Bezuvjetno grananje, ba, je samo jedna od naredbi uvjetnog grananja s uvjetnim kodom 1000. Adresa grananja dobiva se kao pomak u odnosu na trenutnu vrijednost programskog brojila. SPARC koristi odgoeno grananje, ali uz jednu razliku od drugih procesora. Kod primjene cjevovoda naredbe koja slijedi naredbu za grananje je u odreenom stadiju obrade u trenutku zavretka obrade naredbe za grananje. U sluaju da je potrebno izvesti grananje potrebno je odbaciti sljedeu naredbu i izvoenje prebaciti na adresu grananja. Kako je sljedea naredba ve u fazi obrade i ona je moda promijenila stanje procesora (sadraj nekog spremnika), program se nee ispravno nastaviti. Zato, ako naredba koja slijedi naredbu za grananje moe utjecati na ispravan nastavak izvoenja programa potrebno je izmeu ovih naredbi ubaciti naredbu koja nita ne radi, nop. Njena zadaa je da odgodi izvoenje sljedee naredbe. Kod SPARC procesora naredba za grananje koristi i zastavicu za ponitavanje ( annul bit), a, koji omoguava programeru da upravlja izvoenjem naredbe koja slijedi iza naredbe za grananje. Rjeenje se sastoji u sljedeem. Ako je rezultat usporedbe da se grananje izvodi, izvodi se naredba koja je upisna iza naredbe za grananje. Ako je rezultat usporedbe negativan i grananje se ne izvodi tada, ako je a zastavica 1, odbacuje se sljedea naredbe, odnosno ako je a zastavica 0 sljedea naredba se izvodi. Postavljenjem a zastavice u 1, programer ili program prevodilac umetanjem iza naredbe za grananje naredbu koja se izvodi ukoliko dolazi do grananja praktiki realizira da ukoliko je rezultat ispitivanja pozitivan program se nesmetano nastavlja na adresi grananja, a ukoliko je rezultat negativan i ne doe do grananja naredba se odbacuje. Ako ja a zastavica nula, tada programer ili program prevodilac moe iza naredbe za grananje ubaciti naredbu koja inae prethodi naredbi za grananje. Ova naredba e se uvijek izvriti. Iznimaka ja ba naredba. Ako je a zastavica 1 naredba koja slijedi naredbu za grananje se ponitava, a ako je 0 sljedea naredba se izvrava. Programer postavlja a zastavicu u 1 ubacujui oznaku a u naredbu: bcc, a, disp. Postoje dvije naredbe koje se koriste za pozive procedura: call i jmpl. Naredba call koristi 30 bitovni pomak upisan neposredno u naredbi koji se pomakne u lijevo za dva mjesta i odreuje 32 bitovnu adresu procedure koja se poziva. Ovom naredbom pristupa se cijelom adresnom prostoru. Programsko brojilo odnosno povratna adresa upisuje se u spremnik r15 tekueg prozora. Naredba jmpl koristi format broj 3 i rauna adresu grananja za vrijeme izvoenja programa bilo indirektno pomou spremnika ili indeksnim adresiranjem. Povratna adresa upisuje se u spremnik specificiran s rd. jmpl naredba koristi se i za povratak iz procedure pozvane naredbom call. Praktiki naredba ret sintetizira se

Sven Gotovac, Arhitektura i organizacija digitalnih raunala

42

5. Neki komercijalni procesori naredbom: jmpl %r15, %r0, granaj se na adresu odreenu spremnikom r15 i upii povratnu adresu u r0 (u r0 se ne prihvaa nikakav upis). Naredbe save i restore upravljaju prozorima spremnika kako je ve opisano. save naredba prebacuje na novi prozor, a restore vraa stari. Ako nisu svi prozori popunjeni ili nijedan iskoriten tada naredba izvodi i zbrajanje, add sadraja spremnika specificiranih s rs1 i rs2 iz tekueg prozora i rezultat upisuje u rd novog prozora. Ova naredba prikladna je za prilagodbu kazala stoga kako bi se rezervirao prostor za parametre koji se prenose preko stoga. 5.4.4. Primjer programa za SPARC procesor Linija simbolikog programa izgleda na sljedei nain: labela: naredba !komentar Labela nije obavezna kao ni komentar koji koristi samo korisniku. Naredba se sastoji od oznake operacije iza koje slijede operandi i rezultat. Rezultat je upisan skroz desno. Spremnici se oznaavaju s oznakom %r, %g (globalni), %o (izlazni), %l (lokalni) i %i (izlazni) iza koje slijedi redni broj spremnika. Takoer mogue su sljedee alternative: izlazni spremnici %o0 - %o7 su i %r8 - %r15, lokalni spremnici %l0 - %l7 su %r16 -%r23 te ulazni spremnici %i0 - %i7 su %r24 - %r31. Primjer naredbe za zbrajanje je: add %l2, %g1, %o3 ! r[11] r[18] + r[1]: Memorijska adresa zatvorena uglatim zagradama oznaava pristup memoriji kao npr.: ld st [%r4 + %r5], %r6 %r2, [%r3 + 28] ! r[6] M[r[4] + r[5]]: ! M[r[3] + 28] r[2]:

Adrese u naredbama za grananja i pozive procedura nisu omeene uglatim zagradama. Adrese grananja i poziva su obino labele iju vrijednost prorauna program prevodilac i tijekom prevoenja je upie u polje naredbe odreeno za tu namjenu. Pseudo operacije ili direktive programu prevodiocu poinju s tokom. Neke od njih su .begin, poetak prevoenja, .org, postavi sljedei kod na adresu, .equ, pridrui simbolu vrijednost, .end, kraj prevoenja. Procedura za zbrajanje dva broja opisana je sljedeim kodom: .begin .org ld ld addcc st jmpl nop 15 9 0 .end

prog:

[x], %r1 [y], %r2 %r1, %r2, %r3 %r3, [z] %r15, +8, %r0

x: y: z:

!upii rije iz memorije M[x] u spremnik r1 !upii rije iz memorije M[y] u spremnik r2 ! r3 r1 + r2, postavi uvjetni kod !upii rije iz spremnik r3 u memoriju M[z] !vrati se u program koji je pozvao proceduru !troenje vremena zbog grananja !rezervira se memorija za varijable

Sven Gotovac, Arhitektura i organizacija digitalnih raunala

43

5. Neki komercijalni procesori Ovaj primjer prikazuje i koritenje nop naredbe koja je ubaena zbog grananja. S obzirom na obradu koju program izvodi moglo se na njeno mjesto i premjestiti st naredba i tada nop ne bi bio potreban. Kod ovog primjera pretpostavka je da mogue generirati neposredne adrese za x, y i z. U strojnom jeziku postoje funkcije %hi i %lo koje proiruju 22 bita veeg znaenja i 10 bita manjeg znaenja argumenta kako bi se moglo pristupiti memorijskoj adresi koja nije neposredno adresabilna. Primjer itanja sadraja s adrese koja nije neposredno adresabilna w i upis rezultata u spremnik r2 realizira se sljedeim naredbama: sethi ld %hi(w), %r1 [%r1+%lo(w)], %r2 !u r131..9 adr_w21..0#10@0 !u r2 w, adr_w = r1 + 22@0#adr_w 9..0

Sljedei programski odsjeak ilustrira povezivanje glavnog programa s potprogramom. .begin .org ld ld call ld st ... 15 9 0 save add add ret restore .end

prog:

[x], %o0 [y], %o1 add3 -17, %o2 %o0, [z]

!upii prvi parametar u izlazni spremnik o0 !upii drugi parametar u izlazni spremnik o1 !pozovi proceduru za zbrajanje tri broja !upii trei parametar u izlazni spremnik o2 !spremi rezultat u memoriju !rezervira se memorija za varijable

x: y: z: add3:

%sp, -(16*4), %sp %i0, %i1, %l0 %i2, %l0, %l0 %l0, 0, %o0

!otvori novi prozor i pripremi kazalo stoga !zbroji prva dva ulazna parametra !pribroji meurezultatu i trei parametar !povratak, skraeno za jmp %i7+8 !rezultat prebaen u o0 programa

Potprogram zbraja tri vrijednosti x, y i konstantu 17. %sp je drugi naziv za spremnik %o6. Kazalo stoga se pomie za 16 lokacija kako bi se napravilo mjesto za pohranu sadraja spremnika ukoliko je to potrebno. Takoer za primijetiti je da su operacije koje slijede po logici prije ubaene iza naredbi za poziv procedure i povratak iz procedure. Poziv i povratak iz procedure nisu postavili zastavicu ponitavanja to znai da se naredba koja slijedi obavezno izvodi. 5.4.3. Prekidi i zamke kod SPARC procesora Posebna stanja kod SPARC procesora nazivaju se zamke ( traps) ako se generiraju interno, odnosno prekidi (interrupts) ako se generiraju iz vani. Postoji zastavica dozvole zamki ili prekida u spremniku stanja procesora, kao i etiri bita za odreivanje prioriteta prekida. Prekid e biti prihvaen samo ako mu je prioritet vei od tekueg. Zamke koriste prozore spremnika na nain da ona nee biti prihvaena ukoliko ne postoji slobodan prozor. Sljedei su koraci prilikom pojave zamke: 1. Prebacuje se na sljedei prozor spremnika, kao naredba save. Sven Gotovac, Arhitektura i organizacija digitalnih raunala 44

5. Neki komercijalni procesori 2. Sprema se PC, nPC i PSR u lokalne spremnike novog prozora. 3. Zabranjuju se nove zamke. 4. Prebacuje se izvoenje na proceduru za obradu zamke ( trap handler routine). Adresa procedure za obradu zamke odreena je bazom upisanom u bazni spremnik zamke, TBR, i osam bitovim tipom zamke generiran interno ili poslan od ureaja koji je postavi zahtjev za prekidom. Adresa se dobiva na nain da tip zamke definira pomak u tablici vektora prekida. poetna adresa tablice definirana je baznim spremnikom zamki. Procedura za obradu zamki ne smije mijenjati sadraje ulaznih i izlaznih spremnika novog prozora iz razloga to ulazni spremnici novog prozora poklapaju se sa izlaznim spremnicima prekinute procedure, dok izlazni spremnici preklapaju se sa sljedeim prozorom. Povrat iz procedure za obradu zamki izvodi prethodna etiri koraka suprotnim redoslijedom kako bi se vratilo izvoenje na prekinuti program. 5.4.6. Cjevovodi kod procesora SPARC MB86900 Razliiti procesori temeljni na SPARC arhitekturi koriste i razliite razine cjevovoda. Fujisu MB86900 je bio prvi procesor temeljen na SPARC arhitekturi izraen u CMOS tehnologiji. Maksimalna frekvencija takta je 16.6 MHz. Ovaj procesor ima cjevovod sa etiri razine, jedna za svaki korak u ciklusu izvoenja naredbe: dohvati, dekodiraj, izvedi i upii. Sljedea slika prikazuje cjevovod za etiri naredbe. U prvom taktu dohvata se prva naredba iz memorije. U drugom taktu prva naredba se dokodira, dohvaaju se operandi i prosljeuju ivedbenoj jedinici, dok se paralelno dohvata druga naredba iz memorije. U treem taktu ALU izvodi prvu naredbu i rezultat upisuje u privremeni spremnik, druga naredba se dekodira, a trea dohvaa iz memorije. U etvrtom taktu rezultat prve naredbe se upisuje u spremnike, dok je druga naredba u izvoenju, trea u fazi dekodiranja, a etvrta u fazi dohvaanja iz memorije.
t a k t c ik lu s n a re d b a 1 . n a re d b a 2 . n a re d b a 3 . n a re d b a 4 . 1. d o h v a ti 2. d e k o d ir a j d o h v a ti 3. iz v e d i d e k o d ir a j d o h v a ti 4. u p i i iz v e d i d e k o d ir a j d o h v a ti u p i i iz v e d i d e k o d ir a j u p i i iz v e d i u p i i 5. 6. 7.

Rjeenje s odgoenim grananjem omoguava da se grananje neometano propagira kroz cjevovod ukoliko je mogue odrediti adresu grananja na vrijeme tako da naredba na adresi grananja bude sljedea koja ulazi u cjevovod. Ukoliko se ispostavi da je ispunjen uvjet za grananje nastavlja se s interpretacijom i izvoenjem naredba, a u suprotnom ona se odbacuje i stavlja se u cjevovodu naredba koja slijedi naredbu za grananje. 5.4.7. Unapreenja SPARC arhitekture SPARC International je nedavno objavio specifikaciju za SPARC V9, 64 bitovnu implementaciju SPARC arhitekture. Definirano je kako postojee naredbe nad 32 bitovnim brojevima koriste nove 64 bitovne spremnika, te su uvedene nove naredbe. Ispitivanje

Sven Gotovac, Arhitektura i organizacija digitalnih raunala

45

5. Neki komercijalni procesori naredbi i njihovih formata pokazuje kako su mnoge naredbe ostale neimplementirane. Tako su ti formati iskoriteni za nove naredbe koje koriste prednosti 64 bitovne arhitekture, 64 bitovno mnoenje i dijeljenje, upis, itanje, operacije nad 128 bitovnim brojevima prikazanim s pominim zarezom, programsko odreivanje predvianja grananja, grananje u ovisnosti o vrijednosti spremnika (eliminira se prethodna usporedba), uvjetno prebacivanje podatka kojim se eliminira sasvim potreba za nekim naredbama za grananja. SPARC V9 uveo je posebne spremnike za obradu zamki i prekida i time je odvojio obradu zamki i prekida od izvoenja programa. Takoer povean je broj spremnika ope namjene dostupnih korisniku. Mehanizam pokazivaa tekueg prozora kao i otkrivanje i servisiranja sluaja kada su svi prozori popunjeni, odnosno kada su svi prazni, znaajno je poboljan. Rezultat zajednikog projekta izmeu Sun Microsystems i Texas Instrumentsa je UltraSPARC koji je implementacija SPARC V9. Ovo je superskalarni procesor s dvije jedinice za obradu cjelobrojnih veliina, pet jedinica za obradu brojeva prikazanih s pominim zarezom, posebna jedinica za obradu grananja i jedinica za pristup memoriji. Takoer postoji i pet jedinica brzu obradu slike i grafiku. SPARC kao tipian RISC procesor RISC ima znatno manje naredbi nego CISC. Naredbe su jednostavnije, a aritmetika koja zahtjeva vie koraka prebacuje se na obradu u posebnu sklopovsku jedinicu. SPARC pristupa memoriji preko naredbi uitaj/pii. Aritmetike operacije obavljaju se samo nad sadrajem spremnika. Postupak dekodiranja naredbi i operanada je jednostavan jer postoji samo nekoliko formata naredbi i ogranieni broj adresnih modova. Odgoeno grananje je tipino za svaki RISC i proizlazi iz postupka kako se obrauju naredbe u cjevovodu. SPARC procesor ne koristi i odgoen dohvat iz memorije, to ima veina RISC procesora, ali koristi prozore spremnika to nema veina RISC procesora. Cijena i performanse raunala su pokretaka snaga raunalne industrije. Performanse raunala mogu se mjeriti na vie naina poevi od najjednostavnijeg mjerenja broja naredbi u sekundi koje raunalo izvede, do sofisticiranijih procjena koje nastoje simulirati stvarno radno optereenje raunala, kao npr. Wheatstone i Dhrystone programi za ispitivanje. Nedavno SPEC koristi stvarne programe kako bi se to realnije procijenile performanse raunala. Ekonominost kodiranja naredbi i adresnih modova karakteristike su CISC procesora. Rezultat ovakvog pristupa su naredbe koje se meusobno razlikuju u duini i vremenu potrebnom za njihovo izvoenje, adresnim modovima i broju pristupa memoriji. Tadanja cijena memorije razlogom je ovakvom rjeenju. Meutim kada se sklopovskim rjeenjima, cjevovodima i superskalarnom obradom pokuala poveati brzina obrade glavna prepreka bile su sloene naredbe i adresni modovi. Temelj RISC procesora su jednostavnije naredbe, jednake duine te pristup memoriji pomou naredbi pii/itaj. Projektanti su ustanovili da se jednostavne naredbe, jednake 46

Zakljuak

Sven Gotovac, Arhitektura i organizacija digitalnih raunala

5. Neki komercijalni procesori duine bolje uklapaju u sklopovska rjeenja cjevovoda i superskalarne obrade. Ujedno ovakav pristup dozvoljava veu frekvenciju takta. Istina je da ovakav pristup zahtijeva veu memoriju te uestaliji pristup memoriji, ali bra memorija kao i tehnike preddohvata naredbi praktiki su donijeli prevagu ovom konceptu koji je dodatno unaprijeen cjevovodom i superskalarnom obradom. Zadaci 1. Program se sastoji od sljedeih naredbi: 60% naredbe itaj/pii s vremenom izvoenja naredbe od 1.2 s 10% ALU naredbe s vremenom izvoenja naredbe od 0.8 s 30% naredbi za grananja s vremenom izvoenja naredbe od 1 s

a) Ako je trajanje takta 0.2 s izraunajte prosjeno izvoenje naredbe, CPI. b) Koliki je prosjean broj naredbi u jedinici vremena, MIPS, ovog programa. 2. Koja je vrijednost u odreditu nakon sljedeih naredbi MC68000? Koji se adresni modovi u njima koriste? A0 = 2000H, M[2000H] = AAAAH, M[1FFFH] = 5555H a) b) c) d) MOVE.W MOVE.L MOVE.W MOVE.W #BE, D0 #FFE07DCAH, (A0) A0, D0 -(A0), D0

3. Koja vrijednost e biti u spremnicima A0, D0, D1, i D2 procesora MC68000 nakon sljedeeg programskog odsjeka? Poetne vrijednosti su: D0 = 0, D1 = 1H, D2 = 10H ORG ADD DBLE $2000 D0, D1 D2, $2000

4. Napiite RTN opis za MC68000 DBcc naredbu. 5. Generirajte heksadecimalni strojni kod za sljedee naredbe MC68000. a) b) c) d) e) MOVE.L MOVE.L ADD.L ROL BGT (A2), D4 2AH(A3, D6), D1 A5, D6 #3, D4 -24

6. Objasnite funkciju sljedeeg programskog odsjeka i kodirajte ga u heksadecimalnom obliku. PORT ZNAK EQU EQU ORG BUFFER DS.B MOVEA.L $280 55H $1000 100 #BUFFER, A0

Sven Gotovac, Arhitektura i organizacija digitalnih raunala

47

5. Neki komercijalni procesori UPIS MOVE.B CMPI.B BEQ MOVE.B BRA RTS PORT, D0 #ZNAK, D0 KRAJ D0, (A0)+ UPIS

KRAJ

7. Objasnite razlog zbog kojeg nije dozvoljeno prekidati rad procesora za vrijeme procesa interpretacije i izvoenja naredbe. 8. Generirajte heksadecimalni strojni kod za sljedee naredbe SPARC procesora. a) addcc b) sethi c) ldub %r2, %r3, %o7 3FF250H, %g1 [%i2 + 7FFH], %r23

9. Napiite RTN opis naredbi za posmak SPARC procesora sll, srl i sra. 10. Sintetizirajte naredbe za rotiranje sadraja spremnika ROL, ROR, ROLC od ostalih naredbi SPARC procesora. Pretpostavite da je broj n koji odreuje broj mjesta za rotiranje implicitno zadan preko .equ direktive. 11. Napiite i usporedite za SPARC i MC68000 procesore programe koji upisuje brojeve 0, 2, 4, 6, 8, 10, 12, 14, 16, 18 u memoriju poevi od adrese 5000H. 12. Napiite SPARC naredbe ili niz naredbe koje simuliraju svih etrnaest adresnih modova MC68000. Neka naredbe upisuje sadraj jednog spremnika u memoriju.

Sven Gotovac, Arhitektura i organizacija digitalnih raunala

48

You might also like