1. Ocena performansi

Size: px
Start display at page:

Download "1. Ocena performansi"

Transcription

1 1. Ocena performansi

2 Šta je arhitektura računara? Arhitektura računara opisuje pogled korisnika na računar. Skup naredbi, vidljivi registri, strukture kao što su tabele za upravljanje radom memorije, model za manipulaciju sa izuzecima, sve su to delovi arhitekture računara. Šta je organizacija računara? Organizacija računara opisuje implementaciju arhitekture koja je nevidljiva korisniku. Protočna struktura, transparentni keš, tabele koje se odnose na definiciju funkcije hardvera, TLB (translation look-aside buffer) - sve su to aspekti organizacije računara. Šta je procesor? Procesor opšte namene predstavlja konačni automat (finite state machine) koji izvršava instrukcije smeštene u memoriji. Stanje sistema definišu vrednosti koje se čuvaju u memorijskim blokovima zajedno sa vrednostima koje se čuvaju u određenim registrima koji su sastavni deo procesora. Svaka instrukcija definiše način na koji se stanje mašine menja a, takođe, i koju instrukciju treba izvršiti kao narednu. 1-1

3 Šta je računar sa memorisanim programom? FF...FF 16 instrukcije registri adrese podaci procesor instrukcije i podaci memorija heksadecimalne adrese Slika 1.1 Računar sa memorisanim programom Računarski sistem kod koga se operacije kodirane u binarnoj formi smeštaju u memoriju a izvršavaju u definisanoj sekvenci zove se računar sa memorisanim programom (stored program computer) (Slika 1.1). Računari sa memorisanim programom često se zovu von Neumann-ovi računari. 1-2

4 Koji su osnovni blokovi von Neumann-ovog računara? ulazni uredjaj (i) sekundarna memorija izlazni uredjaj (i) ulazni interfejs (i) glavna memorija izlazni interfejs (i) uobičajeno skupljeni u jedinstvenu stazu podataka procesor instrukcije i podaci Slika 1.2 Osnovna struktura von Neumann-ovog računara 1. Memorija u kojoj se čuvaju instrukcije i podaci koji su potrebni instrukcijama 2. Ulazno/izlazni mehanizmi i periferni uređaji namenjeni za prenos podataka ka-, ili iz sistema 3. Procesor koga čine sledeća dva bloka: Upravljačka jedinica - pribavlja instrukcije iz memorije, Aritmetički procesor - obavlja specificirane operacije. 1-3

5 Ukazati na osnovne razlike između von Neumann-ovog i Harvard pristupa. Korišćenje iste memorije za podatke i instrukcije je ključna karakteristika von Neumann-ovih računara. Nasuprot ovakvom pristupu kod Harvard arhitekture (Slika 1.3), memorija u kojoj se čuvaju podaci je izdvojena od memorije u kojoj se čuvaju instrukcije. Kod ovakvog rešenja putevi za prenos podataka i instrukcija su izdvojeni. Korišćenje jedinstvene memorije za podatke i instrukcije dovodi do efikasnijeg korišćenja memorije i tipično je kao rešenje kod ranijih računarskih sistema. Savremeni RISC i DSP procesori koriste veći broj puteva (magistrala) za prenos podataka između procesora, memorije i U/I podsistema. procesor magistrala adrese podataka memorija podataka magistrala podataka memorija za instrukcije magistrala instrukcija magistrala adrese instrukcija ka spoljnoj memoriji Slika 1.3 Pojednostavljena struktura Harvard arhitekture 1-4

6 Šta je MIPS i kako se odredjuje? Mera koja se često koristi za predstavljanje performansi računara je MIPS (milion instrukcija u sekundi). MIPS ukazuje na brzinu računara i izražava broj prosečnih instrukcija koje on izvršava u sekundi. Da bi ukazali na značenje prosečne instrukcije analizirajmo inverznu MIPS meru, a to je, vreme izvrešenja prosečne instrukcije. Vreme izvršenja prosečne instrukcije se može odrediti na osnovu učestanosti i vremena izvršenja svakog tipa instrukcija. Usvojimo: IF (instruction frequency) - učestanost pojavljivanja instrukcija u programu CPI (cycles per instruction) - vreme izvršenja instrukcije izraženo kao broj taktnih intervala za svaki tip instrukcije Ako usvojimo da taktni interval traje t nanosekundi, tada za vreme izvršenja instrukcije važi CPI*t nanosekundi. Prosečno vreme izvršenja programa se određuje kao: k ( IF i * CPI i * TCPU ) i= 1 gde je i - tip instrukcije u okviru skupa instrukcija; k - ukupan broj instrukcija u repertoaru. Za MIPS važi: MIPS = k i= 1 1 ( IF * CPI * T ) i i CPU

7 Koje se druge mere i faktori, pored MIPS-a i MFLOPS-a, koriste za dobijanje slike o sistemu? Najčešće korišćene mere su: (1) Propusnost procesora (throughput of a processor) je mera koja ukazuje na broj programa (zadataka ili zahteva) koje procesor može da izvrši po jedinici vremena. (2) Iskorišćenost procesora tiče se dela vremena u toku koga je procesor zauzet izvršenjem programa. U suštini, to je odnos između vremena zauzeća i ukupno proteklog vremena. (3) Vreme odziva (response time) predstavlja vremenski interval od trenutka kada se izda zahtev za opsluživanje, do trenutka kada se ta usluga obavi. Često vreme odziva se naziva i kružno vreme (turnaround time). (4) Memorijska propusnost (memory bandwidth) ukazuje na broj memorijskih reči kojima se u jedinici vremena može pristupiti. (5) Vreme pristupa memoriji (memory access time) predstavlja srednje vreme potrebno procesoru da pristupi memoriji, obično se izražava u nanosekundama (ns). (6) Obim memorije (memory size) je kapacitet memorije a izražava se u megabajtovima (Mbajtovi=MB). Na određeni način ova mera ukazuje na iznos podataka koji se može čuvati u memoriji. 1-6

8 Pored nabrojanih performansnih mera postoje i drugi faktori koji imaju uticaj na kvalitet računara, a to su: (a) Opštost - je mera koja određuje opseg aplikacija date arhitekture. Neke od arhitektura su dobre za naučne aplikacije a druge za poslovne. Arhitektura je marketinška ako podržava veći broj aplikacija. (b) Jednostavnost korišćenja je mera koja ukazuje koliko je ta arhitektura laka programeru sistema, kada on želi da je savlada i kada želi da napiše softver (kao što su operativni sistem ili kompilator) za tu arhitekturu. (c) Proširljivost je mera koja ukazuje koliko je lako da se nadgradi ta arhitektura, kao što je ugradnja većeg broja procesora, više memorije i veći broj U/I uređaja. (d) Kompatibilnost ukazuje koliko je data arhitektura kompatibilna sa prethodnim računarom iz iste familije. (e) Pouzdanost ukazuje na verovatnoću greške ili srednje vreme izmedju grešaka. 1-7

9 Zadatak 1.2 Ukazati kako se vrši poređenje performansi dvaju računara R1 i R2. Dobijeni rezultati koji se odnose na vremena izvršenja T1 i T2 dvaju različitih programa P1 i P2, na računaru R1 i R2, su sledeća: program T1 T2 P1 8s 4s P2 3s 4s Koja mašina je brža, za dati program, i za koliko? Odgovor Ako se određeni program izvršava na računaru Rx, tada između performansi te mašine i vremena izvršenja tog programa postoji sledeći odnos: PRx=1/ Tx gde su : PRx - performanse; Tx - vreme izvršenja. Ako imamo dva računara X i Y i ako su performanse računara X veće od performansi računara Y, tada važi : PRx > PRy 1/ Tx > 1/ Ty Ty > Tx Često, kada upoređujemo performanse dva računara, mi govorimo: "Rx je n puta brži od Ry", a to znači: PRx/PRy = Ty/ Tx = n U konkretnom slučaju imaćemo: a) za program P1 PR1/ PR2= 4/ 8 = 0,5 R2 dva puta brži od R1; b) za program P2 PR1/ PR2= 4/ 3 = 1,33 R1 za 1,33 puta brži od R2. 1-8

10 - Vreme koje je potrebno CPU-u da izvrši program? T = T CPU CPU broj_instrukcija program = NI * CPI * t cp * broj_taktnih_intervala instrukcija * broj_sekundi taktni_period gde je : NI - broj instrukcija u programu; CPI - broj taktnih intervala po instrukciji; t cp - vreme trajanja taktne pobude. Pri ovome imamo da je: t cp - određeno od VLSI IC poluprovodničke tehnologije i organizacije računara CPI - zavisan od organizacije i skupa instrukcija arhitekture CPU-a NI - određen skupom instrukcija i tehnologijom kompilatora. Osnovne komponente performansi CPU-a se izražavaju u sledećim jedinicama: komponente performansi Tcpu NI CPI t cp sekunda jedinice mera broj instrukcija potreban da se izvrši program prosečan broj taktnih perioda po instrukciji broj sekundi po taktnom periodu 1-9

11 Vreme koje je potrebno CPU-u de izvrši program: T CPU =broj_taktnih_intervala_cpu-a_u_programu*t cp =N*t cp Skup instrukcija čini veći broj različitih klasa instrukcija. Instrukcije koje pripadaju različitim klasama se izvršavaju za različito vreme. N= n i= 1 CPI i * NI i gde je : n - broj različitih klasa instrukcija; NI i - ukazauje na to koliko se broj puta instrukcija iz klase i izvršava u programu; CPI i - prosečno vreme izvršenja instrukcije iz klase i. Prema tome: T dok je CPU CPI n = CPI i= 1 = n i= 1 CPI i i * NI * NI broj_instrukcija i i * t = cp n, i= 1 CPI i NIi * broj_instrukcija 1-10

12 Ukazati na definiciju Amdahl-ovog zakona u izvornom obliku. Povećanje performansi se može ostvariti poboljšanjem nekog dela računara (mašine). Amdahl-ov zakon definiše ubrzanje koje se ostvaruje kada se poboljša neki deo mašine tako da se i performanse te mašine povećaju. performanse_mašine_koja_koristi_poboljšanje Ubrzanje = performanse_mašine_koja_ne_koristi_poboljšanje ili, alternativno: vreme_izvršenja_programa_na_mašini_bez_poboljšanja Ubrzanje = vreme_izvršenja_programa_na_mašini_sa_poboljšanjem Kada se analizira program (zadatak), može se uočiti da postoje delovi koji se mogu usavršiti (ili se usavršavaju) i delovi koji se ne mogu usavršiti (ili se ne usavršavaju). Prema tome, ako vreme izvršenja programa označimo sa T, deo programa koji se može usavršiti sa Fpob, a ubrzanje sa Spob, tada: Tnovo = Tstaro* Fpob ( 1 Fpob) + Spob Ukupno ubrzanje Suk predstavlja odnos vremena izvršenja Tnovo i Tstaro: Suk = Tstaro Tnovo = 1 ( 1 Fpob) + Fpob Spob Ilustrcije radi, analizirajmo sledeća dva slučaja: 1-11

13 (I) Neka se usavršeni deo programa izvršava 10 puta brže od originalnog (neusavršenog). Za deo programa koji se može usavršiti u neusavršenom programu troši se 40% vremena. Ukupno ubrzanje Suk koje se postiže uvođenjem poboljšanja iznosi sada: Fpob=0.4 Spob= Suk = = (II) Neka se program na nekoj mašini izvršava za 100s, pri čemu se za operacije množenja troši 80s od tog vremena. Koliko puta treba ubrzati množenje ako želimo da se program izvršava pet puta brže. Tnovo = Tstaro 20=100((1-0.8)+0.8/Spob) 20=20+80/Spob Fpob Spob ( 1 Fpob) + Ovaj rezultat ukazuje da ubrzanje izvršenja programa za pet puta nije moguće postići sa prihvatljivom vrednošću Spob (neprihvatljiva vrednost za Spob je ). 1-12

14 Zadatak 1.5 Neka postoje dve implementacije arhitektura sa istim skupom naredbi. Računar R1 karakteriše t cp1 =1ns i CPI 1 =2.0, a računar R2 t cp2 =2ns i CPI 2 =1.2. Koja mašina je brža za ovaj program i koliko? Odgovor Obe mašine izvršavaju isti broj instrukcija u toku izvršenja programa i označimo ovaj broj sa k. Broj taktnih intervala N x u toku izvršenja programa: a) za računar R1 iznosi: N 1 =k*2,0 N = NI CPI b) za računar R2 iznosi N 2 =k*1,2 CPU-ovo vreme izračunavanja za svaki računar je: i) za računar R1: T CPU1 =k*2,0*t cp1 =k*2,0*1ns=2,0*k ns; ii) za računar R2: T CPU2 =k*1,2*t cp2 =k*1,2*2ns=2,4*k ns. Formiranjem odnosa: PR1 PR2 = Tcpu2 Tcpu1 = 2,4 * k ns 2,0* k ns = 1,2 Ovaj rezultat ukazuje da je računar R1 brži 1,2 puta od računara R

15 Zadatak 1.10 Neka su R1 i R2 dve različite implementacije istog skupa instrukcija. Skup instrukcija čine tri klase A, B, i C. Mašina R1 se taktuje frekvencijom 400 MHz a R2 sa 200 MHz. Prosečan broj ciklusa za svaku klasu instrukcija, za R1 i R2, prikazan je na Slici klasa CPI R1 CPI R2 C1 isk C2 isk C3 is A % 30% 50% B % 20% 30% C % 50% 20% Slika 1.11 Prosečan broj ciklusa svake od klase instrukcija Napomena: Simbol C se odnosi na kompilator. C1(C2) kompilator mašine R1(R2). C1 isk (C2 isk ) prosečan broj instrukcija date klase koje se dobijaju prevođenjem programa. C3 je treći kompilator. Broj instrukcija koje koriste kopilatori za dati program je identičan. Koristeći C1 (C2) na obe mašine R1 i R2, odrediti za koliko će biti brža R1(R2). Ako se isporučuje R1 (R2), koji kompilator treba koristiti? Odgovor a) Ako se koristi C1, važi: T T CPI R1C1 =0,3*4+0,5*6+0,2*8=5,8 CPI R2C1 =0,3*2+0,5*4+0,2*3=3,2 CPI = NI i NI T CPUR1C1 =NI*CPI R1C1 *t cpr1 =NI*5,8/ T CPUR2C1 =NI*CPI R2C1 *t cpr2 =NI*3,2/ CPUR2C1 CPUR1C /( ) = = 1, /( ) 6 n i= 1 NIi CPIi * NI procenat uččešć klase i R1 je 1,1 puta brži od R

16 b) Ako se koristi C2, tada imamo: CPI R1C2 =6,4 CPI R2C2 =2,9 1 = pri istim uslovima je: t cpr1 6 Dobićemo da je R2 za 1,10 puta brži od R1. c) Ako se koristi simulator C3, tada: CPI R1C3 =5,4 CPI R2C3 =2,8 1 i t cpr2 = Pod istim uslovima koji važe za a) i b), dobićemo da je R1 za 1,04 puta brže od R2. Zbog toga, kada se koristi kompilator C3, treba isporučivati (kupovati) mašinu R1. Zadatak 1.11 Zainteresovani smo za dve implementacije mašine, jedna sa-, a druga bez specijalnog FP hardvera. U toku izvršenja programa P učešće operacija je sledeće: FP množenje 10% FP sabiranje 15% FP deljenje 5% Integer instrukcije 70% MFP (machine with floating point) ima FP hardver i zbog toga može FP operacije implementirati direktno. Za svaku klasu instrukcije potreban je sledeći broj taktnih intervala: FP množenje 6 FP sabiranje 4 FP deljenje 20 Integer instrukcije

17 MNFP (machine with no floating point) nema FP hardver i zbog toga mora emulirati FP operacije koristeći Integer instrukcije. Broj instrukcija tipa Integer, potreban za implementaciju svake od FP operacija, je sledeći: FP množenje -> 30, FP sabiranje -> 20, FP deljenje -> 50. Obe mašine se taktuju na 100 MHz. a) Odredi native MIPS za obe mašine. Napomena: native MIPS = ili, alternativno: MIPS = broj_instrukcija 6 vreme_izvršenja*10 taktna_učas tan ost 6 CPI*10, MIPS = T CPU NI 6 10 fcp MIPS = CPI 10 b) Ako je MFP-u potrebno 300*10 6 instrukcija da bi izvršio program, koliko je Integer instrukcija potrebno MNFP-u da izvrši isti program. c) Ako je broj instrukcija MFP-a 300*10 6, za koje vreme se izvrši program P na MFP i MNFP mašini. Odgovor a) CPI MFP =0,1*6+0,15*4+0,05*20+0,7*2=3,6 CPI MNFP = , 6 10 MIPS MFP = 6 MIPS MNFP = =27,8 6 =

18 b) klasa instrukcije učestanost kod MFP broj kod MFP (u milionima) broj kod MNFP (u milionima) FP množenje 10% 30 30*30=900 FP sabiranje 15% 45 45*20=900 FP deljenje 5% 15 50*15=750 Integer instr. 70% ukupno 100% T N 300 MIPS * 10 27, 8 * 10, 1 c) = = = 10, 8 s MFP 6 6 MFP 6 6 N 2 * * 10 T MNFP = = = 55, 2s MIPS 50 MNFP Zadatak 1.12 Neka je data mašina kod koje postoje tri klase instrukcija A,B i C i CPI sa merama datim na Slici klasa instrukcije CPI za klasu A 1 B 2 C 3 Slika 1.12 CPI za klase instrukcija Na osnovu merenja kôda istog programa za dva različita kompilatora, dobijeni su sledeći podaci (Slika 1.13): 1-17

19 broj instrukcija (10 9 ) za svaku klasu instrukcije kôd A B C kompilator kompilator Slika 1.13 Broj instrukcija svake klase Neka je taktna frekvencija 500 MHz. Koja kôdna sekvenca će se izvršavati brže, shodno MIPS-ovima, a koja shodno vremenu izvršenja? Odgovor vreme_izvršenja= T CPU =N*t cp N= n i= 1 CPI i * NI i CPU ovi_taktni_intervali taktna_frekvencija U konkretnom slučaju, kada je apliciran kompajler 1, važi: N c1 =(5*1+1*2+1*3)*10 9 =10*10 9. Kada je apliciran kompajler 2, imamo: N c2 =(10*1+1*2+1*3)*10 9 =15*10 9. Vreme izvršenja za odgovarajuće kompajlirane programe iznosi: T CPUC1 = T CPUC2 = 9 10*10 500* *10 500*10 6 = = 20 s 30 s Na osnovu vremena izvršenja zaključujemo da kompilator generiše kraći program. Odredimo sada MIPS-ove za svaku verziju programa. 1-18

20 broj_instrukcija T MIPS= 6 CPU * 10 MIPS C1 = ( + + )* * 10 MIPS C2 = ( + + )* * 10 9 = = 400 Interesantan zaključak koji se nameće je da kôd kompilatora 2 ima veći broj MIPS-ova ali se kôd kompilatora 1 izvršava za kraći vremenski period. Zadatak 1.13 Pretpostavite da ste glavni projektant novog procesora. Dizajn procesora i kompilatora su okončani, ali ostaje da se donese odluka da li će se i dalje proizvoditi sadašnji dizajn ili je vredno potrošiti još dodatnog vremena da bi se rešenje poboljšalo. O ovom problemu ste diskutovali sa timom inžejnera hardverista i došli ste do zaključka da se mogu ponuditi sledeće opcije: (a) ne menjati rešenje - ovaj tip mašine naziva se Rosn. Njegova taktna frekvencija je 500 MHz, a merenja na simulatoru su dala sledeće rezultate: klasa instrukcije CPI frekventnost broj instrukcija = NI A 2 40% 0.4 NI B 3 25% 0.25 NI C 3 25% 0.25 NI D 5 10% 0.1 NI (b) optimizovani hardver - tim projektanata hardvera je utvrdio da može poboljšati dizajn procesora, i povećati taktnu frekvenciju na 600 MHz. Poboljšani procesor zvaćemo Rpob. Merenja na simulatoru su dala sledeće rezultate: 1-19

21 klasa instrukcije CPI frekventnost A 2 40% B 2 25% C 3 25% D 4 10% (1) Odrediti CPI za mašine Rosn i Rpob. (2) Odredi MIPS za Rosn i Rpob. (3) Koliko puta je brži Rosn u odnosu na Rpob (4) Tim projektanata kompilatora obavešten je o diskusiji koja se odnosi na poboljšanje mašine pa zbog toga predlaže da poboljša kompilator sa ciljem da poveća performanse. Kombinaciju: poboljšani kompilator plus bazna mašina zvaćemo Rkom. Dobijeni rezultati za poređenu verziju kompilatora su sledeći: klasa instrukcije procenat instrukcije koji se izvršava u poređenju sa Rosn broj instrukcija NI A 90% B 90% NI NI C 85% NI = NIkom D 95% NI Ako Rosn izvršava 500 instrukcija klase A, tada će Rkom izvršavati 0,9*500=450 instrukcija klase A za isti program. Koliki je CPI za Rkom? (5) Koliko puta je brži Rkom u odnosu na Rosn? (6) Tim projektanata kompilatora ukazao je da je moguće implementirati kako hardverska, tako i kompilatorska 1-20

22 poboljšanja. Ovakav tip mašine zvaćemo Rhps. Koliko puta je brži Rhps u odnosu na Rosn? n NIi CPI = CPIi * Odgovor (1) CPI za Rosn iznosi: NI i NI CPI Rosn =2*0,4+3*0,25+3*0,25+5*0,1=2,8 CPI za Rpob iznosi: i= 1 NI = p i = procenat uččešć klase i CPI Rpob =2*0,4+2*0,25+3*0,25+4*0,1=2,45 (2) MIPS za Rosn i Rpob: MIPS Rosn =500/2,8=179 MIPS Rpob =600/2,45=245 (3) S obzirom da su Rosn i Rpob iste arhitekture, moguće je izvršiti njihovo poređenje sa aspekta MIPS rejtinga: MIPS MIPS Rpob Rosn = = 1, 4 (4) Ovaj problem se može rešiti na dva načina. Prvi se sastoji u sledećem: odredi se novi sastav instrukcija a zatim usklađuju frekvencije taktovanja. Kod drugog, određuje se novi (relativni) broj instrukcija i deli se CPI sa tim brojem. Koristićemo drugi pristup: odnos_instrukcija=0,9*0,4+0,9*0,25+0,85*0,25+0,1*0,95=0,8925. Sada se CPI određuje kao: 2* 0, 4* 0, 9 + 3* 0, 25* 0, 9 + 3* 0, 25* 0, * 01, * 0, CPI kom = = 3, N : N p p A A = p N = 100% N kom kom A N = 100% N :100% 1-21

23 (5) T CPURosn = T CPUkom = NI * CPI fcp NI kom osn *CPI fcp kom Rosn kom = = NI * 2,8 fcp osn NI*0,89*3,1 fcp kom = NI*2,5 fcp Pri fcp hps = fcp osn, imaćemo sledeći odnos performansi: PRkom PRosn T = T CPUkom 2, 8 = 112 2, 5 CPUosn =, (6) CPI za Rhps i Rosn se razlikuje, a za Rhps iznosi: 2* 0, 4* 0, 9 + 2* 0, 25* 0, 9 + 3* 0, 25* 0, * 01, * 0, 95 0, 81 CPIhps= = 2, 7. Za odnos performansi se dobija: PRhps PRosn T = T Zadatak 1.14 CPurhps 2, 8* 600MHz 2, 2* 500MHz CPUosn = = Propusnost magistrale (BW - bandwidth), se meri u MB/s i izračunava se kao: BW= 1 t cik * W gde je: t cik - vreme trajanja ciklusa magistrale; W - obim magistrale u bajtovima. Neka je taktna frekvencija mikroprocesora MHz-a, a memorijski ciklus, bez ubacivanja stanja čekanja, iznosi četiri taktna intervala. Odrediti propusnost magistrale pod uslovima: (a) da se ne vrši ubacivanje stanja čekanja; i (b) da se ubacuje jedno stanje čekanja. Uporediti dobijene rezultate sa performansama koje se odnose na mikroprocesor 8086 pod istim uslovima. 15, kom 1-22

24 Odgovor Magistrala podataka mikroprocesora 8088 je 8-bitna a memorijski ciklus je trajanja t cik =4*200ns=800ns ns a) BW 8088 = * 1B = 1, 25MB / s Magistrala podataka mikroprocesora 8086 je 16-bitna, pa je: BW 8086 = 1 * 2B = 2, 5MB / s 800ns b) Pod uslovom da se vrši ubaciavanje jednog stanja čekanja, memorijski ciklus trajaće 5 taktnih intervala, tj. t cik =5*200ns=1000ns, a propusnost magistrale u tom slučaju iznosiće: ' BW 8088 ' BW = * 1B= 1MB/ s 1000ns 1 = * 2B= 2MB/ s 1000ns 1-23

25 Ispitni zadaci Novembar Zadatak 1 Neka je data arhitektura koja izvršava sledeće četiri instrukcije: Add, Mul, Mem, Branch. U Tabeli 1 prikazan je broj instrukcija koji se, za dati program, izvršava, broj ciklusa potreban za izvršenje svake od instrukcija, i ubrzanje koje se postiže ako se izvrši modifikacija samo tog tipa instrukcije. Rangirati poboljšanja za svaki tip instrukcije u zavisnosti od njihovog uticaja na ukupne performanse Tabela 1 Tip broj vreme ubrzanje instrukcije instrukcija izvršenja Add 10* ciklusa 2,0 Mul 30* ciklusa 1,3 Mem 35* ciklusa 3,0 Branch 15* ciklusa 4,0 Napomena: Amdahl-ov zakon glasi ET novo = ET staro * ( FR neisk + ( FR isk / Sp isk )) Gde je: ET novo - novo vreme izvršenja; ET staro - staro vreme izvršenja (pre primene inovacije); FR neisk - deo (frakcija) vremena (ne instrukcija) za koji se poboljšanja ne odnose; FR isk - deo vremena za koji se poboljšanja izvedena na mašini odnose; Sp isk - ubrzanje koje postoji kada se poboljšanja koriste (ubrzanje koje se postiže za slučaj da se poboljšanja koriste celo vreme). Amdahl-ov zakon se može definisati korišćenjem ubrzanja kao Sp = ( ET staro / ET novo ) = 1 / ( FR neisk + ( FR isk / Sp isk )) 1-24

26 Odgovor 1: Da bi rešili ovaj problem potrebno je prvo izračunati broj ciklusa potreban da se izvrši program za svaku od instrukcija pre nego se obavi modifikacija svake od nabrojanih instrukcija, tj. odrediti FR isk, a zatim primeniti Amdahl-ov zakon. Množenjem broja instrukcija svakog tipa sa vremenom izvršenja po instrukciji dobija se broj ciklusa koji se troši za izvršenje svakog tipa instrukcija. U Tabeli 2 dati su rezultati izračunavanja. Tabela 2 tip instrukcije broj instrukcija vreme izvršenja ubrzanje po tipu broj ciklusa deo (frakcija) ciklusa Add 10* ciklusa 2,0 20*10 6 2% Mul 30* ciklusa 1,3 600* % Mem 35* ciklusa 3,0 350* % Branch 15* ciklusa 4,0 60*10 6 6% ukupno ciklusa T T T T N1 N2 N3 N4 = = = = T S ST1 1 T S T S T S ST2 2 ST3 3 ST = = = = 2 6 = = = = S(1) = = = S(2) = = = S(3) = = = S(4) = = = Moguće je sada na osnovu Amdahl-ovog zakona proceniti performanse, tj. izračunati FR isk za svaki tip instrukcije i zameniti ga u izraz za Sp = 1 / ( FR neisk + ( FR isk / Sp isk )) 1-25

27 Rezultati izračunavanja su prikazani u Tabeli 3 Tabela 3 tip instrukc. broj instrukc. vreme izvršenja ubrzanje po tipu broj ciklusa deo (frak.) ciklusa ukupno ubrzanje Add 10* ciklusa 2,0 20*10 6 2% 1.01 Mul 30* ciklusa 1,3 600* % 1015 Mem 35* ciklusa 3,0 350* % 1.29 Branch 15* ciklusa 4,0 60*10 6 6% 1.05 Januar-Februar Zadatak 1 a) Pretpostavimo da se program izvršava na Acme II procesoru čija je taktna frekvencija 300 MHz. Na osnovu procenta učešća i broja ciklusa, koji su za svaku klasu instrukcija dati u Tabeli 1, odrediti veličine CPI i MIPS za dati program. Tabela 1 Klasa instrukcije Ućestanost (%) Broj ciklusa aritmetićko/logićke 40 1 Load 20 1 Store 10 2 Branches 20 3 Floating point 10 5 ukupno NI instrukcija b) Ako optimizator eliminiše 30% aritmetičko/logičkih instrukcija (tj. 12% svih instrukcija), 30% Load instrukcija, i 20% floating-point instrukcija, odrediti ubrzanje koje se može postići optimizovanjem osnovnog programa. 1-26

28 Napomena: Amdahl-ov zakon glasi ET novo = ET staro * ( FR neisk + ( FR isk / Sp isk )) Gde je: ET novo - novo vreme izvršenja; ET staro - staro vreme izvršenja (pre primene inovacije); FR neisk - deo (frakcija) vremena (ne instrukcija) za koje se poboljšanja ne odnose; FR isk - deo vremena za koje se poboljšanja izvedena na mašini odnose; Sp isk - ubrzanje koje postoji kada se poboljšanja koriste (ubrzanje koje se postiže za slučaj da se poboljšanja koriste celo vreme). Amdahl-ov zakon se može definisati korišćenjem ubrzanja kao Sp = ( ET staro / ET novo ) = 1 / ( FR neisk + ( FR isk / Sp isk )) c) Odrediti veličine CPI i MIPS za optimizovanu verziju programa i uporediti ih sa vrednostima koje su dobijene pod a) za osnovni (neoptimizovani) program? Odgovor 1: a) CPI = = 1. 9 MIPS = 300 / 1. 9 = ukupno novih instrukcija - NIn 0.4(1-0.3)NI 0.2(1-0.3)NI 0.1NI 0.80NI=NIn 0.2NI 0.1(1-0.2)NI 0.8 NI :100% = 0.4(1 0.3) NI : p p p p p A A 0.28 NI = 100% 0.8NI = NI :100% = 0.2(1 0.3) NI : p B B 0.14 NI = 100% 0.8NI = A B Told b) Ubrzanje = = = = T new 1-27

29 c) Optimizacijom se smanjuje ukupan broj instrukcija za 20%, s obzirom da je =0.2. Zbog toga je neophodno množenje sa 1/(1-0.2) = 1/0.8, pa je nova tabela: Klasa instrukcije Učestanost (%) Broj ciklusa aritmetičko/logičke 40( 1 0.3) = 35 1 Load 0.8 ( 0.3) = 17.5 Store = Branches = ( 1 0.2) Floating point = 10 5 Na osnovu Tabele 2 za optimizovani program se dobija: CPI = 1.62/0.8= 2.025, MIPS= 300/2.025 =

30 2. Format naredbi, skup naredbi, adresiranja, rad sa procedurama

31 Mikroprocesor 8086 Definisanje pinova 2-1

32 Karakteristike mikroprocesora bit Arithmetic Logic Unit 16-bit data bus (8088 has 8-bit data bus) 20-bit address bus = 1,048,576 = 1 meg Adresa ukazuje na bajt u memoriji. Kod 8088 bajtovi se predaju 8-bitnoj magistrali podataka. Kod 8086 bajtovi sa parnih adresa idu na nižu polovinu magistrale podataka (bitovi 0-7) a bajtovi sa neparnih adresa idu na višu polovinu magistrale podataka (bitovi 8-15). Blok dijagram mikroprocesora

33 Registri jedinice za povezivanje na magistralu (BIU) i registri izvršne jedinice (EU) BIU registers ES CS SS DS IP Extra Segment Code Segment Stack Segment Data Segment Instruction Pointer EU registers AX BX CX DX AH BH CH DH SP BP SI D FLAGS AL BL CL DL Accumulator Base Register Count Register Data Register Stack Pointer Base Pointer Source Index Register Destination Index Register Overflow Carry flag Direction Parity flag Interrupt enable Auxiliary flag Trap Zero 6 are status flags 3 are control flag Sign 2-3

34 Registarski model procesora 8086 General Purpose Index AX AH AL BP SP BX BH BL SI CX CH CL DI DX DH DL Segment CS Status and Control Flags IP SS DS ES 2-4

35 Organizacija memorije F0000 E0000 D0000 C0000 B0000 A :FFFF 8000:0000 seg ofs :

36 Određivanje fizičke adrese Offset Value (16 bits) Segment Register (16 bits) Adder Physical Address (20 bits) 2 9 Offset: Segment: Address:

37 Ukazati na osnovne razlike između LE i BE adresiranja. Osam bitova (jedan bajt) nije dovoljno za memorisanje velikih brojeva, pa se zbog toga veći broj uzastopnih bajtova koristi za memorisanje velikih brojeva. Na primer, 2 bajta se koriste za prezentaciju 16-bitnih brojeva, 4 bajta za 32-bitne brojeve, 8 bajtova za 64-bitne,... Kod LE (little endian) adresiranja adresa rezultantne reči zadaje se najnižom bajt adresom. Na primer, ako se za memorisanje 32- bitne reči koriste lokacije 100, 101, 102, i 103 adresa broja biće 100. Lokacija 100 se koristi za čuvanje LS bajta broja, 101 za bajt naredni po težini, itd. Kod BE (big endian) adresiranja, primera radi, lokacija 100 se koristi za memorisanje MS bajta broja, 101 za naredni manji po težini itd. Neki od procesora koriste LE adresiranje (tipično su to procesori iz familije Intel 8086, uključujući i Intel 486) a drugi BE adresiranje (tipičan primer je familija Motorola MC68000). Izbor adresiranja obično nije od značaja sa izuzetkom kada je potrebno preneti podatke izmedju jednog sistema i drugog, ili kada je potrebno manipulisati samo sa individualnim bajtovima broja. 2-7

38 Skicirati format instrukcije kod četvoro-, tro-, dvo-, jedno- i nulto-adresnih mašina. Formati instrukcija su prikazani na Slici 2.1. op-kôd adrese operacija prvi operand a) četvoro-adresni format drugi operand rezultat naredna adresa operacija prvi operand drugi operand rezultat b) tro-adresni format operacija prvi operand i c) dvo-adresni format drugi operand operacija registar d) jedno-i-po-adresni format drugi operand operacija drugi operand e) jedno-adresni format operacija f) nulto-adresni format Slika 2.1 Formati instrukcija 2-8

39 Formiranje efektivne adrese operanda instrukcije a) b) opkôd opkôd implicitno operand neposredno d) opkôd operand RF polje registarsko direktno c) opkôd adresa memorija memorijsko direktno operand operand f) opkôd operand registarsko indirektno RF polje e) e ) opkôd adresa memorija memorijsko indirektno operand memorija adresa operand operand g) opkôd ofset h) opkôd adresa ofset registar + memorija RF polje memorija PC relativno operand registarsko relativno adresa + operand i) opkôd baza registar indeksno sa autoinkr./ dekrem. memorija j) opkôd adresa baza RF polje bazno indeksno memorija +1 (-1) + + operand index + operand Slika 2.2 : Načini adresiranja 2-9

40 Zadatak 2.3 Neka procesor koristi sledeće načine adresiranja Lda ADR ; direktno Lda #NADR ; neposredno Lda [ADR] ; indirektno Lda $ADR ; relativno, tj. M(ADR+PC) Lda (R1)ADR ; indeksno, tj. M(ADR+R1) Lda R1 ; registarsko Lda [R1] ; registarsko indirektno a) Koliko puta će se upravljačka jedinica obratiti memoriji u toku izvršenja instrukcije Add R1,[OP1]. Instrukciju Add čine dve reči. Prva reč specificira opkôd i adresu registra R1 a druga indirektnu adresu. b) Koliko puta će se upravljačka jedinica obratiti memoriji u toku izvršenja instrukcije bezuslovnog grananja Jmp [ADR1]. Instrukciju Jmp čine dve reči, prva je opkôd a druga indirektna adresa grananja. Odgovor (a) Da bi odgovorili na ovo pitanje pretpostavićemo sledeće: opkôd instrukcije Add se nalazi na adresi A. sadržaj lokacije A+1 neka je na lokaciji M[1000] upisana je vrednost 2000 na lokaciji M[2000] upisana je vrednost 150 pre početka izvršenja instrukcije Add u registar R1 čuva se vrednost 20. Sadržaj memorije i registra R1 pre i nakon izvršenja instrukcije je oblika: 2-10

41 adresa A A memorija... opkôd Add pre početka Add nakon završetka Add R R1 Da bi se izvršila instrukcija Add, upravljačka jedinica se obraća četiri puta memoriji i to : Prvi put kada pribavlja opkôd Add, drugi put kada čita indirektnu adresu (sadržaj lokacije A+1), treći put kada čita sadržaj lokacije M[1000] = 2000 (adresu na kojoj se nalazi operand), i četvrti put kada čita adresu operanda instrukcije (M(2000)=150) b) Pod sličnim uslovima, za instrukciju Jmp imaćemo: adresa A A memorija... opkôd Jmp nakon završetka instrukcije JMP[1000] PC 3500 I u ovom slučaju upravljačka jedinica se obraća memoriji četiri puta. 2-11

42 Zadatak 2.4 Instrukcija koja je smeštena na adresama 250 i 251 je tipa "Load u Acc" kod koje je adresno polje ADR (ili neposredni operand NOPR) jednak 500. Vrednost PC-a pre pribavljanja ove instrukcije je 250 a nakon pribavljanja 252 (ukazuje na narednu instrukciju). Sadržaj registra R1 je 400, a u Acc se smešta rezultat koji se dobija izvršenjem instrukcije. Odrediti sadržaj registra Acc i efektivnu adresu za sledeće adresne načine rada ove instrukcije: a) direktni, b) neposredni, c) indirektni, d) relativni, e) indeksni, f) registarski, g) registarsko indirektni adrese memorija PC R1 Acc opkôd mode ADR ili NOPR=500 opkôd naredne instrukcije Slika 2.8 : Izgled memorije i stanje PC-a, R1 i Acc pre izvršenja instrukcije Lda Odgovor adr. nač. rada simbol. obeležav. registarski prenos efek. adr. sadrž. Acc direktni Lda ADR Acc M[ADR] neposredni Lda #NOPR Acc NOPR indirektni Lda [ADR] Acc M[M[ADR]] relativni Lda $ADR Acc M[ADR+PC] indeksni Lda (R1)ADR Acc M[ADR+R1] registarski Lda R1 Acc R1-400 registarskoindirektni Lda [R1] Acc M[R1] Slika 2.9 : Simbolička konvencija kod adresnih načina rada 2-12

43 Test pitanje 2.6 Usvojiti da je obim instrukcije 16-bitni, a operandi se specificiraju 6-bitnim poljem. Neka postoji k dvo-operandskih i n nulto-operandskih instrukcija. Koji je maksimalan broj jednooperandskih instrukcija koji se može podržavati od strane mašine? Odgovor Za dvo-operandske instrukcije imećemo sledeći format: 4 6 opkod operand 1 operand k = 15 dvo-operandskih instrukcija Kod jedno-operandskih instrukcija važiće format: opkod operand m = 63 jedno-operandske instrukcije Kod nulto-operandskih instrukcija imaćemo format: 16 opkod m = 64 nultooperandske instrukcije Za rešavanje ovog problema korišćena je tehnika kodiranja sa proširenjem. 2-13

44 Zadatak 2.5 Sastavni deo staze podataka računara je RF polje koga čine 32 registra. Instrukcije PUSH i POP nisu implementirane, ali računar koristi sledeće registarsko indirektne načine rada: registarsko indirektni + inkrementiranje: Lda+ Rm,Rn ; Rm M[Rn] ; Rn Rn+1 Sto+ Rm,Rn ; M[Rn] Rm ; Rn Rn+1 dekrementranje + registarsko indirektno: Lda- Rm,Rn ; Rn Rn-1 Sto- Rm,Rn ; Rm M[Rn] ; Rn Rn-1 ; M[Rn] Rm Pokazati kako se ove instrukcije mogu iskoristiti sa ciljem da se obezbede ekvivalentne instrukcije tipa PUSH i POP koristeći se pri tome registrom R7 kao pokazivačem magacina. Napomena: m n, m=0,...,31, n=0,...,31, dodatno Rm i Rn mogu da specificiraju registre PC i PSW. Odgovor Instrukciju PUSH Rk kod najvećeg broja procesora čine sledeće aktivnosti: SP pokazuje na punu lokaciju; SP SP-1 smanji se vrednost SP za 1 i u M[SP] Rk praznu mem. lokaciju smešta se Rk a instrukciju POP Rk M[SP] SP SP+1 Karakteristike ovakvog načina rada su sledeće: (a) magacin raste naniže (b) SP uvek pokazuje na punu lokaciju 2-14

45 (c) kod operacije PUSH pokazivač SP se prvo dekrementira a nakon toga smešta podatak u magacin. (d) kod operacije POP prvo se izbavlja podatak iz magacina a nakon toga se inkrementira SP. U konkretnom slučaju koristeći raspoložive naredbe Lda+, Sto+, Lda- i Sto- moguće je organizovati rad magacina koristeći sledeće instrukcije: operacija PUSH Sto- Rm,R7 ; R7 R7-1 ; M[R7] Rm operacija POP Lda+ Rm,R7 ; Rm M[R7] ; R7 R7+1 Zadatak 2.7 Neka su N, Z, V i C četiri markera uslova koji su sastavni deo PSW registra CPU-a, a uslovna grananja se obavljaju shodno Slikama tip grananja mnemonik Test uslov Branch if zero BZ Z=1 Branch if not zero BNZ Z=0 Branch if carry BC C=1 Branch if not carry BNC C=0 Branch if minus BN N=1 Branch if plus BNN N=0 Branch if overflow BV V=1 Branch if not overflow BNV V=0 Slika 2.11 : Instrukcije uslovnog grananja koje se odnose na slanje statusnog bita PSW registra 2-15

46 2-16 tip grananja mnemo nik uslov statusni bitovi Branch if higher BH A>B C+Z=0 Branch if higher or equal BHE A B C=0 Branch if lower BL A<B C=1 Branch if lower or equal BLE A B C+Z=1 Branch if equal BE A=B Z=1 Branch if not equal BNE A B Z=0 Slika 2.12 : Instrukcije uslovnog grananja koje se odnose na neoznačene brojeve *Napomena: Marker bit C u ovom slučaju odnosi se na pozajmljivanje (borrow bit) tip grananja mnemo uslov statusni bitovi nik Branch if greater BG A>B (N V)+Z=0 Branch if greater or equal BGE A B N V=0 Branch if less BL A<B N V=1 Branch if less or equal BLE A B (N+V)+Z=1 Slika 2.13 : Instrukcije uslovnog grananja koje se odnose na označene brojeve Program koji se izvršava na hipotetičkom računaru komparira dva neoznačena (označena) broja A i B obavljajući operaciju oduzimanje A-B i uz istovremeno ažuriranje stanja statusnih bitova. Neka je A= i B= (a) odrediti razliku i interpretirati binarni rezultat (b) ako su A i B neoznačeni brojevi odrediti vrednosti statusnih bitova C (borow) i Z (zero) (c) ako su A i B označeni brojevi odrediti vrednost statusnih bitova N (sign), Z (zero) i V (overflow)

47 (d) ukazati koje instrukcije uslovnog grananja iz slike 2.12 imaju uslov=istinit (True) (e) ukazati koje instrukcije uslovnog grananja iz slike 2.13 imaju uslov=istinit (True) Odgovor (a1) Algoritam za oduzimanje dva neoznačena n-bitna broja A i B osnove 2 čine sledeći koraci: (i) oduzima se umanjilac B od umanjenika A (ii) ako se na mesto MS bit pozicije ne javi "Borrow" tada je A B razlika je pozitivna a rezultat korektan. (iii) Ako se na mesto MS bit pozicije javi "Borrow" tada je B>A pa razliku B-A treba oduzeti od 2 n a znak minus pridružiti rezultatu. Kada se javi pozajmljivanje imamo da je rezultat jednak A-B+2 n, gde 2 n predstavlja vrednost pozajmljivanja na MS bit poziciji. Umesto ovog rezultata, željeni moduo je B-A. On se može dobiti oduzimanjem prethodne formule od 2 n, tj. 2 n -(A-B+2 n )=B-A U konkretnom primeru treba da oduzmemo sledeća dva binarna broja A= i B= Borrow A B početni rezultat MS Borrow je 1 a to ukazuje da je potrebno izvršiti korekciju rezultata početni rezultat konačni rezultat

48 (napomena : Do istog rezultata se dolazi formiranjem razlike B-A Borrow B A konačni rezultat (Ovaj konačni rezultat je korektan) Alternativna operacija oduzimanja dva n-bitna neoznačena broja A i B se može obaviti na sledeći način: (j) dodaje se dvojični komplement umanjilaca B umanjeniku A. Ova operacija se izvršava na sledeći način: A+(2 n -B)=A-B+2 n. (jj) ako je A B, suma će generisati Carry na mesto MS bit pozicije, tj. 2 n. Ovaj prenos se anulira (ne uzima u obzir) a ono što ostaje predstavlja rezultat A-B. (jjj) ako je A<B, suma neće generisati Carry na mestu MS bit pozicije i ona je jednaka 2 n -(B-A), što predstavlja dvojični komplement od B-A. Korekcija se obavlja kao i u prethodnom slučaju (iii), uzimajući dvojični komplement sume i dopisivanjem znaka minus ispred. U konkretnom slučaju imaćemo: A = dvojični komp. od B = rezultat_ime = Ne postoji prenos na MS bit poziciji pa je zbog toga potrebno izvršiti korekciju rezultata rezultat_ime na sledeći način u konačni kon_rezultat. kon_rezultat=-(dvojični komplement od )= (a2) oduzimanje dva označena broja kada se za negativne brojeve koristi notacija dvojičnog komplementa obavlja se shodno 2-18

49 sledećem postupku: uzima se dvojični komplement umanjilaca (uključujući i bit znaka) i dodaje se umanjeniku (uključujući i bit znaka). Carry koji se javlja na izlazu bita za znak ne uzima se u obzir. Suština procedure se sastoji u tome da se operacija oduzimanja može promeniti u operaciju sabiranja ako se promeni znak umanjilaca. Naime, (±A)-(+B)=( ±A)+(-B) (±A)-(-B)=( ±A)+(+B) Promena pozitivnog broja u negativni lako se izvodi uzimanjem njegovog dvojičnog komplementa. Obrnuta operacija je takođe jednostavna, jer komplement negativnog broja koji je već u komplementarnoj formi generiše pozitivni broj. 8-bitni označeni brojevi u dvojičnom komplementu se nalaze u opsegu od -128 do Logika za detekciju Overflow oblika je kao na Slici Cin A n B n Cn-1 V F n Cn C Slika 2.14 : Logika za Carry i Overflow U konkretnom slučaju imamo A= =+53 dok je B= =-60, pa će razlika biti A = (+53) dvojični komplement od B = (+60) rezultat (+113) Cn=0 Cn-1=0 S obzirom da nema Carry i Overflow, rezultat se nalazi u granicama dozvoljenog opsega za predstavljanje brojeva. 2-19

50 (b) Kada su A i B neoznačeni brojevi shodno prvom algoritmu vidimo da se javilo pozajmljivanje na mesto MS bit pozicije pa je C=1, a kako je dobijena razlika različita od nule to je i Z=0. (c) Kada su A i B označeni brojevi imaćemo da je N=0 (rezultat je pozitivan), Z=0 (rezultat je različit od nule), i V=0 ( nije odšlo do premašaja). (d) Sledeći uslovi biće istiniti: C=1 A<B - BL ; branch if lower C+Z=1 A B -BLE ; branch if lower or equal z=0 A B - BNE ; branch if not equal (e) sledeći uslovi biće istiniti (N V)+Z=0 A>B BG ; branch if greater N V=0 A B -BGE ; brench if greater or equal Zadatak 2.8 Napisati program za izračunavanje sledećeg aritmetičkog izraza: X=(A*(B+C))/(D*E-F) Usvojiti da su svi operandi inicijalno smešteni u memoriju (a) arhitektura procesora je tipa registar-u-registar a koriste se tro-adresne instrukcije. Za obraćanje memoriji koriste se isključivo instrukcije Load i Store. (b) arhitektura procesora je tipa memorija-u-memoriju a koriste se dvo-adresne instrukcije, tj. instrukcije su tipa Inst memop <op> memop. (c) CPU ima jedan akumulator a koristi jedno-adresne instrukcije, tj. instrukcije su tipa Inst memop <op>. 2-20

51 Odgovor (a) Lw R1,D Lw R2,E Lw R3,F Mul R1,R1,R2 Sub R1,R1,R3 Lw R2,A Lw R3,B Lw R4,C Add R3,R3,R4 Mul R1,R2,R3 Div R2,R2,R1 Sw X,R2 (b) Mul D,E Sub D,F Add B,C Mul A,B Div A,B Mov X,A (c) Mov D Mul E Sub F Mov T1 Mov C Add B Mul A Div T1 Mov X ; D*E R1 ; D*E-F R1 ;B+C R3 ;A*(B+C) R2 ;(A*(B+C))/(D*E-F) R2 ;(A*(B+C))/(D*E-F) X ;D*E D ;D*E-F D ;B+C B ;A*(B+C) A ;(A*(B+C))/((D*E)-F) A ;A X ;D Acc, Acc je akumulator ;E*Acc Acc ;Acc-F Acc ;Acc T1 ;C Acc ;B+Acc Acc ;A*Acc Acc ;Acc/T1 Acc ;Acc X 2-21

52 Zadatak 2.11 Neka je dat skup od četiri procesora P 0, P 1, P 2 i P 3, gde je P i i-to adresna mašina. P 0 je nulto-adresna stack mašina, dok su P 1, P 2 i P 3 konvencionalni računari svaki sa po 16 registara opšte-namene R0:R15 koji se koriste za manipulaciju sa podacima i kao adresni registri. Svi procesori, na nivou asemblerskog jezika, imaju opkôdove za instrukcije Add, Sub, Mul i Div radi implementacije operacija +, -, * i /, respektivno. a) Koristeći što je moguće manji broj instrukcija (kraći program), kreirati programske sekvence po kojima će svaka od mašina izračunavati vrednost sledećeg aritmetičkog izraza: X : = (A/B + C * D)/(D * E - F + C/A) + G, koristeći standardne mnemonike za ostale instrukcije kakve su na primer Load, Store, Push, Pop i dr. b) Izračunati ukupnu veličinu (obim) sva četiri programa u bitovima usvajajući da instrukcije na nivou mašinskog jezika imaju sledeće formate: (i) opkôdovi (ne sadrže adresnu informaciju) su 8-bitni; (ii) memorijske adrese su 16-bitne; (iii) adrese registara su 4-bitne. (na primer, dvo-adresna instrukcija Load R7,B koja se odnosi na mašinu P2 i označava R7:=M(B), je obima = 28 bitova). 2-22

53 Odgovor instrukci ja duži na instrukcija duži na instrukcija duž ina instrukcija duži na Push A 24 Load D 24 Mov R1,A 28 Div R0,A,B 44 Push B 24 Mul E 24 Div R1,B 28 Mul R1,C,D 44 Div 8 Sub F 24 Mov R2,C 28 Add R0,R0,R1 20 Push C 24 Store R1 12 Mov R2,D 28 Mul R1,D,E 44 Push D 24 Load C 24 Add R1,R2 16 Sub R1,R1,F 32 Mul 8 Div A 24 Mov R0,D 28 Div R2,C,A 44 Add 8 Add R1 12 Mul R0,E 28 Add R1,R1,R2 20 Push D 24 Store R1 12 Sub R0,F 28 Div R0,R0,R1 20 Push E 24 Load A 24 Mov R2,C 28 Add X,R0,G 44 Mul 8 Div B 24 Div R2,A 28 ukupno 312 bit. Push F 24 Store R1 12 Add R0,R2 16 d) tro-adresna Sub 8 Load C 24 Add R1,G 28 Push C 24 Mul C 24 Store X,R1 28 Push A 24 Add R1 12 ukupno 356 bitova Div 8 Div R2 12 c) dvo-adresna Add 8 Add G 24 Div 8 Store X 24 Push G 24 ukupno 336 bitova Add 8 b) jedno adresna Pop 24 ukupno 336 bitova a) nulto adresna mašina 2-23

54 Test pitanje 2.15 Stack orijentisana mašina se koristi za izračunavanje izraza z:= w + 3 * (x - y). a) napisati program za izračunavanje izraza; b) skicirati stanje magacina u toku izračunavanja izraza. Odgovor a) program... Push W Push 3 Push X Push Y Sub Mul Add Pop Z Upravljača jedinica SP... Magacin TOS Aritmetičologičk jedinica TOS - vrh magacina a) Program za odredjivanje izraza i princip rada mašine z z z z... TOS TOS y TOS x x TOS w w w w Push w Push 3 Push x Push y z z z z... w+3(x-y) TOS x-y 3 TOS 3(x-y) w w TOS w+3(x-y) TOS w+3(x-y) Sub Mul Add Pop z b) Izgled magacina u toku izvršenja programa Slika Princip rada stack mašine

55 Test pitanje 2.19 Kako se određuje memorijska adresa, kod sistema zasnovanog na mikroprocesoru 80x86, instrukcije Mov [3000h],AL ako je DS=1000h. Odgovor Registar AL memorijska adresa DS*10h+DISP 10000h+3000h memorijska lokacija memorijska adresa 13000h Test pitanje 2.24 Nakon izvršenja sledećih sekvenci na asemblerskom jeziku mikroprocesora 80x86: a) MOV BH,38h ADD BH,2Fh b) MOV AL,9Ch MOV DH,64h ADD AL,DH c) MOV AX,34F5h ADD AX,95EBh d) MOV BX,AAAAh ADD BX,5556h e) MOV AX,94C2h MOV BX,323Eh ADD AX,BX MOV DX,AX MOV CX,DX Odrediti u koje se stanje postavljaju markeri uslova CF, PF, AF, ZF i SF. Odgovor 2-25

56 a) MOV BH,38h ;BH = 38h ADD BH,2Fh ;38h + 2Fh = 67h = BH F CF = 0, PF = 0, AF = 1, ZF = 0, SF = 0 b) MOV AL,9Ch ; AL = 9Ch MOV DH,64h ; DH = 64h ADD AL,DH AL = 0 9 C CF = 1, PF = 1, AF = 1, ZF = 1, SF = 0 c) MOV AX,34F5h ; AX = 34F5h ADD AX,95EBh ; AX = CAE0h 3 4 F E B CA E CF = 0, PF = 0, AF = 1, ZF = 0, SF = 1 d) MOV BX,AAAAh ; BX = AAAAh ADD BX,5556h ; BX = 0000h AAAA CF = 1, PF = 1, AF = 1, ZF = 1, SF = 0 e) MOV AX,94C2h ; AX = 94C2h MOV BX,323Eh ; BX = 323Eh ADD AX,BX ; AX = C700h MOV DX,AX ; DX = C700h MOV CX,DX ; CX = C700h nakon sabiranja 9 4 C E C CF = 0, PF = 0, AF =1, ZF = 0, SF =

57 Test pitanje 2.28 Ukazati, odgovarajućim primerom, kako se u programu na asemblerskom jeziku mikroprocesora 80x86 definišu segmenti magacina, podataka i kôda. Odgovor I pored toga što je moguće napisati program na asemblerskom jeziku koji koristi samo jedan segment, uobičajeno je da se program sastoji od najmanje tri segmenta: segment magacina, segment podataka i kodni segment. Direktive 'SEGMENT' i "ENDS" koje ukazuju na početak i kraj segmenta imaju sledeći format: labela SEGMENT [opcije] ; iskazi koji pripadaju segmentu labela ENDS Ime labela koje se nalazi ispred direktiva SEGMENT i ENDS je identično i jedinstveno. Polje [opcije] daje važnu informaciju asembleru koja se odnosi na organizaciju segmenta, ali nije obavezno. Asemblersko jezički iskazi grupisani su u segmente sa ciljem da se prepoznaju od strane asemblera a shodno tome i od CPU-a. Segmentom magacin definiše se memorijski prostor za magacin, segmentom podataka definišu se podaci koji će program da koristi, a kôdni segment sadrži (čine ga) instrukcije na asemblerskom jeziku. Jedan jednostavan program na asemblerskom jeziku prikazan je na Slici

58 ; forma programa na asemblerskom jeziku procesora 80x86 STEKSEG SEGMENT DB 64 DUP(?) STEKSEG ENDS ; ******************************************* DATASEG SEGMENT POD1 DB 26 h POD2 DB 29 h SUMA DB? DATASEG ENDS ; ******************************************* KODSEG SEGMENT GL_PROG PROC FAR ; početna tačka programa ASSUME CS:KODSEG, DS:DATASEG, SS:STEKSEG MOV AX, DATASEG ;napuni adresu segmenta podataka MOV DS, AX ; dodeli vrednost DS-u MOV AL, POD1 ; dobavi prvi operand MOV BL, POD2 ; dobavi drugi operand ADD AL, BL ; saberi operande MOV SUMA, AL ; smesti rezultat u lokaciju SUMA MOV AH, 4Ch ; postavi se za INT 21h ; povratak u DOS GL_PROG ENDP KODSEG ENDS END GL-PROG ; izlazna tačka programa Slika 2.18 : Jednostavan program na asemblerskom jeziku Segment magacina sadrži liniju "DB 64 DUP (?)". Ovom direktivom rezerviše se memorijski prostor obima 64-bajta za potrebe magacina. U segmentu podataka definisane su tri stavke: POD1, POD2, i SUMA, svaka obima bajt. Prva direktiva u kôdnom segmentu nakon SEGMENT direktive je direktiva PROC. Procedura predstavlja grupu instrukcija koja 2-28

59 je namenjena da obavi specifičnu funkciju. Program sa Slike 2.18 sastoji se od jedne procedure, ali uobičajeno po nekoliko malih procedura, u suštini, čine program struktuiranijim. Svakoj proceduri se dodeljuje ime. Direktive PROC i ENDP mora da imaju istu oznaku (labelu). PROC direktiva može da ima opciju NEAR i FAR. DOS zahteva da ulazna tačka korisničkog programa bude procedura tipa FAR. Odmah nakon direktive PROC sledi direktiva ASSUME. Ova direktiva ukazuje asembleru koji će od segmenata definisanih direktivama SEGMENT biti korišćeni. Obično DOS dodeljuje tačne vrednosti segmentnim registrima CS i SS, dok se vrednost registra DS (i ES ako se koristi) mora inicijalizirati od strane programa kako je to prikazano na sl Zadnje dve instrukcije jezgra programa su MOV AH,4Ch INT 21h Namena ovih instrukcija je da vrate upravljanje radom CPU-a operativnom sistemu, u konkretnom slučaju DOS-u. Zadnje tri linije ukazuju na kraj procedure, kôdnog segmenta i glavnog programa respektivno. Treba uočiti da labela koja prethodi ENDP (GL_PROG) mora biti identična sa labelom koja prethodi direktivi PROC, a isti zaključak važi i za ENDS i SEGMENT (prethodi im ista labela KODSEG). Pseudo-instrukcijom END završava se ceo program i ukazuje DOS-u da je početnoj-tački-programa kraj. Iz tog razloga labele za početnu-tačku-programa i END moraju biti identične. 2-29

60 Test pitanje 2.29 Sledeći program napisan na asemblerskom jeziku mikroprocesora 80x86 ima pet grešaka. Ukazati koje su to STEKSEG SEGMENT DB 100 DUP (?) STE_SEG ENDS DATASEG SEGMENT POD1 DB? DATASEG END KODSEG SEGMENT GL_PROG PROC FAR MOV AX,DATASEG MOV DS,AX MOV AL,34h ADD AL,4Fh MOV POD1,AL POCETAK ENDP KODSEG ENDS END Odgovor STEKSEG SEGMENT DB 100 DUP (?) *** STE_SEG ENDS DATASEG SEGMENT POD1 DB? *** DATASEG END KODSEG SEGMENT GL_PROG PROC FAR *** ASSUME ; nema ASSUME u izvornom kôdu MOV AX,DATASEG MOV DS,AX MOV AL,34h ADD AL,4Fh MOV POD1,AL *** POCETAK ENDP KODSEG ENDS *** END

61 Test pitanje 2.30 Tri koraka u procesu kreiranja izvršivih programa na asemblerskom jeziku mikroprocesora 80x86 prikazana su na Slici Popuniti podacima ostale pozicije i ukazati na karakteristike fajlova sa ekstenzijom.asm,.obj,.crf,.map i.exe. Odgovor Korak Ulaz Program Izlaz 1. Program za editovanje tastatura mojfajl.asm 2. Asembliranje programa mojfajl.asm MASM mojfajl.obj 3. Linkovanje programa mojfajl.obj LINK mojfajl.exe Slika 2.19 : Koraci u procesu kreiranja izvršivih programa Napomena: U šrafiranoj oblasti nalaze se odgovori Vizuelne prezentacije efekata koraka na Slici 2.19 prikazani su na Slici "asm" fajl (izvorni fajl) kreira se od strane tekst procesora ili linijskog editora. MASM asembler konvertuje.asm fajlove (instrukcije na asemblerskom jeziku) u ".obj" fajlove (fajl na mašinskom jeziku) pored kreiranja objektnog programa MASM kreira i ".lst" fajl (listing fajl). ".lst" fajl je opcioni i veoma koristan programeru jer on lista sve opkôd i ofset adrese kao i sve greške koje detektuje MASM. MASM generiše i jedan opcioni fajl koji ima ekstenziju ".crf". On obezbedjuje alfabetsku listu svih simbola i labela koje se koriste u programu kao i broj linije u programu kada im se vrši obraćanje. kada u programu postoji veći broj kôdnih segmenata i segmenata za podatke postoji i potreba da se sazna gde se svaki od tih segmenata locira i koliki je obim u bajtovima svaki od njih. Ovu 2-31

62 informaciju pruža fajl se ekstenzijom.map. Fajl sa ekstenzijom.map je opcioni i daje ime svakog segmenta, gde svaki segment počinje, gde završava i koliki je njegov obim u bajtovima. fajl sa ekstenzijom.exe je izvršivi Napomena: Postoje dve asemblerske direktive koje se koriste da učine fajl sa ekstenzijom.lst čitljivijim, a to su PAGE i TITLE. Format PAGE direktive je PAGE [linije],[kolone] ova direktiva ukazuje štampaču kako treba da se kuca tekst. Na primer PAGE 70,92 znači da će se na jednoj stranici kucati 72 linije, a u svakoj liniji po 92 znaka. Tekst nakon pseudo instrukcije TITLE unosi programer i on na jedan bliži način treba da opiše (asocira) koja je namena programa i za šta se koristi. EDITOR (program) ASEMBLER (program) mojfajl.asm mojfajl.lst mojfajl.crt drugi.obj fajlovi LINKER (program) mojfajl.map mojfajl.exe Slika 2.20 Koraci u generisanju izvršivih programa 2-32

63 Zadatak 2.19 Stepen inteligencije pet testiranih studenata je sledeći 82, 76, 73, 94 i 70. Napisati programsku sekvencu za odredjivanje najvišeg stepena inteligencije. Odgovor TITLE TESTIRANJE PAGE 80,100 SMAG SEGMENT DB 80 DUP (?) SMAG ENDS ; SPOD SEGMENT KOEFIC DB 82,76,73,94,70 NAJVISI DB? SPOD ENDS ; SPROG SEGMENT PROG_1 PROC FAR ASSUME CS:SPROG,DS:SPOD,SS:SMAG MOV AX,SPOD MOV DS,AX MOV CX,5 ; postavi brojač MOV BX,OFFSET KOEFIC ;BX ukazuje na KOEFIC SUB AL,AL ;AL=0 i čuva NAJVISI koeficijent PONOVI: CMP AL,[BX] ; uporedi naredni sa najvišim JA NAREDNI ; skok ako je AL najviši MOV AL,[BX] ; AL čuva novi najviši NAREDNI: INC BX ; ukaži na naredni koeficijent LOOP PONOVI ; produži pretraživanje MOV NAJVISI,AL ; sačuvaj najviši koeficijent MOV AH,4Ch ; povratak na DOS INT 21h PROG_1 ENDI SPROG ENDS END PROG_1 2-33

64 Zadatak 2.20 ASCII kôdovi za mala i velika slova prikazani su na Slici slovo Heksa decimalna slovo Heksa decimalna vrednost vrednost A 41 a 61 B 42 b 62 C 43 c 63 D 44 d Y 59 y 79 Z 5A z 7A Slika 2.21: ASCII kodovi za mala i velika slova Napisati programsku sekvencu na asemblerskom jeziku mikroprocesora 80x86 za konverziju tekstva 'moje IME je mile' u niz velikih slova. Odgovor TITLE KONVERZIJA U VELIKA SLOVA PAGE 80,100 SMAG SEGMENT DB 128 DUP (?) SMAG ENDS ; SPOD SEGMENT POD1 DB 'moje IME je mile' POD2 DB 16 DUP(?) SPOD ENDS ; SPROG SEGMENT KON PROC FAR ASSUME CS:SPROG,DS:SPOD,SS:SMAG 2-34

65 MOV AX,SPOD MOV DS,AX MOV SI,OFFSET POD1 ;SI pokazuje na početni niz MOV DI,OFFSET POD2 ;DI pokazuje na konvertovani niz MOV CX,16 ;CX je brojač simbola u nizu PONOVI: MOV AL,[SI] ;dobavi naredni znak CMP AL,61h ;da li je manji od 'a' JB IZNAD ;nema potrebe za konverzijom CMP AL,7Ah ;da li je veće od 'z' JA IZNAD ;nema potrebe za konverzijom AND AL, b ;maskiraj DS bit poziciju za ;konverziju znaka u veliko slovo IZNAD: MOV [DI],AL ;smesti veliko slovo INC SI ;povećaj pokaziv. početnog niza INC DI ;povećaj pokazivač velikih slova LOOP PONOVI ;produži ako je CX=0 MOV AH,4Ch INT 21h ;povratak na DOS KON ENDP SPROG ENDS END KON Zadatak 2.21 Niz od 10 ASCII znakova smešten je u segmentu podataka počev od ofset adrese 0010h na sledeći način: ASC DB " " ORG 0010h NEPAK DB 10 DUP(?) Napisati programsku sekvencu na asemblerskom jeziku mikroprocesora 80x86 za konverziju ASCII znakova u nepakovane BCD brojeve. Odgovor 2-35

66 Odgovarajući ASCII formati u heksadecimalnom i binarnom kôdu kao i BCD nepakovanom kôdu su oblika 2-36 dirka ASCII (hex) binarni BCD nepakovani Konverzija ASCII kôda u nepakovani BCD kôd vrši se logičkom operacijom And ASCII broja sa " " (0Fh). Programska sekvenca za konverziju je oblika: MOV CX,5 MOV BX,OFFSET ASC ; BX pokazuje na ASCII podatke MOV DI,OFFSET NEPAK ; DI pok. na "nepakovane" BCD PONOVI: MOV AX,[BX] ; kopiraj dva naredna ASCII u AX AND AX,0F0Fh ; poništi ASCII MS 3 MOV [DI],AX ; smesti nepakovani BCD ADD DI,2 ; ukaži na naredni BCD ADD BX,2 ; pokaži na naredni ASCII LOOP PONOVI Karakteristično za ovu sekvencu je sledeće: I pored toga što je podatak definisan direktivom DB, njemu se pristupa kao 16- bitnom. Alternativno rešenje se zasniva na korišćenju PTR direktive MOV CX,5

67 MOV BX,OFFSET ASC MOV DI,OFFSET NEPAK PONOVI: MOV AX,WORD PTR[BX] ; kopiraj dva bajta u AX AND AX,0F0Fh MOV WORD PTR[DI],AX ; smesti nepakovani BCD ADD DI,2 ADD BX,2 LOOP PONOVI Interesantno je takodje i rešenje koje umesto dva pokazivača koristi jedan pokazivač kao što je sledeće MOV CX,10 ; puni se brojač SUB BX,BX ; BX = 0 PONOVI: MOV AL,ASC[BX] ; AL = M[BX + ASC] AND AL,0Fh ; maskira se MS nibl MOV NEPAK[BX],AL ; AL M[BX + NEPAK] INC BX ; povećaj pokazivač LOOP PONOVI Operandi kojima se pristupa su obima bajt. Za slučaj da se pristupa operandima tipa reč treba izvršiti sledeću modifikaciju MOV CX,5 SUB BX,BX PONOVI: MOV AX,WORD PTR ASC[BX] AND AX,0F0Fh MOV WORD PTR NEPAK[BX],AX ADD BX,2 LOOP PONOVI Zadatak 2.22 Preko tastature se prihvataju dva ASCII kodirana broja 38h i 32h. Kreirati programsku sekvencu na asemblerskom jeziku mikroprocesora 80x86 kojom se vrši konvertovanje ASCII kodiranih brojeva u pakovani BCD format. 2-37

68 Odgovor Konverzija ASCII u pakovani BCD, vrši se prvo konverzijom u nepakovani BCD a zatim njihovom kombinacijom se dobija pakovani BCD. Na primer kada se pritisnu dirke 8 i 2 tastatura generiše kodove 38h i 32h, respektivno. Cilj je da se dobije 82h ili h koji se zove pakovani BCD broj. Programska sekvenca pomoću koje se može obaviti specificirana aktivnost ima oblik: ORG 0010h ; ofset adresa podataka VRED_ASC DB '82' ; na ofset adresi 0010h je 38,. a VRED_PBCD DB? ; na ofset adresi 0011h je 32 MOV AX,WORD PTR VRED_ASC ; AH = 32, AL = 38 AND AX,0F0Fh ; maskiranje XCHG AH,AL ; AH AL MOV CL,4 ; CL = 4 radi pomeranja SHL AH,CL ; pomeri ulevo AH da bi dobio AH=80h OR AL,AH ; OR da bi se dobio pakovani BCD MOV VRED_PBCD,AL ; smesti rezultat Napomena: Obratiti pažnju na LE notaciju kod pribavljanja podataka iz memorije u registar AX. Zadatak 2.23 Kreirati programsku sekvencu, na asemblerskom jeziku mikroprocesora 80x86, koja je namenjena za konverziju pakovanog BCD broja 29 h u odgovarajući ASCII. Odgovor Kod konverzije pakovanog BCD broja u odgovarajući ASCII, mora da se izvrši prvo konverzija u nepakovani BCD a zatim u ASCII, shodno sledećem postupku: 2-38

69 pakovani BCD napakovani BCD ASCII 29 h 02 h & h & & & Programska sekvenca biće oblika VRED_PBCD DB 29h VRED_ASC DW? MOV AL,VRED_PBCD MOV AH,AL ;AL = AH, AL = 29 h, AH= 29h AND AX,0F00Fh ;maskiraj 9 od AH i 2 od AL MOV CL,4 ;pomeri udesno AH za nepakov. BCD SHL AH,CL OR AX,3030h ; kombinuj 30 da se dobije ASCII XCHG AH,AL ; izvrši konverziju radi LE formata MOV VRED_ASC,AX ; smesti ASCII Test pitanje 2.31 Izvršiti analizu sledeće programske sekvence POD_A DD 62562FAh POD_B DD Bh RAZLIKA DD? MOV AX,WORD PTR POD_A ; AX = 62FA SUB AX,WORD PTR POD_B ; oduzmi 963B od AX MOV WORD PTR RAZLIKA,AX ; sačuvaj rezultat MOV AX,WORD PTR POD_A+2 ; AX = 0625 SBB AX,WORD PTR POD_B+2 ;oduzmi 0412 sa pozajmljiv MOV WORD PTR RAZLIKA+2,AX ; smesti rezultat i odrediti konačnu vrednost koja je smeštena na lokaciji RAZLIKA. Odgovor 2-39

70 Nakon SUB, AX=62FA-963B=CCBF i CF=1. Kako je CF=1 kada se obavi SBB imaćemo AX= =212. Zbog toga vrednost smeštena u RAZLIKA=0212CCBFh. Test pitanje 2.32 Napisati programsku sekvencu na asemblerskom jeziku mikroprocesora 80x86 kojom se odredjuje broj jedinica u bajtu. Odgovor ; u segmentu podataka POD1 DB 63h ; proizvoljno uzet broj BROJ DB? ; u kodnom segmentu SUB BL,BL ; BL = 0 čuva broj jedinica MOV DL,8 ; brojač rotacija MOV AL,POD1 PONOVI: RCL AL,1 ; rotiraj jednu bit poziciju JNC NAREDNI ; proveri za 1 INC BL ; ako je CF = 1 dodaj 1 brojaču NAREDNI: DEC DL ; dekrementiraj broj rotiranja JNZ PONOVI ; ako nije završen ponovi MOV BROJ,BL ; smesti broj jedinica u broj Test pitanje 2.38 Objasniti razlike izmedju pojmova potpuna definicija segmenata (full segment definition) i pojednostavljena definicija segmenata (simplified segment definition) kada se govori o programiranju na asemblerskom jeziku mikroprocesora 80x86. Odgovor Procesor 80x86 uobičajeno (u najvećem broju slučajeva) koristi četiri segmentna registra: CS (kôdni segment), DS (segment podataka), SS (segment magacina) i ES (ekstra segment). Svaka linija u programu na asemblerskom jeziku mora da pripada 2-40

71 (odgovara) jednom od ovih segmenata. Zadnjih godina novi metod segmenata je uveden (podržavan) od strane Microsoft-ov MASM 5.0 i naviše, Borland-ova TASM verzija 1 pa naviše, i od strane drugih kompatibilnih asemblera. Ovaj metod se zove format sa pojednostavljenom definicijom, a njegova stuština se sastoji u tome što koristi tri jednostavne direktive: ".CODE", ".DATA" i ".STACK", koje odgovaraju registrima CS, DS i SS, respektivno. Koristeći ove direktive korišćenje direktiva SEGMENT i ENDS čini nepotrebnim. U suštini pojednostavljena definicija segmenata je lakša za razumevanje i korišćenje, posebno za početnike. Pre nego što se koristi pojednostavljena definicija segmenata neophodno je izabrati memorijski model za program koji se kreira. Uglavnom se koriste sledeći memorijski modeli: SMALL model - jedan od najčešće korišćenih modela, koji koristi 64kB memorija za program i 64kB za podatke MEDIUIM model - podaci moraju se smestiti u 64kB, a program može biti veći od 64kB. COMPACT model - suprotan je modelu MEDIUM, tj. program se mora smestiti u 64kB, a podaci u prostor veći od 64kB. LARGE model - kombinovanjem prethodna dva modela dobija se LARGE model, tj. i kôd i podatke mogu biti veći od 64kB. Jedinstvena struktura podataka kao što je polje (vektor, matrica,...) ne sme da premaši 64kB. HUGE model - program i podaci mogu da premaše 64kB a takodje i jedinstvena struktura podataka može biti veća od 64kB. Postoji takodje, još jedan model nazvan TINY. Ovaj model se koristi sa COM fajlovima kod kojih ukupna memorija program plus podaci ne sme da premaši 64kB. TINY model se ne može koristiti u sklopu pojednostavljene definicije segmenata. Na Slici ilustracije radi za jedan isti program prikazana je uporedna prezentacija potpune i pojednostavljene definicije segmenata. 2-41

72 ; potpuna definicija segmenata ; pojednostavljena definicija segmenata ; segment magacina ----.MODEL SMALL SMAG SEGMENT.STACK 64 DB 64 DUP (?) ; SMAG ENDS ; ; segment podataka ; SPOD SEGMENT.DATA POD_1 DW 1234h POD_1 DW 1234h POD_2 DW 5678h POD_2 DW 5678h REZ DW? REZ DW? SPOD ENDS ; ; programski segment ; SPROG SEGMENT.CODE SABERI PROC FAR SABERI: MOV AX,@DATA ASSUME CS:SPROG MOV DS,AX MOV AX,SPOD... MOV DS,AX SABERI ENDP... SPROG ENDS... END SABERI END SABERI Slika 2.22 Potpuna u odnosu na pojednostvljenu definicija segmenata Jedan jednostavan program koji koristi pojednostavljenu definiciju segmenata prikazan je na Slici TITLE PROG 1 pojednostavljena definicija segmenta PAGE 60,132.MODEL SMALL.STACK 32.DATA POD_1 DW 1234h,4892h,3D87h,28E0h ORG 10h SUMA DW? 2-42

73 .CODE POCETAK: MOV MOV DS,AX MOV CX,4 ; CX = 4, brojač MOV DI,OFFSET POD_1 ; postavi pokazivač SUB BX,BX ; inicijaliziraj sumu BX SABERI: ADD BX,[DI] ; dodaj novu reč na BX INC DI ; inkrementiraj pokazivač INC DI DEC CX ; dekrementiraj brojač JNZ SABERI ; granaj se ako je CX = 0 MOV SI,OFFSET SUMA ; postavi pokazivač MOV [SI],BX ; smesti sumu MOV AH,4Ch INT 21h ; povratak na DOS END POCETAK Slika 2.23 : Program za sabiranje četiri reči koji koristi pojednostavljenu definiciju segmenata Kod programa sa Slike 2.23, redosled segmenata nije od važnosti, ali to znači da su segmenti kodirani u sledećem redosledu.stack.data.code Napomenimo da se program može kodirati i u obrnutom redosledu.code.data.stack kako je to prikazano na Slici TITLE PROG 2 pojednostavljena definicija segmenta PAGE 60,132.MODEL SMALL.CODE 2-43

74 GL_P MOV MOV DS,AX MOV SI,OFFSET POD_1 ;SI pokazivač izvornih podataka MOV DI,OFFSET KOPIRAJ ; DI pokazivač podataka ; koji se kopiraju MOV CX,06h ; CX brojač petlje PETLJA: MOV AL,[SI] ; kopiraj naredni bajt u AL MOV [DI],AL ; kopiraj AL INC SI ; inkrementiraj pokazivač INC DI DEC CX ; dekrementiraj brojač JNZ PETLJA ; granaj se ako je CX = 0 MOV AH,4Ch INT 21h ; povratak na DOS.DATA ORG 10h POD_1 DB 41h,23h,18h,12h,39h,62h ORG 28h KOPIRAJ DB 6 DUP (?).STACK 32 END GL_P Slika : Program za kopiranje šest bajtova u memoriji koji koristi pojednostavljenu definiciju segmenata u obrnutom redosledu Zadatak 2.25 Dva skupa ASCII kodiranih podataka se prihvataju sa tastature. Napisati program na asemblerskom jeziku mikroprocesora 80x86 za: a) konverziju podataka iz ASCII u pakovani BCD b) sabiranje višebajtnih pakovanih BCD i pamćenje rezultata c) konverzija pakovanog BCD rezultata u ASCII 2-44

75 Odgovor TITLE PROG_KON ASCII u BCD konverzija i sabiranje PAGE 60, 132 SMAG SEGMENT DB 64 DUP (?) SMAG ENDS ; PSEG SEGMENT POD1_ASC DB ' ' ORG 0010h POD2_ASC DB ' ' ORG 0020h POD3_BCD DB 5 DUP (?) ODG 0028h POD4_BCD DB 5 DUP (?) ORG 0030h POD5_SAB DB 5 DUP (?) ORG 0040h POD6_ASC DB 10 DUP (?) PSEG ENDS ; KSEG SEGMENT PROG1 PROC FAR ASSUME CS:KSEG,DS:PSEG,SS:SMAG MOV AX,PSEG MOV DS,AX MOV BX,OFFSET POD1_ASC ;BX pokazuje na prve ASCII MOV DI,OFFSET POD3_BCD ; DI pokazuje na prve BCD MOV CX,5 ; CX je brojač CALL KONV_BCD ; konverzija ASCII u BCD MOV BX,OFFSET POD2_ASC ;BX pokaz. na druge ASCII MOV DI,OFFSET POD4_BCD ; DI pokaz. na druge BCD MOV CX,5 ; CX je brojač CALL KONV_BCD ; konverzija ASCII u BCD 2-45

76 CALL BCD_SAB ; sabrati BCD operande MOV SI,OFFSET POD5_SAB ;SI pokaz. na BCD rezultat MOV DI,OFFSET POD6_ASC ;DI pokaz. na ASCII rezultat MOV CX,05 ; CX je brojač CALL KONV_ASC ;konverzija rezultata u ASCII MOV AH,4Ch INT 21h ; povratak na DOS PROG1 ENDP ; ; Potprogram za konverziju ASCII u pakovani BCD KONV_BCD PROC PONOVI: MOV AX,[BX] ; BX pokazivač ASCII podataka XCHG AH,AL AND AX,0F0Fh ; maskiraj ASCII 30h PUSH CX ; sačuvaj brojač MOV CL,4 ; pomeri AH četiri bita ulevo SHL AH,CL ; pripremi za pakovani BCD OR AL,AH ; kreiraj pakovani BCD MOV [DI],AL ; DI pokazivač na BCD ADD BX,2 ; ukaži na naredna dva ASCII bajta INC DI ; ukaži na naredni BCD POP CX ; obnovi sadržaj brojača LOOP PONOVI RET KONV_BCD ENDP ; ; Potprogram za sabiranje dva višebajtna pakovana BCD operanda BCD_SAB PROC MOV BX,OFFSET POD3_BCD ;BX pokaz. na prvi operand MOV DI,OFFSET POD4_BCD ;DI pokaz. na drugi operand MOV SI,OFFSET POD5_SUM ;SI pokazuje na sumu MOV CX,05 CLC 2-46

77 NOVI: MOV AL,[BX+4] ;nabavi naredni bajt za operand 1 ADC AL,[DI+4] ;nabavi naredni bajt za operand 2 DAA MOV [SI+4],AL 5 bajtova po operandu, ; smesti sumu pribavljamo poslednji bajt DEC DI ; ukaži na naredne bajtove DEC BX DEC SI LOOP NOVI RET BCD_SAB ENDP ; ; Potprogram za konverziju pakovanog BCD u ASCII KONV_ASC PROC IZNOVA: MOV AL,[SI] ; SI pokazivač na BCD MOV AH,AL ; dupliciranje za nepakovani AND AX,0F00Fh ; raspakuj PUSH CX ; sačuvaj brojač MOV CL,04 ; pomeri udesno 4 bita za SHR AH,CL ; gornji nibl OR AX,3030h ; kreiranje ASCII XCHG AH,AL ; promeni mesta MOV [DI],AX ; sačuvaj ASCII podatak INC SI ; pokaži na naredni BCD ADD DI,2 ; pokaži na naredni ASCII POP CX ; obnovi brojač petlje LOOP IZNOVA RET KONV_ASC ENDP KSEG ENDS END PROG1 - Instrukcije za korekciju rezultata (koji je u AL) u BCD format: DAA (decimal adjust after addition) - nakon sabiranja BCD brojeva DAS (decimal adjust after subtraction) - nakon oduzimanja BCD brojeva 2-47

78 - ASCII aritmetičke instrukcije: AAA (ASCII adjust after addition) - nakon sabiranja dva BCD broja, konvertuje rezultat (koji je u AL) u korektnu BCD formu AAD (ASCII adjust before division) - javlja se pre deljenja, zahteva da se pre izvršenja u AX nalaze dve cifre nepakovanog BCD broja, a rezultat se generiše u AL AAM (ASCII adjust after multiplication) - za konverziju binarne vrednosti (koja je u AL) u dve BCD cifre koje se smeštaju u AH i AL, koristi se nakon množenja dve nepakovane BCD cifre instrukcijom MUL kada je rezultat smešten u AL. AAS (ASCII adjust after subtraction) - podešava registar AX nakon ASCII oduzimanja, za rezultat se usvaja da je u AL Zadatak 2.26 Napisati programsku sekvencu na asemblerskom jeziku mikroprocesora 80x86 za množenje dve ASCII cifre '7' i '5', a dvocifreni rezultat pretstaviti u ASCII kôdu. Odgovor MOV AL,'7' ; AL = 37h AND AL,0Fh ; AL = 07 nepakovani BCD MOV DL,'6' ; DL = 36h AND DL,06h ; DL = 06 nepakovani BCD MUL DL ; AX = AL*DL = 07*06 = 002A h = 42 AAM ; AX = 0402 (7*6 = 42 nepakovani BCD) OR AX,3030h ; AX = 3432 rezultat u ASCII kodu Zadatak 2.27 a) Napisati programsku sekvancu na asemblerskom jeziku mikroprocesora 80x86 koja se koristi za sabiranje dve ASCII cifre '5' i '2', a rezultat predstaviti u ASCII kôdu. b) Ponoviti aktivnost pod a) za slučaj da su ASCII cifre '7' i '5'. 2-48

79 Odgovor a) MOV AL,'5' ; AL = 35 ADD AL,'2' ; AL = = 67 AAA ; promeni 67 u 07 OR AL,30h ; OR AL sa 30 h da bi dobio ASCII b) SUB AH,AH ; AH = 0 MOV AL,'7' ; AL = 37 MOV BL,'5' ; BL = 35 ADD AL,BL ; AL = = 6C AAA ; AL = 02 AH = CF = 1 OR AX,3030h ; AX = 3132 MUL - Unsigned multiply: when operand is a byte: AX = AL * operand. IMUL - Signed multiply: when operand is a byte: AX = AL * operand. DIV - Unsigned divide: when operand is a byte: AL = AX / operand AH = remainder (modulus).. IDIV - Signed divide: when operand is a byte: AL = AX / operand AH = remainder (modulus). when operand is a word: (DX AX) = AX * operand. when operand is a word: (DX AX) = AX * operand. when operand is a word: AX = (DX AX) / operand DX = remainder (modulus). when operand is a word: AX = (DX AX) / operand DX = remainder (modulus). 2-49

80 Test pitanje 2.45 Šta su moduli? Odgovor Česta je praksa kada se piše obiman softver, tj. veliki program, da se ceo program (projekat) razbije na manje celine, tzv. module, a zadatak koji se odnosi na pisanje ovih modula raspodeli izmedju većeg broja programera. Prednsoti ovakvog pristupa su sledeće: (1) svaki modul se može pisati, debagirati i testirati nezavisno od ostalih, (2) greške u jednom modulu ne dovode do blokiranja celog projekta, (3) moguće je koristiti module radi povezivanja (linkovanja) sa višim programskim jezicima kakvi su C, Pascal i drugi, (4) paralelni rad većeg broja programera na kreiranju različitih modula skraćuje ukupno vreme razvoja programa. Naše dosadašnje iskustvo, strategija i saznanje u pisanju programa je bila sledeća: Program je bio kreiran od glavne procedure koja je u toku svog izvršenja pozivala veći broj drugih potprograma. Ako se jedan od potprograma ne bi izvršio korektno tada je bilo neophodno ceo program ponovo napisati i reasemblirati. Efikasniji pristup u razvoju softvera bio bi sledeći: Tretirati svaki potprogram kao poseban program (ili modul) i dodeliti mu posebno fajl-ime. Zatim svaki od modula asemblirati i testirati. Nakon testiranja i verifikovanja da su svi oni ispravni potrebno je izvršiti njihovo povezivanje (linkovati ih) tako da oni čine jedinstvenu celinu (program). Mogućnost povezivanja modula ostvaruje se zahvaljujući korišćenju odredjenih asemblersko jezičkih direktiva. Direktive koje se najčešće koriste za ove potrebe su EXTRN (external) i PUBLIC. 2-50

81 Direktiva EXTRN se koristi da ukaže asembleru i linkeru da odredjena imena i promenljive nisu definisane u tekućem modulu nego su definisana na drugo mesto, tj. ona su eksterna. Za slučaj da se direktiva EXTRN ne koristi (ne specificira), asembler neće biti u stanju da odredi gde su ova imena definisana pa će zbog toga generisati grešku. Format direktive EXTRN je sledeći: EXTRN ime_1: tip posebnoj EXTRN EXTRN ime_2: tip EXTRN ime_3: tip, ime_4:tip ; svako ime može biti u ;veći broj imena može biti definisan ; istom direktivom EXTRN Eksterna imena koja se koriste kod procedura mogu biti NEAR, FAR ili PROC (NEAR za male module, a FAR za veće). Imenovani podaci mogu biti sledećeg tipa: BYTE, WORD, DWORD, FWORD, QWORD ili TWORD. Ona imena ili parametri definisani kao EXTRN (definisani kao spoljni u odnosu na tekući modul) moraju da se definišu kao PUBLIC u modulu gde su definisani. Definisanjem imena kao PUBLIC dozvoljava asembleru i linkeru da obavi uparivanje sa odgovarajućom definicijom koja se odnosi na EXTRN. Format direktive PUBLIC je sledeći: PUBLIC ime_1 ;svako ime može biti u posebnoj direktivi PUBLIC ime_2 PUBLIC ime_3, ime_4 ;više imena može biti izlistano u istoj ;direktivi tipa PUBLIC Analizirajmo sada konstrukciju jednog programa koga čini glavna rutina, GLAVNA, i dva manja potprograma nazvana PP_1 i PP_2. Potprograme, PP_1 i PP_2, poziva glavna rutina. ; prvi fajl predstavlja glavna rutina EXTRN PP_1:FAR EXTRN PP_2:FAR 2-51

82 PROG_SEG0 SEGMENT GLAVNA PROC FAR ASSUME CS:GLAVNA,DS:...,SS:...,ES: Call PP_1 Call PP_2... Mov AH, 4Ch Int 21h GLAVNA Endp PROG_SEG0 Ends End GLAVNA ; drugi fajl se odnosi na PP_1 PUBLIC PP_1 PROG_SEG1 SEGMENT PP_1 PROC FAR ASSUME CS:PROG_SEG1... Ret PP_1 Endp PROG_SEG1 Ends End ; treći fajl se odnosi na PP-2 PUBLIC PP_2 PROG_SEG2 SEGMENT PP_2 PROC FAR ASSUME CS:PROG_SEG2... Ret PP_2 Endp PROG_SEG2 Ends End Slika 2.30 : Pisanje i povezivanje modula Analizom programa sa Slike 2.30 može se zaključiti sledeće: 2-52

83 (1) ulazna tačka programa je GLAVNA a izlazna END GLAVNA. (2) moduli koji se pozivaju od strane glavnog modula imaju direktivu End iza koje ne sledi oznaka ili ime. U konkretnom slučaju PP_1 i PP_2 imaju direktivu End iza koje ne sledi oznaka. Test pitanje 2.46 Kako se vrši povezivanje modula? Odgovor Neka je svaki od programskih modula sa Slike 2.30 (test pitanje 2.45) bio asembliran zasebno i zapamćen kao fajl pod sledećim imenom: PROG_1.OBJ, PP_1.OBJ i PP_2.OBJ, respektivno. Njihovo povezivanje (linkovanje) pomoću makroasemblera MASM, sa ciljem da se dobije (generiše) jedinstveni izvršivi kôd, se vrši izdavanjem sledeće naredbe C > LINK PROG_1.OBJ + PP_1.OBJ + PP_2.OBJ. Test pitanje 2.48 Kako se vrši prenos parametara između modula? Odgovor Često se javlja potreba za prenos parametara izmedju različitih modula napisanih na asemblerskom jeziku ili izmedju programa napisanih na asemblerskom jeziku i HLL programa kakvi su Pascal, C i dr. Parametri koji se predaju mogu biti fiksne vrednosti, promenljive, polja podataka, ili pokazivači memorijskih lokacija. Najčešće prenos parametara izmedju modula vrši se preko registara, memorije ili magacina. 2-53

84 Jedan tipičan način predaje parametara preko registara prikazan je na Slici Ovaj program se koristi za konverziju ASCII kôdiranih znakova u binarne. Program postavlja segment podataka, prihvata ASCII podatke za tastature, smešta ih u memoriji, a zatim poziva rutinu za konverziju broja u binarni. Konačno rezultat smešta u memoriji. Registri BX i SI se koriste da ukazuju na odredjene podatke pre nego što se modul pozove a pozvani modul smešta rezultat u registar AX pre nego što se izvrši povratak iz pozvane rutine u pozivnu. TITLE PROG_4 Poziv programa za konverziju iz ASCII u binarni PAGE 60,132 PUBLIC DESET SMAG SEGMENT PARA STACK 'STACK' DB 64 DUP(?) SMAG Ends ; segment podataka SPOD SEGMENT ASC_OB LABEL BYTE ; ASCII oblast MAX_DUZ DB 6 ; maksimalna dužina ST_DUZ DB? ; stvarna dužina ASC_BR DB 6 DUP(?) ; ASCII broj ORG 10h BIN_BR DW 0 PORUKA DB 'MOLIM UNESI PETOCIFARSKI BROJ','$' DESET DW 10 SPOD Ends ; segment programa SPROG SEGMENT EXTRN ASC2B_KON:FAR ; konver. ASCII u binarni GLAVNI PROC FAR ASSUME CS:SPROG,DS:SPOD,SS:SMAG Mov AX,SPOD Mov DS,AX 2-54

85 ; prikazivanje poruke (PROMPT) Mov AH, 09 ; prenos parametra preko registra Mov DX, OFFSET PORUKA Int 21h ; poziv prekidne DOS rutrine ; množenje niza Mov AH,0Ah ; prenos parametara Mov DX,OFFSET ASC_OB ; preko registara Int 21h Mov SI,OFFSET ASC_BR Mov BH,00 Mov BL,ST_DUZ Dec BX Call ASC2B_KON ; poziv potprogr. za konverziju Mov BIN_BR,AX ; sačuvaj binarni (heksa) rezultat Mov AH,4Ch Int 21h ; povretak na DOS GLAVNI Endp SPROG Ends End GLAVNI Slika 2.34 : Pozivni program za konverziju ASCII u binarni Prenos parametara preko registara veoma često se koristi kod DOS-ovih i BIOS-ovih prekidnih funkcijskih poziva (tipično preko Int 21h i Int 10h i td). Prednost ovog metoda je brzi prenos podataka (procesor najbrže pristupa internim registrima) a nedostatak ograničeni broj CPU-ovih registara. Drugi metod za prenos parametara se zasniva na definisanju RAM oblasti, tj. memorijskih lokacija. DOS i BIOS često koriste i ovaj metod. Problem sa prenosom parametara preko fiksnih memorijskih oblasti se sastoji u tome što mora izmedju različitih proizvodjača računara da postoji univerzalni dogovor o memorijskim adresama preko kojih se prenose parametri. Nažalost ovakav dogovor do sada nije postignut. 2-55

86 Najčešće prenos parametara se vrši preko magacina. Ovaj metod je univerzalan jer magacin postoji kod svih računara. Ipak treba ukazati da su manipulacije sa magacinom kako komplikovane tako i rizične iz sledećeg razloga: Kada se modul pozove, u magacin se smešta povratna adresa pozivnog programa. Za slučaj da se sadržaj magacina promeni program će krahirati. Zbog ovoga manipulacije sa magacinom mora dobro da se poznaju pre nego što se upustimo u takav rad. Program na Slici 2.35 prikazuje način prenosa parametara preko magacina. Glavni modul dobavlja tri operanda tipa reč iz segmenta za podatke smešta ih u magacin, a zatim poziva potprogram. Potprogram dobavlja podatke iz magacina, sabira ih, smešta rezultat u registar, i obavlja povratak u pozivni program. Glavni program memoriše rezultat sabiranja. TITLE PROG_5 Predaja parametara preko magacina PAGE 60,132 EXTRN PP_6:FAR ; segment magacina SMAG SEGMENT PARA STACK 'STACK' DB 64 DUP (?) SMAG Ends SPOD SEGMENT PARA 'DATA' ; segment podataka VR1 DW 4157 VR2 DW 8436 VR3 DW 39C8 REZ DW 2 DUP(?) SPOD Ends ; programski segment SPR0 SEGMENT PARA PUBLIC 'CODE' GLAVNI PROC FAR ASSUME CS:SPRO,DS:SPOD,SS:SMAG Mov AX,SPOD Mov DS,AX Push VR3 ; smeštaj parametara u magacin 2-56

87 Push VR2 Push VR1 Call PP_6 ; poziv potprograma Mov REZ,AX ; smeštaj rezultata Mov REZ+2,BX Mov AH,4Ch Int 21h GLAVNI Endp SPR0 Ends End GLAVNI ; *************** a) glavni modul *************** ; u posebnom fajlu TITLE PR_6 Modul za sabiranje tri reči koje se prenose preko magacina PAGE 60,132 PUBLIC PP_6 ; segment podataka SPRO SEGMENT PARA PUBLIC 'CODE' PP_6 PROC FAR ASSUME CS:SPRO Sub BX,BX ; BX = 0 zbog prenosa Push BP ; sačuvaj BP Mov AX,[BP+6] ; VR1 AX Mov CX,[BP+8] ; VR2 CX Mov DX,[BP+10] ; VR3 DX Add AX,CX ; VR1 + VR2 AX Adc BX,00 ; CY BX Add AX,DX ; (VR1 + VR2) + VR3 AX Adc BX,00 ; BX + CY BX Pop BP ; obnovi BP pre povratka Ret 6 ; dodaj 6 na SP da premosti podatke PP_6 Endp SPRO Ends End ; *********************b) modul sabiranja ****************** 2-57

88 Slika 2.35 : Program za sabiranje tri broja gde se parametri prenose preko magacina Da bi se bolje razumele manipulacije sa magacinom u okviru modula sabiranje (Slika 2.35)) na Slici 2.36 prikazan je izgled magacina poziva procedure PP_6, tj. modula za sabiranje. uslovno je uzeto da pre izvršenja instrukcije Push VR3 pokazivač magacina, SP, ukazuje na lokaciju 2000 h. SP (pre Push VR3 nakon Ret 6) SP (nakon Push VR3) SP (nakon Push VR2) SP (nakon Push VR1) SP (nakon Call PP_6, nakon Pop BP) SP (nakon Push BP) YY XX 39 C CS IP BP FFF 1FFE 1FFD 1FFC 1FFB 1FFA 1FF9 1FF8 1FF7 1FF6 1FF5 1FF4 1FF3 1FF2 VR3 VR2 VR1 CS IP BP Slika 2.36 : Izgled magacina Test pitanje 2.68 Nezavisno od tipa mašine, strukture registara CPU-a, i prirode instrukcija, šta svaki skup instrukcija mora da specificira, tj. koja kôdna polja mora da sadrži svaka instrukcija? Odgovor Svaka instrukcija eksplicitno ili implicitno mora da sadrži kôdna polja pomoću kojih se spcificira: (1) koja operacija treba da se obavi, tipični primeri su ADD, MOV, LDA, SUB,

89 (2) gde se nalazi operand ili operandi ako postoje: operand ili operandi se mogu čuvati u registrima CPU-a, memoriji, ili U/I portovima. Lokacija operanda se može specificirati eksplicitno kao što je memorijska adresa, registar CPU-a, ili da se specificira implicitno u okviru opkôda kao što je akumulator kod jednoadresnih mašina, ili magacin kod nulto-adresnih. (3) gde smestiti rezultat, ako postoji - lokacija rezultata na sličan način kao i lokacija operanda se može eksplicitno ili implicitno specificirati. (4) gde se nalazi naredna instrukcija - in-line kôd je sekvenca instrukcija bez eksplicitnog grananja, a kod instrukcija koje menjaju tok programskog izvršenja Branch ili Jump adresa mora biti zadata kao deo tekuće instrukcije. Instrukcija Skip predstavlja izuzetak - adresa preskoka (skip) je implicitna, tj. to je adresa instrukcije nakon naredne instrukcije. Test pitanje 2.69 Dati kratak opis sredstava koji se koriste od strane programera na asemblerskom jeziku. Odgovor Sredstva koja programeri na asemblerskom jeziku koriste su: (1) editor - koristi se za ediciju izvornog kôda (2) asembler - omogućava programeru da od programa napisanih na asemblerskom jeziku generiše programe na mašinskom jeziku. Prevodi iskaze asemblerskog jezika u binarne ekvivalente. (3) linker - povezuje posebno asemblirane module u jedinstveni modul koji je pogodan za punjenje i izvršenje (4) loader - puni izvršive binarne kôdove u memoriju i transformiše neke logičke adrese u odgovarajuće fizičke. (5) debugger - omogućava programeru da nadgleda (kontroliše) detalje koji se odnose na izvršenje programa 2-59

90 (6) razvojni sistem - celina hardvera i softvera koja se koristi da podrži razvoj novih sistema Test pitanje 2.89 Odrediti vrednost fizičke adrese izvornog operanda za sledeću instrukciju MOV AL,1234H+[SI*2] neka je DS = 0200H a SI = 2000H Odgovor Fizička adresa = DS(0) H + (SI * 2) = 02000H H + (2000H * 2) = 07234H 2-60

91 Ispitni zadaci Novembar 1999 Zadatak 4 Izvršiti projektovanje opkôda promenljive dužine kako bi instrukcijom obima 36 bita bilo mogu}e kodirati: 7 instrukcija sa dve 15-bitne adrese i jedan 3-bitni broj za specifikaciju registra 500 instrukcija sa jednom 15-bitnom adresom i jedan 3-bitni broj za specifikaciju registra 50 instrukcija kod kojih se ne specificiraju adrese ili registri. Odgovor 7 instrukcija adr adr reg 500 instrukcija h - 1FEh 00h adr reg Napomena: Sa 9 bitova je moguće kodirati 512 instrukcija, što odgovara vrednosti 1FFh, a u konkretnom slučaju se zahteva kodiranje 500 različitih instrukcija što odgovara vrednosti 1F3h. Radi lakše implementacije hardvera za dekodiranje, rezervisaćemo 9 bitova za kodiranje 511 instrukcija, pri čemu vrednosti od 1F4h do 1FEh neće biti dekodirane. Vrednost 1FFh koristi se kao proširenje za dekodiranje insrtrukcija iz treće grupa. 50 instrukcija FFh 00h - 31h xxxxxh 2-61

92 Napomena: Sa 6 bitova je moguće kodirati 64 instrukcije, što odgovara vrednosti 3Fh, a u konkretnom slučaju se zahteva kodiranje 50 različitih instrukcija što odgovara vrednosti 31h. Ostale vrednosti neće biti dekodirane. Simbol "x" označava vrednost 0 ili 1, tj. vrednost nije od značaja. Zadatak 1 HLL strukturni jezici mogu se veoma efikasno koristiti za predstavljanje ugneždjenih upravljačkih struktura. Kod sledećeg primera IF iskaz je ugneždjen u okviru WHILE petlje: DO WHILE (op1<op2) <iskaz1> IF (op2=op3) THEN <iskaz2> <iskaz3> ELSE <iskaz4> END IF END DO gde su op1, op2, op3 i op4 neposredne vrednosti, registri ili memorijski operandi. Napisati ekvivalentan kôd na asemblerskom jeziku mikroprocesora 80x86. Odgovor While: Cmp op1,op2 ; do while (op1<op2) Jnl L3 ; jump to L3 <iskaz1> ; <iskaz1> Cmp op2,op3 ; if op2=op3 then Jne L1 ; jump to L1 <iskaz2> ; <iskaz2> <iskaz3> ; <iskaz3> Jmp L2 ; else jump to L2 L1: <iskaz4> ; <iskaz4> 2-62

93 L2: Jmp while ; end if L3: ; end do Mart 2001 Zadatak 5 Napisati program na asemblerskom jeziku mikroprocesora iz familije 80x86 program koji učitava niz slova sa tastature. Unošenje slova završiti u trenutku kada se pritisne dirka koja nije slovo. Tada odštampati unesenu poruku, ali u obrnutom redosledu i pri tome mala slova odštampati kao velika i obrnuto. Obezbediti da se može bar 200 slova uneti u nizu, a zatim i odštampati. Primer: unosi se: MiLoS1 štampa se nakon toga: solim Napomena: Za ispisivanje jednog karaktera, smeštenog u registru DL, koristiti poziv 02h interapta 21h. Za ispisivanje niza znakova, čija je početna adresa smeštena u registru DX, koristiti poziv 09h interapta 21h. Za čitanje dirke sa tastature sa efektom ehoa, koristiti poziv 1 interapta 21h (karakter će nakon toga biti smešten u registru AL). Za čitanje dirke sa tastature bez efekta ehoa, koristiti poziv 07h interapta 21h (karakter će nakon toga biti smešten u registru AL). Odgovor SMAG SEGMENT DB 400 DUP (?) SMAG ENDS CODE SEGMENT code ;početak programskog segmenta ASSUME CS:CODE, SS:SMAG 2-63

94 MAIN PROC FAR ;početak procedure MAIN MOV AX,CS ;inicijalizacija segmenta podataka MOV DS,AX MOV AX,0h PUSH AX MOV AH,1h PETLJA: INT 21H CMP AL,61H JB IZVAN CMP AL,7AH JA IZVAN1 AND AL, B JMP DALJE IZVAN: CMP AL,41H JB IZVAN1 CMP AL,5AH JA IZVAN1 OR AL, B DALJE: PUSH AX JMP PETLJA IZVAN1: POP DX CMP DX,0h JE KRAJ MOV AH,02H INT 21H JMP IZVAN1 KRAJ: MOV AX,4C00H INT 21H MAIN ENDP ;kraj procedure MAIN CODE ENDS ;kraj programskog segmenta END MAIN 2-64

95 Maj 2002 Zadatak 1 Na lokacijama NBROJ i MBROJ memorisane su vrednosti N i M koje se nalaze u opsegu od 1 do 8 i zadovoljavaju uslov M>N. Koristeći modularno programiranje odrediti vrednost izraza: M! - N! Program napisati na asemblerskom jeziku mikroprocesora 80x86. Odgovor 1: Modul za izračunavaje faktorijela TITLE FAKTORIJEL EXTRN BROJ : WORD PUBLIC FACT PR_SEG SEGMENT FACT PROC FAR ASSUME CS : PR_SEG MOV AX,BROJ MOV CX,AX DEC CX PON_MNO: MUL CX ; u DX:AX se smešta proizvod DEC CX JNZ PON_MNO RET FACT ENDP PR_SEG ENDS END Glavni modul za izračunavaje M!-N! TITLE GLAVNI PROGRAM EXTRN FACT : FAR PUBLIC BROJ SMAG SEGMENT 2-65

96 DB 100 DUP (?) SMAG ENDS SPOD SEGMENT BROJ DW 1 DUP (?) NBROJ DW 1 DUP (?) MBROJ DW 1 DUP (?) POM DW 2 DUP (?) REZULTAT DW 2 DUP (?) SPOD ENDS GL_PROG SEGMENT GLAVNI PROC FAR ASSUME CS:GL_PROG,DS:SPOD,SS:SMAG MOV AX,SPOD MOV DS,AX MOV AX,NBROJ MOV BROJ,AX CALL FACT MOV POM,AX MOV POM+2,DX MOV AX,MBROJ MOV BROJ,AX CALL FACT SUB AX,POM SUB DX,POM+2 MOV REZULTAT,AX MOV REZULTAT+2,DX MOV AH,4Ch INT 21h GLAVNI ENDP GL_PROG ENDS END GLAVNI 2-66

97 Dodatak Direktive asemblera Directives, or as they are sometimes called, pseudo-ops or pseudoinstructions, are used by the assembler to help it translate Assembly language programs into machine language. Unlike the microprocessor's instructions, directives do not generate any opcode; therefore, no memory locations are occupied by directives in the final ready-to-run (exe) version of the assemblly program. To summarize, directives give directions to the assembler program to tell it how to generate the machine code; instructions are assembled into machine code to give directions to the CPU at execution time. The following are descriptions of the some of the most widely used directives for the 80x86 assembler. They are given in alphabetical order for ease of reference. ASSUME The ASSUME directive is used by the assembler to associate a given segment's name with a segment register. This is needed for instructions that must compute an address by combining an offset with a segment register. One ASSUME directive can be used to associate all the segment registers. For example: ASSUME CS:name1,DS:name2,SS:name3,ES:name4. DB (Define Byte) The DB directive is used to allocate memory in byte-sized increments. Look at the following examples: DATA1 DB 23 DATA2 DB 45,97h, b DATA3 DB 'The planet Earth' DD (Define Doubleword) To allocate memory in 4-byte (32-bit) increments, the DD directive is used. Since word-sized operands are 16 bits wide (2 bytes) in 80x86 assemblers, a doubleword is 4 bytes. 2-67

98 VALUE1 DD 4563F57H RESULT DD? ; RESERVE 4-BYTE LOCATION DAT4 DD DQ (Define Quadword) To allocate memory in 8-byte increments, the DQ directive is used. In the 80x86 a word is defined as 2 bytes; therefore, a quadword is 8 bytes. DAT_64B DQ 5677DD4EE4FF45AH DAT8 DQ DUP (Duplicate) The DUP directive can be used to duplicate a set of data a certain number of times instead of having to write it over and over. DATA1 DB 20 DUP(99) ; DUPLICATE TIMES DATA2 DW 6 DUP(5555H) ; DUPLICATE 5555H 6 TIMES DATA3 DB 10 DUP(?) ; RESERVE 10 BYTES DATA4 DB 5 DUP(5 DUP(0)) ;25 BYTES INITIALIZED TO 0 DATA5 DB 10 DUP(00,FFH) ;20 BYTES ALTERNATE 00, FF DW (Define Word) To allocate memory in 2-byte (16-bit) increments, the DW dirctive is used. In the 80x86 family, a word is defined as 16 bits. DATAW_1 DW 5000 DATAW_2 DW 7F6Bh END Every program must have an entry point. To identify that entry point the assembler relies on the END directive. The label for the entry and end point must match. HERE: MOV AX,DATASEG ;ENTRY POINT OF THE PROGR... END HERE ; EXIT POINT OF THE PROGRAM ENDP (see the PROC directive) 2-68

99 ENDS (see the SEGMENT and STRUCT directives) EQU (Equate) To assign a fixed value to a name, one uses the EQU directive. The assembler will replace each occurrence of the name with the value assigned to it. FOX_VALU EQU 1200 PORT_A EQU 60H COUNT EQU 100 MASK_1 EQU B OFFSET To access the offset address assigned to a variable or a name, one uses the OFFSET directive. For example, the OFFSET directive was used in the following example to get the offset address assigned by the assembler to the variable DATA1: ORG 5600H DATA1 DW 2345H... MOV SI,OFFSET DATA1 ;SI=OFFSET OF DATA1 = 5600H Notice that this has the same result as LEA SI.DATA1 ORG (Origin) The ORG directive is used to assign an offset address for a variable or name. For example, to force variable DATA1 to be located starting from offset address 0020, one would write ORG 0020H DATA1 DW 41F2H This ensures the offset addresses of 0020 and 0021 with contents 0020H = (F2) and 0021H = (41). PAGE The PAGE directive is used to make the.ist file print in a specific format. The formaat of the PAGE directive is 2-69

100 PAGE [lines],[columns] PROC and ENDP (Procedure and End Procedure) Often, a group of Assembly language instructions will be combined into a procedure so that it can be called by another module. The PROC and ENDP directives are used to indicate the beginning and end of the procedure.for a given procedure the name assigned to PROC and ENDP must be exactly the same. name1 PROC [attribute]... name1 ENDP There are two choices fo the attrribute of the PROC: NEAR or FAR. If no attribute is given, the default is NEAR. When a NEAR procedure is called, only IP is saved since CS of the called procedure is the same as the calling program. If a FAR procedure is called, both IP and CS are saved since the code segment of the called procedure is different from the calling program. PTR (Pointer) The PTR directive is used to specify the size of the operand. Among the options for size are BYTE, WORD, DWORD, and QWORD. This directive is used in many different ways, the most common of which are explained below. 1.PTR can be used to allow an override of a previously defined data directive. DATA1 DB 23H,7FH,99H,0B2H DATA2 DW 67F1H DATA3 DD H... MOV AX,WORD PTR DATA1 ; AX=7F23 MOV BX,WORD PTR DATA1+2 ;BX, B299H Although DATA1 was initially defined as DB, it can be accessed using the WORD PTR directive. MOV AL,BYTE PTR DATA2 ;AL=F1H 2-70

101 In the above code, notice that DATA2 was defined as WORD but it was accessed as BYTE with the help of BYTE PTR. If this had been coded as MOV AL,DATA2, it would generate an error since the sizes of the operands do not match. MOV AX,WORD PTR DATA3 ; AX=9999H MOV DX,WORD PTR DATA3+2 ; DX,2222H DATA3 was defined as a 4-byte operand but registers are only 2 bytes wide. The WORD PTR directive solved that poroblem. 2. The PTR directive can be used to specify the size of a directive in order to help the assembler translate the instruction. INC [DI] ; will cause an error This instruction was meant to increment the contents of the memory location(s) pointed at by [DI]. How does the assembler know whether it is a byte operand, word operand, or doubleword operand? Since it does not know, it will generate an error. To correct that, use the PTR directive to specify the size of the operand as shown next. INC BYTE PTR [SI] ; increment a byte pointed by SI or INC WORD PTR [SI] ; increment a word pointed by SI or INC DWORD PTR [SI] ; increment a doubleword pointed by SI 3. The PTR directive can be used to specify the distance of a jump. The options for the distance are FAR and NEAR. JMP FAR PTR INTI ; ensures that it will be a 5-byte instruction INTI MOV AX,1200 See the LABEL directive to find out how it can be used to achieve the same result. SEGMENT and ENDS In full segment definition these two directives are used to indicate the beginning and the end of the segment. They must have the same name for a given segment definition. See the following example: DATSEG SEGMENT DATA1 DB 2FH 2-71

102 DATA2 DW 1200 DATA3 DD H DATSEG ENDS There are several option associated with the SEGMENT directive, as follows: name1 SEGMENT [align][combine][class] name 1 ENDS RULES FOR LABELS AND RESERVED NAMES Labels in 80x86 Assembly language for MASM 5.1 and higher must follow these rules: 1. Names can be composed of: alphabetic characters: A - Z and a - z digits: 0-9 special _ $ 2. Names must begin with an alphabetic or special character. Names cannot begin with a digit. 3. Names can be up to 31 characters long. 4. The special character. can only be used as the first character. 5. Uppercase and lowercase are treated the same. NAME1 is treated the same as Name1 and name1. Assembly language programs have five types of labels of names: 1. Code labels, which give symbolic names to instructions so that other instructins (such as jumps) may refer to them 2. Procedure labels, which assign a name to a procedure 3. Segment labels, which assign a name to a segment 4. Data labels, which give names to data items 5. Labels created with the LABEL directive 2-72

103 Code labels These labels will be followed by a colon and have the type NEAR. This enables other instructions within the code segment to refer to the instruction. The labels can be on the same line as the instruction: ADD_LP: ADD AL,[BX] ;label is on same line as the instruction LOOP ADD_LP or on a line by themselves: ADD_LP: ; label is on a line by itself ADD AL,[BX] ; ADD_LP refers to this instruction LOOP ADD_LP Procedure labels These labels assign a symbolic name to a procedure.the label can be NEAR or FAR. When using full segment definition, the default type is NEAR. When using simplified segment definition, the type will be NEAR for compact or small models but will be FAR for medium, large,and huge models. For more information on procedures, see PROC in Section A.1. Segment labels These labels give symbolic names to segments. The name must be the same in the SEGMENT and ENDS directives.see SEGMENT in Section A.1 for more information. Example: DAT_SG SEGMENT SUM DW? DAT_SG ENDS Data labels These labels give symbolic names to data items. This allows them to be accessed by instructions.directives DB, DW, DD, DQ, and DT are used to allocate data. Examples: 2-73

104 DATA1 DB 43H DATA2 DB F2H SUM DW? Labels defined with the LABEL directive The LABEL directive can be used to redefine a label. See LABEL in Section A.1 for more information. Reserved Names The following is a list of reserved words in 80x86 Assembly language programming. These words cannot be used as user-defined labels or variable names. Register Names: AH AL AX BH BL BP BX CH CL CS CX DH DI DL DS DX ES SI SP SS Instructions: AAA AAD AAM AAS ADC ADD AND CALL CBW CLC CLD CLI CMC CMP CMPS CWD DAA DAS DEC DIV ESC HLT IDIV IMUL IN INC INT INTO IRET JA JAE JB JBE JCXZ JE JG JGE JL JLE JMP JNA JNAE JNB JNBE JNE JNG JNGE JNL JNLE JNO JNP JNS JNZ JO JP JPE JPO JS JZ LAHF LDS LEA LES LOCK LODS LOOP LOOPE LOOPNE LOOPNZ LOOPZ MOV MOVS MUL NEG NIL NOP NOT OR OUT POP POPF PUSH PUSHF RCL RCR REP REPE REPNE REPNZ REPZ RET ROL ROR SAHF SAL SAR SBB SCAS SHL SHR STC STD STI STOS SUB TEST WAIT XCHG XLAT XOR Assembler operators and directives $ * + -. / =? [ ] 2-74

105 ALIGN ASSUME BYTE COMM COMMENT DB DD DF DOSSEG DQ DS DT DW DWORD DUP ELSE END ENDIF ENDM ENDS EQ EQU EVEN EXITM EXTRN FAR FWORD GE GROUP GT HIGH IF IFB IFDEF IFDIF IFE IFIDN IFNB IFNDEF IF1 IF2 INCLUDE INCLUDELIB IRP IRPC LABEL LE LENGTH LINE LOCAL LOW LT MACRO MASK MOD NAME NE NEAR NOTHING OFFSET ORG PAGE PROC PTR PUBLIC PURGE QWORD RECORD REPT REPTRD SEG SEGMENT SHORT SIZE STACK STRUC SUBTTL TBYTE THIS TITLE TYPE WIDTH WORD P P ALPHA.CODE.CONST.CREF.DATA.DATA?.ERR.ERR1.ERR2.ERRB.ERRDEF.ERRDIF.ERRE.ERRIDN.ERRNB.ERRNDEF.ERRNZ.FARDATA.FARDATA?.LALL.LFCOND.LIST.MODEL %OUT.RADIX.SALL.SEQ.SFCOND.STACK.TECOND.TYPE.XALL.XCREF.XLIST 2-75

106 2-76 Shift and rotate

107 3. Procesori - sinteza staze podataka i upravlja~ka jedinica

108 Zadatak 3.1 Neka su, za strukture staze podataka prikazane na Slici 3.1 i Slici 3.2, propagaciona ka{njenja signala du` magistrale mag_a i mag_b, Tmag_A i Tmag_B iznose 10ns, a propagaciono ka{njenje kroz ALU, T ALU, iznosi 50ns. Vreme postavljanja signala (setup time - T S ) za registre iznosi 8ns, vreme dr`anja (hold time- T H ) je 5ns, a vreme dozvole rada izlaznih stepeni, T OE odgovaraju}ih blokova povezanih na magistrali je 5ns. Odrediti potrebno vreme da bi se obavile slede}e operacije za strukture CPU-a sa Slike 3.1 i 3.2? (a) prenos podatka iz jednog registra u drugi za slede}e slu~ajeve: (a1) u toku istog taktnog intervala istovremeno izvo enje operacija Read i Write nad sadr`ajem istog registra nije mogu}e, tj. dozvoljena je samo operacija tipa (Rm) (Rz) za z m. (a2) mogu}a je operacija tipa (Rm) (Rz) za sve vrednosti z i m. (b) inkrementiranje sadr`aja programskog broja~a, tj. (PC) (PC)+1, za slu~ajeve kada: (b1) u istom taktnom intervalu nije dozvoljena operacija Read i Write nad sadr`ajem PC-a. (b2) u istom taktnom intervalu je dozvoljena operacija Read i Write nad sadr`ajem PC-a. Pored logi~kih operacija F=A and B, F=A or B, F=A xor B, F= not A, F= not B, F not (A and B), F= not (A or B), ALU je u stanju da obavlja i slede}e aritmeti~ke operacije: F=A, F=B, F=A+1, F=B+1, F=A-1, F=B-1, F=A+Cin, F=B+Cin, gde su A i B ulazi ALU-a a F izlaz ALU-a.

109 interna magistrala B IR + dekoder instrukcija interni plus eksterni upravlja~ki signali interna magistrala A MDR magistrala podataka MAR adresna magistrala PC SP R0... Rn Y mag_b upravlja- ~ki signali Add Sub A ALU F B Cin set reset mag_a Slika 3.1 Interna organizacija CPU-a oko dve magistrale Odgovor I slu~aj: Va`i za strukturu ma{ine prikazanu na Slici 3.1. (a1) S obzirom da u istom taktnom intervalu nije dozvoljena operacija Read i Write sadr`aja istog registra, operaciju preme{tanja sadr`aja registra Rm u registar Rz razbi}emo u slede}e dve. a.1.1: (Rm) (Y) a.1.2: (Y) (Rz)

110 Vreme potrebno da se obavi aktivnost, specificirana kao a.1.1, iznosi: T a.1.1 =T OE +T mag_a +T s +T H = =28ns Vreme potrebno da se obavi aktivnost a.1.2 iznosi: T a.1.2 =T ALU +T mag_b +T s +T H = =73ns Izlaz registra Y direktno je povezan na ulaz A ALU-a pa zbog toga nije uzeto u obzir ka{njenje T OE izlaznih stepeni registra Y. Sistem prikazan na Slici 3.1 je sinhroni. Svaka operacija definisana je trajanjem taktnog intervala. Trajanje taktnog intervala treba da je neznatno ve}e od vremena trajanja najdu`e operacije. U konkretnom slu~aju T a.1.2 >T a.1.1. Ako usvojimo da je trajanje taktnog intervala Tcp=75ns, tada ukupno za izvr{enje operacije (Rm) (Rz) su potrebna dva taktna intervala, tj.: T Ua1 =2*Tcp=150ns

111 dekoder instrukcija IR interni plus eksterni upravlja~ki signali interna magistrala PC Sistemska magistrala Adresne linije Linije za podatke MAR MDR R0... Rn-1 Y upravlja- ~ki signali Add Sub A ALU F B mag_a Z Slika 3.2 Interna organizacija CPU-a oko jedinstvene magistrale (a2) U slu~aju da je u istom taktnom intervalu dozvoljena operacija Read i Write nad sadr`ajem istog registra, tada operacija tipa (Rm) (Rz) za sve vrednosti m i z se obavlja za jedan taktni interval a vreme izvr{enja operacije iznosi: T a2 =T OE +T mag_a +T ALU +T mag_b +T s +T H = =88ns Usvoji}emo da je Tcp=90ns

112 U slu~aju a.1.2 ALU obavlja operaciju F=A, a u slu~aju a2 operaciju F=B. (b1) Na sli~an na~in operacija (PC)+1 (PC) se razbija na dve operacije tipa b.1.1: b.1.2: (PC) (Y) (Y)+1 (PC) Vreme potrebno da se obavi b.1.1 iznosi: T b.1.1 =T OE +T mag_a +T s +T H = =28ns. Vreme potrebno da se obavi b.1.2 iznosi: T b.1.2 =T ALU +T mag_b +T s +T H = =73ns Ako usvojimo da je Tcp=75ns, tada pod istim uslovima kao i u slu~aju a1, ukupno vreme potrebno da se inkrementira sadr`aj PC-a iznosi: T ub1 =2*Tcp=150ns (b2) Kada je u istom taktnom intervalu dozvoljena operacija Read i Write nad sadr`ajem istog registra, ukupno vreme izvr{enja operacije (PC)+1 (PC) iznosi: T b2 =T OE +T mag_a +T ALU +T mag_b +T s +T H = =88ns. Usvoji}emo da je Tcp=90ns. II slu~aj koga }e mo analizirati se odnosi na strukturu ma{ine prikazanu na Slici 3.2. Prenos podataka tipa (Rm) (Rz) mora da se ostvari u dva taktna intervala (jedinstvena je magistrala za prenos podataka), a aktivnosti su tipa:

113 k 11 : (Rm) (Z) k 12 : (Z) (Rz) Odgovaraju}a vremena bi}e: T k11 =T OE +T mag_a +T ALU +T s +T H = =78ns T k12 =T OE +T mag_a +T s +T H = =28ns Iz istih razloga kao i u prethodnom slu~aju (taktna frekvencija je identi~na za oba slu~aja i usvajamo da iznosi Tcp=80ns), tako da ukupno vreme potrebno da se izvr{i operacija je: T uk1 =2*Tcp=160ns ALU u ovom slu~aju obavlja operaciju F=B Operacija tipa (PC) (PC)+1 ~ine slede}e dve aktivnosti k21: (PC)+1 (Z) k22: (Z) (PC) Odgovaraju}a vremena bi}e: T k21 =T OE +T mag_a +T ALU +T s +T H = =78ns ALU obavlja operaciju F=A+1 za: T k22 =T OE +T mag_a +T s +T H = =28ns. Ako usvojimo da je Tcp=80ns, tada ukupno za izvr{enje operacije (PC) (PC)+1 potrebno je vreme od T k2 =2*Tcp=160ns

114 Zadatak 3.2 Analizirajmo izvr{enje instrukcije Add R1,Broj,R1 za strukturu staze podataka prikazane na Slici 3.3a). Upravlja~ka sekvenca ove instrukcije definisana je na Slici 3.3 c). CPU se taktuje frekvencijom 10MHz. Koliko dugo CPU treba da ~eka (Wait for Ready) u koracima 2 i 5, ako usvojimo da se ~itanje memorije obavlja za 450ns? Koliki se procenat vremena CPU nalazi u pasivnom stanju (iddle state) u toku izvr{enja ove instrukcije? ALU je u stanju da obavlja slede}e operacije : F=A, F=B, F=A+B, F=B+Cin, F=A+Cin, F=A-B, F=A-Cin, F=B-Cin. Napomena: U toku istog taktnog intervala (vreme izvr{enja jedne mikrooperacije) istovremeno izvr{enje operacija Read i Write nad sadr`ajem istog registra nije dozvoljeno. Usvojimo da se signal Read u normalnom re`imu rada aktivira na sredini taktnog intervala 1 (4) a deaktivira na sredini taktnog intervala 2 (5). Neka trajanje svake mikrooperacije iznosi 1 taktni interval. Princip upravljanja operacijama Upis i ^itanje sadr`aja registara sad`an je na Slici 3.3 b). Odgovor Pri taktnoj frekvenciji od 10MHz trajanje taktnog intervala iznosi t c =100ns. U normalnom re`imu rada impuls Read traje 100ns. Imaju}i u vidu da je vreme pristupa memoriji 450ns, da bi pro~itali validni podatak iz memorije potrebno je ubaciti 4 stanja ~ekanja (4t w ). Tako da je ukupno vreme pristupa memoriji, t ACU, sada jednako: t ACU =t c +4t w =5t w =500ns, gde je t w =t c =100ns. Odavde se mo`e videti da je t ACU za 50ns du`e od potrebnog vremena pristupa memoriji.

115 dekoder instrukcija + upravlja~ka logika interni upravlja~ki signali ka memoriji magistrala podataka adresna magistrala IR MDR MAR PC interna magistrala SP R0 Rn-2 Y upravlja~k i signali ALU-a Add Sub A ALU F B Cin set Ci Z reset a) Organizacija staze podataka CPU-a oko jedinstvene interne magistrale

116 R(i-1)in R(i-1) R(i-1)out interna magistrala CPU-a Y Yout Yin A ALU B Cin F Zin Z Zout b) princip upravljanja upisom i ~itanjem sadr`aja registara korak akcija 1. PCout, MARin, Read, Clear Y, Set Cin, F=B+Cin, Zin 2. Zout, PCin, Wait for READY 3. MDRout, IRin 4. Adresno_polje_IRout, MARin, Read 5. R1out, Yin, Wait for READY 6. MDRout, F=A+B, Zin 7. Zout, R1in, End c) Upravlja~ka sekvenca za izvr{enje instrukcije Add sadr`aja memorijske lokacije BROJ sa sadr`ajem registra R1 i sme{taj rezultata u registar R1. Slika 3.3: Organizacija CPU-a, princip upravljanja i sekvenca izvr{enja operacije Add.

117 Test pitanje 3.4 Za strukturu procesora sa Slike 3.3 a), iz zadatka 3.2, odrediti upravlja~ku sekvencu koja va`i kod izvr{enja instrukcije bezuslovnog grananja. Adresa grananja se dobija sabiranjem ofseta X koji je specificiran u okviru adresnog polja instrukcije grananja sa teku}om vredno{}u PC-a. Odgovor korak akcija 1. PCout, MARin, Read, Clear Y, SetCin, F=B+Cin, Zin 2. Zout, PCin, Wait for Ready 3. MDRout, IRin 4. PCout, Yin 5. Adresno_polje_IRout, F=A+B, Zin 6. Zout, PCin, End Zadatak 3.3 Napisati sekvencu mikrooperacija potrebnih da struktura sa Slike 3.2 obavi slede}e operacije: 1) saberi sadr`aj memorijske lokacije BROJ sa sadr`ajem registra R1 i sadr`aj smesti u BROJ. 2) saberi sadr`aj memorijske lokacije BROJ sa sadr`ajem registra R1 i sadr`aj smesti u R1 3) saberi sadr`aj memorijske lokacije ~ija se adresa nalazi na memorijskoj lokaciji BROJ sa sadr`ajem registra R1 a rezultat smesti u R1. (a) Ponoviti aktivnosti pod (a) i (b) za strukturu prikazanu na Slici 3.4. Usvojiti da, u op{tem slu~aju, instrukciju ~ine n re~i i da se svaka re~ nalazi u posebnoj memorijskoj lokaciji. Prva re~ instrukcije

118 uvek specificira operaciju i adresni na~in rada, a naredne sadr`e adrese memorijskih lokacija izvori{nih i odredi{nih operanada. Napomena: U toku jednog taktnog intervala istovremeno izvr{enje operacija Read i Write nad sadr`ajem istog registra nije dozvoljena. Odgovor a) format instrukcija Add BROJ,BROJ,R1 je oblika: opkôd memorijska adresa prvog izvori{nog i odredi{nog operanda BROJ sekvenca mikrooperacija karakteristi~nih za izvr{enje operacije Add BROJ,BROJ,R1; (BROJ) (BROJ)+(R1) za sistem sa Slike 3.2, je oblika: korak akcija 1. PCout, MARin, Read, F=B+1, Zin 2. Zout, PCin, Wait za Ready 3. MDRout, IRin 4. PCout, MARin, Read, F=B, Zin 5. Zout, PCin, Wait za Ready 6. MDRout, Yin 7. R1out, F=A+B, Zin 8. Zout, MDRin 9. PCout, MARin, Write, F=B+1, Zin 10. Zout, PCin, Wait za Ready, End b) sekvenca mikrooperacija karakteristi~na za izvr{enje operacije Add R1,R1,BROJ; (R1) (R1)+(BROJ) za sistem sa Slike 3.2, je oblika:

119 korak akcija 1. PCout, MARin, Read, F=B+1, Zin 2. Zout, PCin, Wait za Ready 3. MDRout, IRin 4. PCout, MARin, Read, F=B+1, Zin 5. Zout, PCin, Wait za Ready 6. MDRout, Yin 7. R1out, F=A+B, Zin 8. Zout, R1in, End c) sekvenca mikrooperacija karakteristi~nih za izvr{enje operacije Add (R1) ((BROJ))+R1, za sistem sa Slike 3.2, je oblika: korak akcija 1. PCout, MARin, Read, F=B+1, Zin 2. Zout, PCin, Wait za Ready 3. MDRout, IRin 4. PCout, MARin, Read, F=B+1, Zin 5. Zout, PCin, Wait za Ready 6. MDRout, MARin, Read 7. R1out, Yin, Wait za Ready 8. MDRout, F=A+B, Zin 9. Zout, R1in, End d1) za strukturu sa Slike 3.4, sekvenca mikrooperacija karakteristi~nih za izvr{enje operacije Add BROJ,BROJ,R1, je oblika: korak akcije 1. PCout, MARin, Read,F=B+1, Zin 2. Zout, PCin, Wait za Ready 3. MDRout, IRin 4. PCout, MARin, Read, F=B+1, Zin 5. Zout, PCin, Wait za Ready, R1out, Yin 6. MDRout, F=A+B, Zin 7. Zout, MDRin, Write 8. Wait za Ready,End

120 d2) Za strukturu sa Slike 3.4, sekvenca mikrooperacija karakteristi~nih za izvr{enje operacije Add R1,BROJ,R1 je oblika: korak akcije 1. PCout, MARin, Read, F=B+1, Zin 2. Zout, PCin, Wait za Ready 3. MDRout, IRin 4. PCout, MARin, Read, F=B+1, Zin 5. Zout, PCin, Wait za Ready, R1out, Yin 6. MDRout, F=A+B, Zin 7. Zout, R1in, End interna magistrala B IR + dekoder instrukcija interni plus eksterni upravlja~ki signali interna magistrala A MDR magistrala podataka MAR adresna magistrala PC SP R0... Rn Y mag_b upravlja- ~ki signali Add Sub A ALU F B Cin set reset mag_a Z Slika 3.4: Interna oranizacija CPU-a oko dve magistrale

121 Zadatak 3.4 Na Slici 3.5 prikazan je deo interne organizacije CPU-a. Prenos podataka izme u obe magistrale mag_1 i mag_2 ostvaruje se preko ALU-a. ALU je u stanju da obavlja i slede}e operacije F=A, F=B, F=A+1, F=B+1, F=A-1, F=B-1, gde su A i B ulazi ALU-a, a F izlaz ALU-a. Napisati sekvencu mikrooperacija koja je karakteristi~na za fazu pribavljanja i izvr{enja instrukcije JSR (Jump to Suboutine). Prva re~ je opkôd, a druga predstavlja po~etnu adresu potprograma. Povratna adresa se sme{ta u magacin. Na vrh magacina pokazuje registar SP. Odgovor Sekvenca mikroperacija ima slede}i oblik: korak akcije 1. PCout, MARin, Read, F=B+1, Zin 2. Zout, PCin, Wait for Ready 3. MDRout, IRin 4. PCout, MARin, Read, F=B+1, Zin 5. Zout, PCin, Wait for Ready 6. MDRout, Yin 7. SPout, F=B-1, Zin 8. Zout, SPin 9. PCout, F=B, Zin 10. Zout, MDRin, SPout, MARin, Write 11. F=A, Zin, Wait for Ready 12. Zout, PCin, End

122 IR + dekoder instrukcija interni plus eksterni upravlja~ki signali MDR MAR PC magistrala podataka adresna magistrala ka memoriji i U/I podsistemu SP R0... Rn-2 Y mag_2 upravlja- ~ki signali Add Sub A ALU F B Cin set reset mag_1 Z Slika 3.5 : Interna organizacija CPU-a Napomena: U toku istog taktnog intervala (mikrooperacija) istovremeno izvr{enje operacija Read i Write nad sadr`ajem istog registra nisu dozvoljene. Zadatak 3.5 Interna organizacija CPU-a prikazana je na Slici 3.6. Ulazi ALUa, registri i magistrale mag_a i mag_b su obima 32-bita. Spoljna magistrala za podatke je po obimu 16-bitna. Na~in prenosa podataka izme u MDR-a i spoljne memorije je slede}i: podatak tipa bajt uvek se prenosi preko LS dela MDRL-a, a MS deo MDRL-a u zavisnosti od tipa operacije popunjava se nulama ili se znakovno pro{iruje na 16/32 bita. Podatak tipa re~ (16 bitova)

123 uvek se prenosi preko MDRL-a, a podatak tipa duga re~ (32 bita) prenosi se preko MDR-a tako da se prvo prenose LS 16 bitova preko MDRL-a a nakon toga MS 16 bitova preko MDRH-a. Opkôd instrukcije je 16-bitni. Ofset adresa i direktna adresa izvori{nih i odredi{nih operanada specificiraju se u okviru druge ili tre}e re~i instrukcije. Ulaz B ALU-a povezan je preko multipleksera MUX na mag_a ili konstantu 2. Neka postoje dve grupe od po osam registara, poznatih kao D0-D7 registri za podatke i R0-R7 adresni registri. Odrediti upravlja~ku sekvencu slede}ih instrukcija: a) Sub.W 200(R3),D4 b) Cmp.W (R2)+,D1 Odgovor Operacija je tipa D4-M(R3+200) D4, a odgovoraju}a sekvenca je oblika: kor akcije komentar ak 1. PCout, MUX 0, F=B, MARin, Yin, Read ; pribavi se opkôd ins. 2. Yout, MUX 1, F=A+B, PCin, Wait for Ready ; 3. MDRLout, IRin ; 4. PCout, MUX 0, F=B, MARin, Yin, Read ; druga re~ instrukcije 5. Yout, MUX 1, F=A+B, PCin, Wait for Ready ; ofset= MDRLout, MUX 0, F=B, Yin ; privrem. sme{t. u Y 7. R3out, MUX 0, Yout, F=A+B, MARin, Read ; formira se M(R3+200) 8. D4out, MUX 0, F=B, Yin, Wait for Ready ; D4 Y 9. MDRLout, MUX 0, F=A-B, MARin, D4in ; D4-M(R3+200) D4

124 Operacija je tipa D1-(R2), R2+2 R2, a sekvenca: kor ak akcije komentar 1. PCout, MUX 0, F=B, MARin, Yin, Read ; pribavljanje opkôda instrukcija 2. Yout, MUX 1, F=A+B, PCin, Wait for Ready ; 3. MDRLout, IRin ; 4. R2out, MUX 0, F=B, Yin, MARin, Read ; prihvata se podatak sa lokacije 5. Yout, MUX 1, F=A+B, R2in, Wait for Ready ; M(R2), inkrementira R2 6. D1out, MUX0, F=B, Yin ; i D1 Y 7. Yout, MDRLout, F=A-B, Set markeri uslova ; D1-M(R2) Interna magistrala B dekoder instrukcija upravlja~ki signali Interna magistrala A 32 IR 32 adresne linije linije za podatke MAR MDRH MDRL PC R0 R7 D0 D7 A Y ALU B M 0 U X 1 2 mag_a F mag_a Slika 3.6 : Interna organizacija 32-bitnog CPU-a organizovanog oko dve magistrale

125 Test pitanje 3.9 Na Slici 3.12 prikazan je blok dijagram staze podataka jednog 32- bitnog procesora. RF polje ~ine 32 registra op{te namene R0 do R31. U registru R0 uvek se ~uva 0, u registru R1 vrednost 1, a u registru R2 vrednost 4. Procesor izvr{ava slede}ih pet razli~itih tipova instrukcija: aritmeti~ko-logi~ke tipa registar-registar, aritmeti~ko-logi~ke tipa registar-konstranta, obra}anje memoriji tipa Load/Store, uslovno grananje, i bezuslovno grananje. Ukazati na format koji koristi svaka od nabrojanih instrukcija i na osnovne aktivnosti (mikrooperacije) koje se obavljaju u toku faze pribavljanja/dekodiranja kao i izvr{enja nabrojanih instrukcija. Odgovor Dijagram stanja ciklusa pribavljanje/dekodiranje prikazan je na Slici 3.13.

126 D_mag S1_mag S2_mag Upravlja~ka jedinica upravlja~ki signali IR adrese PC podaci MAR MDR 32 registra RF polje A ALU F B S C O Z marker registar Slika 3.12 Staza podataka jednog jednostavnog procesora. U toku ciklusa pribavljanja instrukcije koji je identi~an za sve instrukcije, obavljaju se slede}e aktivnosti: MAR PC IR MDR PC PC + 4

127 Nakon faze dekodiranja, koja je identi~na za sve instrukcije, sledi faza izvr{enja koja se razlikuje od instrukcije do instrukcije. A. Kod aritmeti~ko/logi~kih instrukcija tipa registar-registar, obavlja se slede}a aktivnost Rd Rs1 <operacija> Rs2 gde su Rs1 i Rs2 sadr`aji izvori{nih registara, a Rd sadr`aj odredi{nog registra. Sa aspekta magistrala, ova aktivnost se mo`e ras~laniti na slede}e korake: S1_mag Rs1; S2_mag Rs2 D_mag S1_mag <operacija> S2_mag Rd D_mag Format instrukcije imao bi oblik: 2 5 =32 registra opkôd Rd Rs 1 Rs 2 neiskori{}eno B. Kod aritmeti~ko logi~kih instrukcija tipa registar-konstanta imali bi slede}e aktivnosti S1_mag Rs 1 ; S2_mag IR 15-0 D_mag S1_mag <ALUop> S2_mag Rd D_mag 11+5=16 bitova za konstantu

128 MAR PC IR MDR pribavljanje instrukcije PC PC+4 dekodiranje dekodiranje registar-registar registarkonstanta obra}anje memoriji branch store izvr{enje Slika 3.13 Dijagram stanja ciklusa pribavljanje/dekodiranje S1_mag Rs1 S2 mag Rs2 D_mag S1_mag < ALUop > S2_mag Rd D_mag Slika 3.14 Dijagram stanja ciklusa izvr{enja aritmeti~ko/logi~ke instrukcije registar-registar Format instrukcije bi imao oblik: opkôd Rd Rs 1 konstanta

129 C. Instrukcija Load/Store ima slede}e karakteristike: Kod obe instrukcije Load/Store adresa memorijske lokacije se specificira sadr`ajem izvornog adresnog registra Rs 1 plus neposrednim 16-bitnim ofsetom koji je sastavni deo instrukcije. odredi{ni adresni opkôd Rd Rs 1 16-bitni ofset izvori{ni adresni opkôd Rd Rs 1 16-bitni ofset a) Load format b) Store format Aktivnosti koje se obavljaju u toku Load instrukcije su slede}e (klju~ne sa aspekta razumevanja): S1_mag Rs1; S2_mag IR 15-0 D_mag S1_mag + S2_mag na D_mag je adresa mem. lokac. MAR D_mag sa koje treba pročitati podatak D_mag MDR ; MDR->S1_mag, D_mag <- S1_mag <ALU * op> Rd D_mag Napomena: <ALU * op> je operacija tipa F = A Za instrukciju Store klju~ne su slede}e aktivnosti S1_mag Rs1; S2_mag IR 15-0 D_mag S1_mag + S2_mag MAR D_mag S1_mag Rd MDR S1_mag na D_mag je adresa mem. lokac. u koju se smešta sadržaj registra Rd D. Tipi~ne instrukcije tipa Branch su slede}: BEQ R4,R5,L1 ; Branch to L1 if R4 = R5 BL R4,R5,L1 ; Branch to L1 if R4 < R5 BNE R4,R5,L1 ; Branch to L1 if R4! = R5 BGE R4,R5,L1 ; Branch to L1 if R4 >= R5

130 Pogodan format instrukcija je: odredi{ni izvori{te 1 izvori{te 2 opkôd Rd Rs 1 16-bitni ofset gde, za konkretni slu~aj, R4 je Rd, R5 je Rs1, a L1 = PC bitni ofset. Kod svake od nabrojanih instrukcija Branch, ispituje se specificirani uslov. Ako je uslov istinit, izra~unava se ciljna adresa i puni u PC. Uslov grananja koji se formira na osnovu odnosa izmedju Rd i Rs1, proverava se ispitivanjem rezultata oduzimanja Rd od Rs1, na slede}i na~in: S1_mag Rs1 ; S2_mag Rd uslov S1_mag - S2_mag ; uslov se pamti postavljanjem marker-bitova S, C, O, Z Ciljna adresa se izra~unava dodavanjem 16-bitnog ofseta sadr`aju programskog broja~a. ALU op PC + IR 15-0 U su{tini, kona~ni korak predstavlja punjenje PC-a ako je uslov ispunjen, na slede}i na~in: if uslov = True then PC ALUop a kada uslov nije ispunjen, PC pokazuje na narednu instrukciju u programu. E. Instrukcija Jump uzrokuje bezuslovnu promenu sekvence izvr{enja na novu lokaciju. Tipi~an primer je instrukcija J L1 ; Jump na L1 Format Jump instrukcije ima oblik: 6 26 opkôd 26 bitni ofset

131 I u ovom slu~aju koristi se PC relativno adresiranje, tj. PC PC + IR 25-0 Pored PC-relativnog adresiranja, za realizaciju Branch i Jump instrukcija mogu}e je koristiti i registarsko indirektno adresiranje. Format instrukcije Jump koja koristi registarskoindirektno adresiranje ima oblik opkôd ne koristi se Rs 1 16-bitni ofset operacija adresni registar Tipi~ni primeri su: J [R3] ; skok na lokaciju ~ija je adresa u R3 J 100[R3] ; skok na lokaciju ~ija je adresa u R3 plus 100 Kod instrukcije J 100[R3] obavi}e se slede}e aktivnosti: S1_mag Rs1; S2_mag IR 15-0 D_mag S1_mag + S2_mag PC D_mag Test pitanje 3.11 Ukazati na osnovne karakteristike MIN procesora. Odgovor Dizajn procesora koji sadr`i minimalan skup logi~kih kola potrebnih za implementaciju CPU-a naziva se MIN procesor. MIN ima dva registra koja su vidljiva programeru (Slika 3.17): (1) 8-bitni registar podataka nazvan akumulator, ACC; i (2) 14- bitni programski broja~, PC.

132 ACC ACC 7 ACC 0 PC PC 13 PC 0 Slika 3.17: Registri MIN-a vidljivi programeru Drugi registri koji se koriste za opis MIN-a su: MAR-memorijsko adresni registar obima 14-bita, MDR-memorijski registar podataka obima 8-bitova, IR-instrukcioni registar obima 16-bitova. Na Slici 3.18 su prikazani ovi registri kao i putevi podataka koji povezuju ove registre sa ostalim gradivnim blokovima procesora i memorije. Memorija sistema sadr`i 2 14 bajtova. Osnovne memorijske operacije su: READ - sistem pristupa lokaciji specificiranoj sadr`ajem registra MAR i kopira bajt sa te lokacije u registar MDR. WRITE - kopira se bajt koji se nalazi u registru MDR u memorijsku lokaciju specificiranu sadr`ajem registra MAR.

133 MAR PC adresa pristupa 7 0 memorija 0000h bazna adresa IR MDR 0 3FFFh max. adresa - + ALU ACC Slika 3.18 Implementacija MIN-a Svaku instrukciju MIN-a ~ine dva bajta. Format instrukcije prikazan je na Slici Instrukciju ~ine slede}a dva polja: (a) F - dvobitno funkcijsko polje; i (b) A - 14-bitno adresno polje. Zna~enje funkcijskih kôdova prikazano je na Slici Da bi izvr{io instrukciju, procesor mora da obavi slede}e korake: G1. pribavi instrukciju G2. inkrementira PC G3. dekodira instrukciju G4. izvr{i instrukciju F A Slika 3.19 Format instrukcija MIN-a

134 operacija Funkcijski kôd Sto 0 Sub 1 JNG 2 Slika 3.20 Funkcijski kodovi MIN-a Ilustracije radi, aktivnosti koje se odnose na izvr{enje instrukcije Sto su slede}i: D1. kopira se PC u MAR D2. READ memorija D3. kopira MDR u levu polovinu IR-a D4. inkrementira PC D5. kopira PC u MAR D6. READ memorija D7. kopira MDR u desnu polovinu IR-a D8. inkrementira PC D9. if bit IR 15 0 or IR 14 0, go na drugo mesto D10. kopiraj IR 13...IR 0 u MAR D11. kopiraj ACC u MDR D12. WRITE memorija D13. go to korak D1 korak G1 korak G2 korak G3 korak G4 Ako napi{emo istu semantiku u registar-transfer formi dobi}emo ma{inski oblik instrukcije koji je prihvatljiviji za programera. Neka IRH i IRL ozna~avaju vi{i i ni`i deo registra IR, a F i A su polja instrukcije koja se ~uvaju u IR. Simbol ":=" predstavlja operator dodele. Mikrooperacije pomo}u kojih se implementira instrukcija Sto su slede}e:

135 D1. MAR:=PC; D2. READ; D3. IRH:=MDR; D4. PC:=PC+1 D5. MAR:=PC; D6. READ; D7. IRL:=MDR; D8. PC:=PC+1; D9. if F 0 then go to na drugo mesto; D10. MAR:=A; D11. MDR:=ACC; D12. WRITE; D13. go to korak D1; Treba ukazati da su koraci G1 i G2, tj. mikrooperacije D1...D8, identi~ni za sve MIN instrukcije. MIN procesor ima, u svom repertoaru, samo jednu upravlja~ku instrukciju JNG - jump on negative. U toku izvr{enja instrukcije JNG procesor testira sadr`aj ACC-a i, u zavisnosti od ishoda testa, mo`e da preuzme slede}e aktivnosti:(a) kada uslov nije ispunjen inkrementira PC kako bi ukazao na narednu instrukciju u programu (JNG pona{a se kao ne-upravlja~ka instrukcija); (b) kada je uslov ispunjen, puni PC na adresu koja je specificirana instrukcijom JNG. Test se zasniva na vrednosti bita ACC 7, tj. ako je ACC 7 =1 dolazi do grananja, a za slu~aj da je ACC 7 =0, procesor produ`ava sa izvr{enjem naredne instrukcije u programu. Nakon izvr{enja instrukcije Sub, u registar ACC upisa}e se razlika koju ~ine prethodni sadr`aj registra ACC i sadr`aj memorijske lokacije specificiran instrukcijom Sub, tj. ACC ACC'-M(A) gde: M(X) ozna~ava sadr`aj memorijske lokacije ~ija je adresa X; A se odnosi na adresu specificiranu instrukcijom Sub; ACC'- odgovara sadr`aju registra ACC pre po~etka izvr{ejna instrukcije.

136 Programska sekvenca kojom se u ACC upisuje sadr`aj memorijske lokacije X ima oblik (memorijska lokacija u kojoj se privremeno ~uva podatak nazva}emo T). Sto T; ACC T Sub T; ACC ACC'-T ACC=0 Sub X; ACC 0-X ACC=-X Sto T; ACC T T=-X Sub T; ACC=ACC'-T ACC=-X-(-X)=0 Sub T; ACC ACC-T ACC=-(-X)=X Ova programska sekvenca ekvivalentna je operaciji Ld X, tj. Load X to ACC. Programska sekvenca kojom se vr{i sabiranje sadr`aja memorijske lokacije X sa sadr`ajem akumulatora ima oblik. (Ova sekvenca je ekvivalentna operaciji Add X, tj. Add X to ACC) Sto T; ACC T Sub T; ACC ACC'-T ACC=0 Sub T; ACC ACC'-T ACC=-T Sub X; ACC=ACC'-X ACC=-T-X Sto T; ACC T T=-T-X Sub T; ACC=ACC'-T ACC=-T-X-(-T-X)=0 Sub T; ACC T ACC=0-(-T-X)=T+X Naredni primer ilustruje kako se obavlja bezuslovno grananje na lokaciji Y, tj. Jmp Y JNG Y; if ACC 7 =1 go to Y, else continue Sto T; ACC T Sub T; ACC=ACC"-T ACC=0 Sub T; ACC=ACC'-T ACC=-T tj ACC 7 =1 JNG Y; go to Y

137 Test pitanje 3.12 Struktura jednostavnog akumulatorski-zasnovanog procesora prikazana je na Slici Pretpostavimo da se preko registra DR ka memoriji M u jednom taktnom intervalu prenose 32-bitne re~i. Podatak D koji se sme{ta u DR mo`e biti 16- ili 32-bitni. Ako je D 16-bitni tada se on u trenutku upisa u memoriji automatski pro{iruje na 32-bita. Obim podatka D odredjuje marker S, tako da S = 0 ozna~ava da je podatak 16-bitni, a S = 1 da je 32-bitni. Na~in pro{irenja (ekstenzije) definisan je drugim markerom, pri ~emu E = 0 ozna~ava pro{irenje nulama, a E = 1 pro{irenje znaka. Izvr{iti projektovanje logike na nivou registra (RTL = Register Transfer Level) koja }e biti u stanju da obavi neophodno pro{irenje znaka. Dekoder instrukcija Upravlja~ki signali IR MAR PC Upravlja~ka jedinica (UJ) ka/iz memorije ili U/I uredjaja Sistemska magistrala DR ACC ALU procesna jedinica (PJ) Slika 3.21 Jednostavna akumulatorski-zasnovana CPU jedinica

138 Napomena: MAR - memorijsko adresni registar IR - instrukcioni registar PC - programski broja~ ACC - akumulator DR - registar podataka ALU - akumulatorsko logi~ka jedinica Odgovor Na Slici 3.22 prikazana je logika za pro{irenje znaka koja koristi par multipleksera. Prvi multiplekser MUX1, koristi marker E kao selekt signal, a drugi multiplekser - MUX2, za selekciju koristi marker S DR registar DR15 E S MUX1 2-na-1 DR31:DR16 16 DR15:DR0 ta~ka prespajanja 1 na 16 S S MUX1 2-na Ka memoriji Slika 3.22 Logika za upis podatka u memoriji koja ima mogu}nost pro{irenja sa nulom ili pro{irenja sa znakom Napomena: MUX1 je 1-bitni multiplekser 2-na-1; MUX2 je 16- bitni multiplekser 2-na-1

139 Test pitanje 3.13 Registar DR sa Slike 3.21 (test pitanje 3.12) mo`e da prenese 32- bitnu re~ ka memoriji M u jednom taktnom intervalu. Podaci koji se prihvataju od strane DR-a radi upisa u M, mogu biti obima 4, 8, 16 ili 32-bita. No, nezavisno od toga kog su oni obima, u memoriji se podaci uvek upisuju kao 32-bitni koriste}i pri tome metod pro{irenja poznat kao ekstenzija znaka. Dvobitni marker S u CPU-u se postavlja na 00, 01, 10 ili 11 sa ciljem da uka`e kada je obim podatka 4-, 8-, 16- ili 32-bitni, respektivno. Izvr{iti projektovanje logike na RTL nivou koja implementira tehniku pro{irenja znaka. Odgovor Re{enje je prikazano na Slici DR DR - registar S S DR15 DR7 DR7 DR DR3 DR15:DR MUX na S MUX2 DR7:DR4 2 4 na DR3:DR S MUX3 2 na Ka memoriji Slika 3.23 Logika za upis podataka u memoriju koja koristi mogu}nost pro{irenja znaka

140 Zadatak 3.17 Za strukturu sa Slike 3.32, odrediti vrednost upravlja~kih signala S1, S0 kao i L2, L1, L0, da bi se ostvarili slede}i tipovi prenosa: (a) R0 R2; (b) R0 R1, R2 R1; (c) R0 R1, R1 R0. punjenje n Load L0 L1 L2 selekcija n R0 S1 S0 0 MUX 1 3 na 1 2 n n Load R1 n n Load R2 Slika 3.32 Ulazi registara povezanih na jedinstvenu magistralu Odgovor registarski prenos selekcija punjenje S1 S0 L2 L1 L0 R0 R R0 R1, R2 R R0 R1, R1 R0 nemogu}e nemogu}e Zadatak 3.18 Za strukturu sa Slike 3.33, odrediti vrednost upravlja~kih signala S0, S1, S2 i L0, L1, L2 da bi se ostvarili slede}i tipovi prenosa: (a) R0 R2; (b) R0 R1, R2 R1; (c) R0 R1, R1 R0.

141 Odgovor registarski prenos selekcija punjenje S2 S1 S0 L2 L1 L0 R0 R2 x x R0 R1, R2 R1 1 x R0 R1, R1 R0 * ne preporu~uje se kod transparentnih le~eva ** x Napomena: (a) * Ako su registri R0, R1 i R2 realizovani kao transparentni le~evi ova operacija se ne preporu~uje jer se formira petlja tipa R0 MUX1 R1 MUX0 ; (b) ** Slu~aj kada su R0, R1 i R2 realizovani kao le~evi koji se pune opadaju}om ivicom impulsa Lx: (c) Simbol "x" ukazuje da vrednost na tom ulazu nije od zna~aja. n S0 S 0 MUX0 1 2 na 1 n L0 L Ul R0 Iz n S1 S 0 MUX1 1 2 na 1 n L1 L Ul R1 Iz n S2 S 0 MUX2 1 2 na 1 n L2 L Ul R2 Iz Slika 3.33 Ulazi registara povezani na namenske multipleksere

142 Zadatak 3.19 Logi~ka struktura registra sa bidirekcionim ulazom prikazana je na Slici Za strukturu sa Slike 3.35 odrediti vrednost upravlja~kih signala E2, E1 E0 i L2, L1, L0 da bi se ostvarili slede}i tipovi prenosa: (a) R0 R2; (b) R0 R1, R2 R1; (c) R0 R1, R1 R0. punjenje Load l R En n n R n n En Slika 3.34 Simbol registra sa bidirekcionim ulazno-izlaznim linijama dozvola E2 E1 E0 L2 punjenje L1 L0 R0 n E0 L1 R1 n E1 L2 R2 n E2 Slika 3.35 Tro-stati~ka magistrala koja koristi registre sa bidirekcionim linijama

143 Odgovor registarski prenos dozvola E2 E1 E0 punjenje L2 L1 L0 R0 R R0 R1, R2 R R0 R1, R1 R0 nije dozvoljeno - dolazi do sudara na magistrali Test pitanje 3.19 Na Slici 3.36 prikazana je blok {ema jednog RF polja. Pokazati kako izgleda njegova interna struktura. 1 n 2 Write D_podaci D_adrese A_adrese 2 4*n 2 RF polje B_adrese A_podaci B_podaci n n Slika Blok {ema RF polja Odgovor

144 Write D_podaci A_adrese B_adrese 1 n n 2 2 load R0 n load load n n n R1 R2 n n n n n n 0 Sel 1 M 2 U Y 3 X n n 0 Sel 1 M 2 U Y 3 X dekoder load R3 n n A_podaci B_podaci 2 D_ adrese Slika 3.37 Logička struktura 4 * n RF polja Zadatak 3.23 Staze podataka se koriste kod svih standardnih procesora i ASIC implementacija sa ciljem da obave kompleksna numeri~ka izra~unavanja ili manipulacije nad podacima. Pored aritmeti~kih jedinica, logi~kih jedinica i jedinica za pomeranje podataka, staze-podataka sadr`e i memorijske elemente koji se koriste za privremeno ~uvanje podataka. Ukazati na slo`enost strukture staze-podataka koja se koristi da izvr{i sabiranje 100 brojeva shodno slede}oj relaciji: suma= 100 x i i= 1

145 Odgovor Izra~unavanje se mo`e implementirati iterativno, deklarisanjem promenljive suma kao privremene promenljive, inicijalno postavljena na nuli, a izvr{enjem slede}ih iskaza suma=0 petlja: for i=1 to 100 suma=suma + x i end petlja Telo petlje se mo`e izvr{iti na 32-bitnoj stazi podataka koju ~ini jedan registar nazvan Akumulator i ALU. Promenljiva suma bi}e memorisana u Akumulatoru. Pri svakom taktnom intervalu ALU }e vr{iti sabiranje nove x i i suma a rezultat }e se ponovo ~uvati u Akumulatoru. Na Slici 3.67 prikazana je jedna jednostavna staza podataka koja mo`e da obavi specificiranu sekvencu iskaza. Sastavni deo staze podataka predstavlja Selektor tipa 2-na-1. Selektor bira 0 ili ulaz spoljni-operand koji se direktno vodi na ulaz A ALU-a. Desni operand (ulaz B ALU-a) je uvek sadr`aj Akumulatora. Izlaz Akumulatora istovremeno pobudjuje jedan trostati~ki bafer (TSB). Akumulator se u principu realizuje kao pomera~ki registar sa paralelnim punjenjem. Na Slici 3.67 b) prikazan je sadr`aj 9-bitne upravlja~ke re~i koja specifira vrednosti upravlja~kih signala za Selektor, ALU, Akumulator i TSB. Sve komponente u stazi podataka manipuli{u sa podacima obima 32-bita. Pri svakom taktnom intervalu, specifi~na upravlja~ka re~ defini{e rad staze - podataka. Da bi odredili sumu od 100 brojeva potrebna su 102 takta intervala. Upravlja~ka re~ bi}e ista za sve taktne intervale sa izuzetkom prvog i zadnjeg. U prvom taktnom

146 intervalu neophodno je obrisati sadr`aj Akumulatora. U naredna 100 taktna intervala sabira se novi spoljni operand (tj. podatak) sa akumuliranom sumom. U zadnjem taktnom intervalu akumulirana suma se generi{e na izlazu. a) {ematski dijagram staze podataka selekcija ALU upravljanje iznos i smer upravljanje dozvola ulaza pomeranja akumulatorom izlaza b) upravlja~ka re~ Slika 3.67 Jednostavna staza podataka sa akumulatorom I pored toga {to se staza podataka sa Slike 3.67 mo`e efikasno koristiti za izvr{enje jednostavnih aritmeti~kih izraza,

147 implementacija komplikovanijih izraza obi~no zahteva kori{}enje po nekoliko privremeno promenljivih. Zbog ovoga pogodnije je kao stazu-podataka koristiti strukturu koja umesto Akumulatora koristi registarsko-polje (RF-registar file). Na Slici 3.68 prikazana je struktura jedne kompleksnije staze-podataka koju ~ini Selektor, tro-portno 8*32-bitno registarsko RF polje, ALU, Pomera~ i TSB-ovi. U konkretnoj realizaciji oba operanda se dobavljaju iz RF polja, a takodje se u RF polje sme{ta rezultat u toku svakog taknog intervala. Rad ALU-a i Pomera~a opisan je tablicama prikazanim na Slikama 3.68 b) i 3.68 c), respektivno. Sadr`aj upravlja~ke re~i definisan je tablicom na Slici 3.68 d). Uo~imo da je upravlja~ka re~ obima 20 bitova. ulazni_port ClK S A M S1 selektor S0 ALU "0" "0" 3 IL S2 2 S1 pomera~ 1 S WA WE RAA REA mag A a) Staza podataka 8*m RF polje RAB REB B IR rezultantna mag. izlazni_port mag B M F 1 F 0 ALU operacija komplement A AND A ExOR A OR A dekrement A Add Sub inkrement A b) Rad ALU-a S 2 S 1 S 0 rad Pomera~a prolaz prolaz ne koristi se ne koristi se pomeranje ulevo rotiranje ulevo pomeranje udesno rotiranje udesno c) Rad Pomera~a

148 S adresa upisa adresa ~itanja A adresa ~itanja B OE WA, WE RAA, REA RAB, REB Zadatak 3.33 ALU operacija M, F1-F0 operacija pomera~a S2-S0 d) Upravlja~ka re~ Slika 3.68 Staza podataka sa 3-portnim RF poljem Blok dijagram staze podataka koja sve operacije obavlja za jedan taktni interval, prikazana je na Slici 3.75 a) 17-bitna upravlja~ka re~ na Slici 3.75 b), a kodiranje upravlja~ke re~i na Slici 3.75 c). n 1 RW DA AA 3 3 Write D podaci D adrese 8 * n A adrese RF polje B adrese 3 BA A podaci B podaci Ulaz konstante n n n MB MUX B Bus A n Adresni izlazi Bus D n Izlaz podataka V C N Z A Funkcionalna jedinica B 5 FS n n Ulaz podataka MD MUX B Bus D n a) blok dijagram staze podataka

149 Napomena: Svi upravlja~ki signali su ozna~eni kao: XY DA AA BA MB FS MD RW b) upravlja~ka re~ DA, AA, BA MB FS MD RW funkcija kôd funkcija kôd funkcija kôd funkcija kôd funkcija kôd R0 000 Registar 0 F= Funkcija 0 nema Write 0 R1 001 Konstanta 1 F =A ulaz podat. 1 Write 1 R2 010 F=A+B R3 011 F=A+B R4 100 F=A+/B R5 101 F=A+/B R6 110 F=A R7 111 F=A F=A B F=A B F=A B F=/A F=srA F=slA c) na~in kodiranja upravlja~ke re~i Napomena: (a) sr i sl se odnose na operacije pomeranje udesno i ulevo operanda A za jednu bit poziciju, respektivno. (b) Simbol '/ ' ukazuje na komplement. Slika 3.75 Staza podataka, upravlja~ka re~ i kodiranje upravlja~ke re~i za stazu podataka Ilustracije radi, operacije oduzimanja sadr`aja dva registra R2 i R3 i sme{tanje rezultata u R1 definisana kao: R1 R2+ R3+1, kodira se na slede}i na~in:

150 Polje: DA AA BA MB FS MD RW Simbol: R1 R2 R3 Registar F=A+/B+1 Funkcija Write Binarna vrednost: Odrediti sadr`aj svih polja upravlja~ke re~i sa Slike 3.75 b), za slede}e tipove operacija: a) R1 R2-R3; b) R4 slr6; c) R7 R7+1; d) R1 R0+2; e) izlaz podatka R3; f) R4 ulaz podatka; g) R5 0 Odgovor Simboli~ki upravlja~ka re~ je kodirana na slede}i na~in: mikro operacija DA AA BA MB F3 MD RW R1 R2+/R3+1 R1 R2 R3 Registar F=A+/B+1Funkcija Write R4 sl R6 R4 R6 - Registar F=slA Funkcija Write R7 R7+1 R7 R7 - - F=A+1 Funkcija Write R1 R0+2 R1 R0 - Konstant F=A+B Funkcija Write izlaz podatka R3 - - R3 Registar - - nema Write R4 ulaz podatka R ulaz podatka Write R5 0 R5 R0 R0 Registar F=A B Funkcija Write Binarno upravlja~ka re~, za odgovaraju}u operaciju, kodirana je na slede}i na~in: mikrooperacija DA AA BA MB FS MD RW R1 R2-R R4 sl R R7 R R1 R izlaz podatka R R4 ulaz podatka R

151 Ispitni zadaci Jun Zadatak 2 Za strukturu staze podataka prikazanu na Slici 1, napisati upravlja~ku sekvencu koja je potrebna za implementaciju slede}e CPU-ove instrukcije Dcr $00A1(R1). Interna magistrala B dekoder instrukcija upravlja~ki signali Interna magistrala A 32 IR 32 adresne linije linije za podatke MAR MDRH MDRL PC R0 R7 D0 D7 mag_a A Y ALU F B M 0 U 1 X (-1) mag_a TEMP Slika 1: Interna organizacija 32-bitnog CPU-a oraganizovana oko dve magistrale

152 Napomena: Instrukcija je 32-bitna, pri ~emu opkôd zauzima prvih 16 bitova. TEMP je registar za privremeno ~uvanje podataka. Simbol $ ukazuje da je neposredni podatak heksadecimalni broj. Set Y i i Y (i=0,2,4); Yin Mag_B Y MUX i = signal sa ulaza i ide na izlaz multipleksera MUX (i=0,1,2,3). Odgovor 2: b) Implementacija instrukcije Dcr $00A1(R1) ekvivalentna je aktivnosti M(R1+0A1h)=M(R1+0A1h)-1. Format instrukcije je slede}i: PC PC+2 opkod neposredni operand 0A1h korak akcije komentar 1. PCout, MUX 0, Set Y 0, Yout, F=A+B, Yin, MARin, ; pribavljanje opkôda Read L instrukcije 2. Yout, MUX 2, F=A+B, Yin, PCin, Wait for Ready ; (PC)=(PC)+2 3. MDRLout, IRin, MUX 1, Yout, F=A+B, MARin, PCin, Read H 4. MUX 2, Yout, F=A+B, PCin, Wait for Ready ; (PC)=(PC)+2 5. MDRHout, MUX 0, Set Y 0, Yout, F=A+B, Yin ; neposredni operand sme{ta se u Y 6. R1out, MUX 0, Yout, F=A+B, MARin, Read 7. Wait for Ready 8. MDRLout, MUX 0, Set Y 0, Yout, F=A+B, Yin ; M(R1+0A1h) Y 9. Yout, MUX 3, F=A+B, MDRLin, Write ; dekrementiranje 10. Wait for Ready, End

153 Izabrani zadaci - Zadatak 2.23 Projektovati stazu podataka i upravljačku logiku jednostavne CPU organizovane oko jedinstvene magistrale koja može da pristupa memoriji obima 64 bajta. Svaki bajt je obima 8 bitova. CPU generiše 6-bitnu adresu na svojim izlaznim pinovima A[5:0] a čita 8-bitnu vrednost iz memorije na svojim ulazima D[7:0]. CPU ima samo jedan programersko dostupan registar, 8-bitni akumulator nazvan AC (vidi sliku 2.2). Skup instrukcija procesora dat je sledećom tabelom: Instrukcija kôd instrukcije operacija ADD 00AAAAAA AC AC+M[AAAAAA] AND 01AAAAAA AC AC M[AAAAAA] JMP 10AAAAAA goto AAAAAA INC 11xxxxxx AC AC+1 Pored registra AC, CPU ima nekoliko dodatnih registara koji obavljaju interne operacije koje su neophodne za pribavljanje, dekodiranje i izvršenje instrukcija. To su sledeći registri: AR 6-bitni adresni registar, predaje adrese memoriji preko adresnih linija A[5: 0] PC 6-bitni programski brojač, koji sadrži adresu naredne instrukcije koja se izvršava IR 2-bitni instrukcioni registar, čuva opkôd deo kôda instrukcije koji se dobavlja iz memorije. Odgovor Staza podataka jednostavnog CPU-a organizovana oko jedinstvene magistrale bila bi oblika

154 Read M 8 A[5:0] D[7:0] 6 6 [5:0] ARBus AR LD ARLOAD RCBus 6 [5:0] PC 6 6 LD INC PCLOAD PCINC 8 DRBus DR 8 8 LD DRLOAD 8 ACBus ALU AC 8 8 LD INC ALUSEL ACLOAD ACINC 2 [7:6] IRBus IR 2 2 LD IRLOAD clk MEMBus 8-bitna magistrala Slika 2.2 Staza podataka jednostavnog CPU-a

155 FETCH 1 IR=00 ADD1 ADD 2 FETCH 2 FETCH 3 IR=01 IR=10 AND 1 AND 2 JMP1 ciklus pribavljanja (FETCH) IR=11 INC1 ciklus dekodiranja (DI) ciklus izvr{enja (EX) Slika 2.3 Dijagram stanja jednostavnog CPU-a Ciklusi pribavljanje, dekodiranje i izvršenje naredbi jednostavnog CPU-a prikazani su na slici 2.3. Operacije koje prate svako stanje jednostavnog CPU-a su FETCH1: AR PC FETCH2: DR M, PC PC+1 FETCH3: IR DR[7..6], AR DR[5..0] ADD1: DR M ADD2: AC AC+DR AND1: DR M AND2: AC AC DR JMP1: PC AR[5:0] INC: AC AC+1 Sigurno interesantno rešenje CPU-a sa slike 2.2 predstavlja realizacija ALU-a. ALU kod ovog CPU-a obavlja samo dve funkcije: obavlja operacije ADD ili AND nad oba dva ulaza. Najjednostavniji način da se projektuje ovakav ALU je da se kreira poseban hardver koji će obavljati svaku od funkcija a

156 zatim koristiti MUX da selektuje na izlazu jedan od oba rezultata. Realizacija ALU-a prikazana je na slici 2.4. AC DR (sa magistrale) 8 8 paralelni sabira~ 1 0 M U X s upravlja~ki signal (iz upravlja~ke jedinice) Slika 2.4 Struktura ALU-a Projektovaćemo sada upravljačku jedinicu CPU-a koja će biti bazirana na direktnom upravljanju (hardwired control). Opšta struktura ove upravljačke jedinice prikazana je na slici 2.5. ka AC ulaz clk > broja~ LD INC CLR dekoder logika upravlja~ki signali ka registrima, ALU baferima i izlaznim pinovima Slika 2.5 Opšta struktura upravljačke logike zasnovane na direktrnom upravljanju Razmotrićemo prvo listu instrukcija, njihova prva stanja i vrednosti u registru IR za ove instrukcije (vidi sliku 2.6) Ulaz u brojač funkcija je urednosti IR-a. Osnovni cilj je učiniti ovu funkciju što je moguće jednostavniju. Za predlo`eni CPU sa slike 2.2 postoje ukupno 9 stanja (vidi sliku 2.3) što znači da je potreban 4-bitni brojač i 4-u-16 dekoder. Sedam izlaza dekodera se neće koristiti.

157 Jedno od mogućih preslikavanja biće 10IR[1...0]. To znači da ako je IR=00 ulaz brojača biće 1000, za IR=01 ulaz brojača biće 1001, itd. Ovo će rezultirati dodeli kao na slici 2.7. Instrukcija prvo IR stanje ADD ADD1 00 AND ADD1 01 JMP JMP1 10 INC INC1 11 Slika 2.6 Instrukcije, prva stanja i opkôdovi CPU-a IR[1..0] vrednost brojača stanje (8) ADD (9) AND (10) JMP (11) INC1 Slika 2.7 Vrednosti brojača za predloženu funkciju preslikavanja Uočimo da se za usvojenu funkciju preslikavanja javlja jedan problem. Naime, pošto je stanju ADD1 dodeljena vrednost brojača 8, a stanju AND1 vrednost koja se dodeljuje brojaču je 9, postavlja se pitanje koju vrednost treba dodeliti stanju ADD2 i kako se iz stanja ADD1 prelazi u stanje ADD2. Ovo se može izvesti ugradnjom dodatne logike ali to ima za posledicu usložnjavanje dizajna i veću cenu. Analizom dijagrama stanja CPU-a (slika 2.3) vidimo da faze izvršenja pojedinih instrukcija nemaju više od dva stanja. Zbog toga usvojićemo sledeću funkciju preslikavanja 1IR[1..0]0, koja rezultira vrednostima brojača od 8, 10, 12 i 14 za ADD1, AND1, JMP1 i INC1, respektivno. Da bi se dodelile rutinama izvršenja uzastopne vrednosti, za ADD2 vrednost koja se dodeljuje brojaču je 9, a kod AND2 vrednost brojača je 11.

158 Saglasno prethodnom deo strukture upravljačke jedinice sa slike 2.5 koja sadrži samo brojač i dekoder prikazana je na slici 2.8. FETCH3 FETCH1 FETCH2 ADD1 AND1 ADD2 AND2 JMP1 INC1 1IR[1..0]0 4 BROJAC LD INC CLR 4 DEKODER FETCH1 FETCH2 FETCH3 ADD1 ADD2 AND1 AND2 JMP1 INC1 Slika 2.8 Deo strukture upravljačke jedinice Izlazi dekodera sa slike 2.8 vode se na ulaz logike (slika 2.5) koja generiše upravljačke signale prema svim blokovima CPU-a. Shodno sllici 2.2 imaćemo PCLOAD = JMP1 PCINC = FETCH2 DRLOAD = FETCH2 ADD1 AND1 ACLOAD = ADD2 AND2 ACING = INC1 IRLOAD = FETCH3 ALUSEL = 0 aritmetička suma => ALUSEL=AND2 1 logička funkcija => ALUSEL=AND2 MEMBUS = FETCH2 ADD1 AND1 PCBUS = FETCH1 READ = FETCH2 ADD1 AND1

159 Ostali upravljački signali definisani na slici 2.2 kakvi su ACBUS, IRBUS, ARBUS,... u konkretnom slučaju nisu definisani jer se oni ne aktiviraju od strane skupa instrukcija ADD, AND, JMP i INC. Logika za generisanje upravljačkih signala prikazana je na slici 2.9. FETCH1 ARLOAD FETCH IRLOAD FETCH3 JMP1 FETCH2 PCLOAD PCINC AND2 FETCH2 ADD1 AND1 ALUSEL MEMBUS FETCH2 ADD1 ADD2 DRLOAD FETCH1 PCBUS INC ADD2 AND2 ACLOAD ACINC FETCH2 ADD1 AND1 READ Slika 2.9 Logika za generisanje upravljačkih signala Kako bi se uverili da projektovani CPU radi korektno analiziraćemo izvršenje sledeće programske sekvence. 0: ADD 4 ; AC AC+M[4] 1: AND 5 ; AC AC+M[5] 2: INC ; AC AC+1 3: JMP 0 ; go to 0 4: 27h ; M[4]=27h 5: 39h ; M[5]=39h Na osnovu dijagrama stanja sa slike 2.3 u toku izvršenja svake naredbe ove programske sekvence CPU prolazi kroz sledeća stanja ADD 4 : FETCH1 FETCH2 FETCH3 ADD1 ADD2

160 AND 5 : FETCH1 FETCH2 FETCH3 ADD1 ADD2 INC : FETCH1 FETCH2 FETCH3 INC1 JMP 0 : FETCH1 FETCH2 FETCH3 JMP1 Na slici 2.10 prikazana je trasa izvršenja jedne iteracije ovog programa. Kao što se može uočiti CPU procesira svaku instrukciju korektno. Inicijalno svi registri sadrže vrednost 0. Instr. stanje aktivni signali operacije koje se vrše nar. stanje ADD4 FETCH1 PCBUS, ARLOAD AR 0 FETCH2 FETCH2 READ, MEMBUS, DRLOAD, PCINC DR 04h, PC 1 FETCH3 FETCH3 DRBUS, ARLOAD, IRLOAD IR 00, AR 04h ADD1 ADD1 READ, MEMBUS, DRLOAD DR 27h, ADD2 ADD2 DRBUS, ACLOAD AC 0+27h=27h FETCH1 AND5 FETCH1 PCBUS, ARLOAD AR 1 FETCH2 FETCH2 READ, MEMBUS, DRLOAD, PCINC DR 45h, PC 2 FETCH3 FETCH3 DRBUS, ARLOAD, IRLOAD IR 01, AR=05h AND1 AND1 READ, MEMBUS, DRLOAD DR 39h AND2 AND2 DRBUS, ALUSEL, ACLOAD AC 27h 39h=21h FETCH1 INC FETCH1 PCBUS, ARLOAD AR 2 FETCH2 FETCH2 READ, MEMBUS, DRLOAD, PCINC DR C0h, PC 3 FETCH3 FETCH3 DRBUS, ARLOAD, IRLOAD IR 11, AR 00h INC1 INC1 ACINC AC 21h+1=22h FETCH1 JMP0 FETCH1 PCBUS, ARLOAD AR 3 FETCH2 FETCH2 REDA, MEMBUS, DRLOAD, PCINC DR 80h, PC 4 FETCH3 FETCH3 DRBUS, ARLOAD, IRLOAD IR 10, AR 00h JMP1 JMP1 DRBUS, PCLOAD PC 0 FETCH1 Slika 2.10 Trasa izvršenja

161 4. RISC procesori

162 Konvencije kod korišćenja registara MIPS-a ime broj registra korišćenje da li se pamti kod Call? $zero 0 uvek postavljen na konstantnu nije dostupan vrednost nula $at 1 rezervisan za potrebe asemblera nije dostupan $v0-$v1 2-3 čuva se vrednost dobijenog rezultata ili izraza čija se vrednost odredjuje ne $a0-$a3 4-7 čuva vrednost argumenta pri prenosu da parametara proceduri $t0-$t za čuvanje privremenih promenljivih ne $s0-$s čuvanje promenljivih da $t8-$t čuvanje dodatnih privremenih ne promenljivih $k0-$k rezervisani od strane operativnog nije dostupan sistema $gp 28 globalni pokazivač da $sp 29 pokazivač magacina da $fp 30 pokazivač okvira da $ra 31 adresa povratka da Napomena: Za ostale detalje o formatima instrukcija, repertoaru instrukcija, načinu kodiranja instrukcija i dr., videti Dodatak C. Test pitanje 4.1 Neka A predstavlja vektor koga čini 100 elemenata, od kojih je svaki obima 32-bita, a G=1500 i H=1900 su adrese memorijskih lokacija u kojima se čuvaju promenljive g i h. Prevesti sledeći iskaz programskog jezika C na asemblerski jezik mikroprocesora MIPS. g=h+a[8]; Napomena: Promenljive g i h čuvati u registre $s1 i $s2, baznu adresu vektora A = 2600 čuvati u registar $s3. Rezultat smestiti na lokaciji G. 4-1

163 Odgovor adrese (decimalne)... registri sadržaj G=1500 g $zero 0... $s1 g H=1900 h $s2 h... $s3 A0 A=A0=2600 a0 $t0 (privremeni) a8 A1=2604 A2=2608 a1 a2... A99=2996 a99... Programska sekvenca ima sledeći oblik: Addi $s3,$zero,a0 # A0 $s3 Lw $s2,h($zero) # h $s2 Lw $t0,8*4($s3) # a8 $t0 Add $s1,$s2,$t0 # g = $s1 = h + a8 Sw $s1,g($zero) # g G 4-2

164 Test pitanje 4.2 Neka A predstavlja vektor koga čine 10 elemenata (A[0],..., A[9]) od kojih je svaki obima 32-bita, a H = 2000 adresa memorijske lokacije u kojoj se čuva promenljiva h. Prevesti sledeći iskaz programskog jezika C na asemblerski jezik mikroprocesora MIPS. A[10] = h+a[8]; Napomena: Baznu adresu vektora A = 2600 čuvati u registru $s3. A[10] je vrednost novo-dobijenog elementa koji se smešta na lokaciji tipa reč koja neposredno sledi iza lokacije zadnjeg elementa vektora A[9]. Odgovor adrese (decimalne)... registri sadržaj H=2000 $zero 0... $s3 A0 A=A0=2600 a0 $s2 h A1=2604 A2=2608 a1 a2 $t1 $t2 (privremeni) a8 a10 A9= a9 A9=2640 a

165 Addi $s3,$zero,a0 # A0 $s3 Lw $t0,h($zero) # h $t0 Lw $t1,32($s3) # a8 $t1 Add $t2,$t0,$t1 # a10 = h + a8 Sw $t2,40($s3) # a10 Adr = 2640 Test pitanje 4.3 Neka A predstavlja vektor koga čine 20 elemenata od kojih je svaki obima reč (32-bita).Kakav je asemblerski kôd mikroprocesora MIPS za odgovarajući kôdni segment na C-u? g = h + A [i]; Napomena: Bazna adresa vektora A je A0 = 3000 i čuva se u registru $s3. Adresa promenljive g je G = 2000, promenljive h je H = 2200, a promenljive i je I = Kompilator dodeljuje promenljige g, h i i registrima $s1, $s2 i $s4. Odgovor Addi $s3,$zero,a0 # A0 $s3 Lw $s2,h($zero) # h $s2 Lw $s4,i($zero) # i $s4 Add $t1,$s4,$s4 # $t1 = 2 * i Add $t1,$t1,$t1 #$t1 = 4 * i Add $t1,$t1,$s3 #$t1 = adr od A[i](4*i+$s3) Lw $t0,0($t1) #A[i] $t0 Add $s1,$s2,$t0 # g = h + A[i] Sw $s1,g($zero) # g Adr

166 Zadatak 4.1 (a) U sledećem C kodnom segmentu f, g, h, i i j su promenljive: if (i==j) go to LAB1; f=g+h; LAB1: f=f-i; Usvojimo da su svih pet promenljivih f do j već smeštene u pet registra $s0 do $s4, respektivno. Kakav će biti kompilovani kod mikroprocesora MIPS? (b) Koristeći iste promenljive i registre iz slučaja pod (a) kompajliraj sledeći if iskaz na C-u. if (i==j) f=g+h; else f=g-h; Odgovor a) BEQ $s3,$s4,lab1 ; skok na LAB1 ako je i=j Add $s0,$s1,$s2 ; f=g+h LAB1: Sub $s0,$s0,$s3 ; f=f-i b) BNE $s3,$s4,else ; skok na Else ako je i j Add $s0,$s1,$s2 ; f=g+h, tj. preskače se ako je i j J Izl ; skok na Izlaz Else: Sub $s0,$s1,$s2 ;f=g-h, tj skače se ako je i=j Izl: --- i=j i==j? i j Else: f=g+h f=g-h Izlaz: 4-5

167 Zadatak 4.2 Neka je data sledeća petlja u programskom jeziku C: Ponovi: g = g + A [ i ] ; i = i + j ; if (i!= h) go to Ponovi; Gde je A vektor od 100 elemenata. Adrese promenljivih g, h, i i j su G, H, I i J, respektivno. Promenljive g, h, i i j kompilator dodeljuje registrima $s1, $s2, $s3 i $s4, respektivno. Usvojimo da se bazna adresa vektora A čuva u registar $s5. Kakav će biti MIPS-ov asemblerski kôd za odgovarajuću petlju na C-u. Odgovor Lw $s2,h($zero) # h->$s2 Lw $s3,i($zero) # i->$s3 Lw $s4,j($zero) # j->$s4 Add $s5,$zero,a0 # A0->$s5 Pon: Add $t1,$s3,$s3 #$t1 = 2 * i Add $t1,$t1,$t1 #$t1 = 4 * i Add $t1,$t1,$s5 #$t1 = adresa od A[i] Lw $t0,0($t1) # A[i] $t0 Add $s1,$s1,$t0 # g = g + A [i]i Sw $s1,g($zero) # g M [G] Add $s3,$s3,$s4 # i = i + j BNE $s3,$s2,ponovi # go to Ponovi if i h Test pitanje 4.5 Neka je data sledeća klasična petlja u C-u: while (sima [ i ] = = k) i = i + j ; Usvojimo da kompilator dodeljuje promenljive i, j i k registrima $s3, $s4 i $s5, a baznu adresu polja sima registru $s5. Kakav će biti asemblerski kôd za odgovarajući segment na C-u? 4-6

168 Odgovor Ponovi:Add $t1,$s3,$s3 #$t1 = 2 * i Add $t1,$t1,$t1 #$t1 = 4 * i Add $t1,$t1,$s6 #$t1 = adresa od sima[i] Lw $t1,0($t1) #sima[i]->$t0 BNE $t0,$s5,kraj # go to Kraj if sima[i] k Add $s3,$s3,$s4 # i = i + j J Ponovi # go to Ponovi Kraj:... Test pitanje 4.7 Neka se promenljiva a čuva u registru $s0, a promenljiva b u registru $s1. Kakav će biti kôd koji testira da li je promenljiva a manja od promenljive b, a zatim se vrši grananje na labelu Manje ukoliko je uslov ispunjen. Odgovor Slt $t0,$s0,$s1 # $t0 = 1 if $s0 <$s1, tj a < b BNE $t0,$zero,manje # go to Manje if $t0, tj if a < b Manje:... Ovo znači da par instrukcija Slt i BNE implementiraju instrukciju BLT (branch on less than) Zadatak 4.3 Neka jed dat sledeći kôd na programskom jeziku C: switch (k) case 0: f = i + j ; break; /* k = 0 */ case 1: f = g + h ; break; /* k = 1 */ case 2: f = g - h ; break; /* k = 2 */ case 3: f = i - j ; break; /* k = 3 */ Usvojimo da se šest promenljivih, od f do k, čuvaju u odgovarajućih šest registara $s0 do $s5, a da se u $t2 smešta

169 Napisati odgovarajući kôd na asemblerskom jeziku procesora MIPS. Odgovor # prvo se testira k da bi se proverilo da li je ispunjen uslov 0 = < k = < 3 # koristi se promenljiva k da se odredi indeks tabele, tj k se množi sa 4 Slt $t3,$s5,$zero # Test if k < 0 BNE $t3,$zero,kraj # if k < 0, go to Kraj Slt $t3,$s5,$t2 # Test if k < 4 BEQ $t3,$zero,kraj # if k > = 4, go to Kraj Add $t1,$s5,$s5 # $t1=2*k, podešav. indeksa tabele Add $t1,$t1,$t1 # $t1=4*k, svaki podat. obima 4 bajta # usvojimo da četiri sekvencijalne memorijske reči koje počinju od # adrese definisane sadržajem registra $t4, imaju adrese koje odgovaraju # labelama L0, L1, L2 i L3. # Punjenje adrese skoka se obavlja na sledeći način: Add $t1,$t4,$t1 Lw $t0,0($t1) # $t1 = adresa Jump Tabela[k] # $t1 = Jump Tabela[k] # skok se sada obavlja sledećom instrukcijom: Jr $t0 # Jump na osnovu sadržaja registra $t0 # C verzija case iskaza koja se naziva switch iskaz ima oblik: L0: Add $s0,$s3,$s4 # za k = 0 izračunaj f = i + j J Kraj # zatim idi na Kraj L1: Add $s0,$s1,$s2 # za k = 1 izračunaj f = g + h J Kraj # zatim idi na Kraj L2: Sub $s0,$s1,$s2 # za k = 2 izračunaj f = g - h J Kraj # zatim idi na Kraj L3: Sub $s0,$s3,$s4 # za k = 3 izračunaj f = i - j Kraj:... # završetak iskaza switch 4-8

170 Zadatak 4.6 Procedura kopiniz se koristi za kopiranje niza y u niz x. Na kraju niza $sp pokazuje na bajt čija je vrednost 00 (konvencija kod C- a). void kopiniz (char x[ ], char y[ ]) { int i; i = 0; while ((x[i] = y[i])!= 0) /* kopiraj i testiraj bajt */ i = i + 1; } Kakav će biti MIPS-ov asemblerski kôd? Napomena: Bazne adrese nizova x i y se čuvaju u $a0 i $a1, a indeksna vrednost i u registru $s0. Odgovor # Procedura kopiniz podešava prvo sp a zatim smešta $s0 u magacin kopiniz: Sub $sp,$sp,4 # podešavanje magacina za više # od jednog elementa Sw $S0,4($sp) # sačuvaj $s0 u magacin # Inicijaliziranje i na 0, naredna instrukcija postavlja $s0 na 0, # sabiranjem 0 sa 0 i memorisanjem sume u $s0 Add $s0,$zero,$zero # i = # Sledi početak petlje. Adresa y[i] se formira sabiranjem i sa y[ ]: L1: Add $t1,$a1,$s0 # adresa za y[i] je u $t1 # Uočimo da je y[i] niz bajtova. Da bi napunili znak u y[i], treba prvo da # napunimo bajt (tj. znak) u registar $t2: Lb $t2,0($t1) # $t2 = y[i] # Adresa x[i] se smešta u $t3 a nakon toga znak iz $t2 na tu adresu: Add $t3,$a0,$s0 # adresa od x[i] u $t3 4-9

171 Sb $t2,0($t3) # x[i] = y[i] # Sledi inkrementiranje indeksa i, i skok na labelu L1 ako znak nije nula, tj. ako nije zadnji znak niza, tada: Add $s0,$s0,1 # i = i + 1 BNE $t2,$zero,1 # if y i! = 0, go to L1 # Ako ne dodje do grananja, to znači da je to zadnji znak u nizu, pa je # zbog toga neophodno obnoviti sadržaj registra $s0 i $sp-a i izvršiti # povratak: Lw $s0,4($sp) # y[i]= = 0; kraj niza obnovi staru vred. $s0 Add $sp,$sp # izbavi jednu reč iz magacina Jr $ra # povratak Test pitanje 4.11 Kakav je asemblerski kôd mikroprocesora MIPS koji se koristi za punjenje 32-bitne konstante: u registar $s0. Odgovor # Prvo se pune 16 bitova veše težine, 61 decimalno, pomoću instrukcije Lui: Lui $s0,61 # 61 decimalno = binarno # vrednost registra $s0 nakon izvodjenja ove operacije je # $s0 = # u narednom koraku sabiraju se nižih 16 bitova, čija je # decimalna vrednost 2304, na sledeći način: Addi $s0,$s0,2304 # 2304 decimalno = binarno # konačna vrednost $s0 biće #

172 Test pitanje 4.12 Za klasičnu petlju na C-u: while (sima[i] = = k) i = i + j; odgovarajući kompajlirani kôd na semblerskom jeziku mikroprocesora MIPS je sledeći: Ponovi: Add $t1,$s3,$s3 # $t1 = 2 * i Add $t1,$t1,$t1 # $t1 = 4 * i Add $t1,$t1,$s5 # $t1 = adresa od sima[i] Lw $t0,0($t1) # $t0 = sima[i] BNE $t0,$s5,kraj # go to Kraj if sima[i] = k Add $s3,$s3,$s4 # i = i + j J Ponovi # go to Ponovi Kraj:... (Napomena: Promenljive i, j i k se čuvaju u registrima $s3, $s4 i $s5 a bazna adresa vektora sima u registar $s6). Ako usvojimo da se petlja izvršava počev od memorijske lokacije 80000, kakav će biti mašinski kôd mikrop. MIPS za datu petlju? Odgovor U sledećoj tabeli prikazana je sekvenca izvršenja, pri čemu je, za svaku instrukciju dat njen format i odgovarajuća lokacija u memoriji: veličina polja adrese

173 Zadatak 4.8 Kao što smo već u jednom od prethodnih test-pitanja naglasili, programski segment u C-u: while (sima[i]== k) i = i + j; (gde se promenljive i, j i k čuvaju u registrima $s3, $s4 i $s5, a bazna adresa niza se nalazi u $s6), ima odgovarajući asemblerski kôd koji je oblika: Ponovi: Add $t1,$s3,$s3 # $t1 = 2 * i Add $t1,$t1,$t1 # $t1 = 4 * i Add $t1,$t1,$s6 # $t1 = adresa niza sima[i] Lw $t0,0($t1) # $t0 = sima[i] BNE $t0,$s5,kraj # go to Kraj if sima[i] k Add $s5,$s3,$s4 # i = i + j J Ponovi Kraj:... Analizom kompajliranog kôda, može se uočiti sledeće: pri svakom prolasku kroz petlju izvršava se jedna instrukcija uslovnog i jedna bezuslovnog grananja; samo loši kompilatori generišu kôd sa ovoliko suvišnosti (dve instrukcije koje se odnose na promenu toka programa). Problem koji treba rešiti je sledeći: kreirati asemblerski kôd za mikroprocesor MIPS, koji će, za svaki prolazak kroz petlju, generisati samo jednu instrukciju tipa Branch ili Jump. Koliko se instrukcija izvršava pre i posle optimizacije ako broj iteracija petlje iznosi 10, tj. sima[i+10*j]=k, a sima[i],..., sima[i+9*j] k)? Odgovor Broj instrukcija koje se izvršavaju kod prvobitne verzije asemblerskog programa, za 10 potpunih iteracija i jedan izlazak 4-12

174 iz petlje, iznosi 10*7+5 = 75 instrukcija. Revidirana verzija programa koja u petlji sadrži samo jednu instrukciju grananja oblika je: Add $t1,$s3,$s3 # $t1 = 2 * i Add $t1,$t1,$t1 # $t1 = 4 * i Add $t1,$t1,$s6 # $t1 = adresa polja sima[i] Lw $t0,0($t1) # $t0 = sima[i] BNE $t0,$s5,kraj # go to Kraj if sima[i] k Ponovi: Add $s3,$s3,$s4 # i = i + j Add $t1,$s3,$s3 # $t1 = 2 * i Add $t1,$t1,$t1 # $t1 = 4 * i Add $t1,$t1,$s6 # $t1 = adresa polja sima[i] Lw $t0,0($t1) # $t0 = sima[i] BEQ $t0,$s5,ponovi # go to Ponovi if sima[i]= k Kraj:... Broj instrukcija koji se izvršava za ovu verziju programa iznosi: * 6 = 65 Za slučaj da se vrednost 4*j izračunava pre petlje, moguće je dalja modifikacija čiji je oblik sledeći: Add $t2,$s4,$s4 # $t2 = 2 * j Add $t2,$t2,$t2 # $t2 = 4 * j Add $t1,$s3,$s3 # $t1 =2 * i Add $t1,$t1,$t1 # $t1 = 4 * i Add $t1,$t1,$s6 # $t1 = adresa polja sima[i] Lw $t0,0($t1) # $t0 = sima[i] BNE $t0,$s5,kraj # go to Kraj if sima[i] = k Ponovi: Add $t1,$t1,$t2 # $t1=adresa polja sima[i+m*j] Lw $t0,0($t1) # $t0 = sima[i] BEQ $t0,$s5,ponovi # go to Ponovi if sima[i] Kraj:... Broj instrukcija koje se izvršavaju iznosi 7+10*3 =

175 Zadatak 4.9 Pseudoinstrukcije ne pripadaju skupu instrukcija mikroprocesora MIPS ali se često koriste u MIPS-ovim programima. Za svaku od pseudoinstrukcija datu u tabeli, odredi minimalnu sekvencu stvarnih MIPS-ovih instrukcija pomoću kojih se obavlja specificirana aktivnost. Napomena: U kreiranim programskim sekvencama koristi registar $at. Simbol big se odnosi na 32- bitnu; a simbol small na 16-bitnu celobrojnu vrednost. Odgovor pseudo instrukcija šta obavlja rešenje 1) Move $t5,$t3 $t5 = $t3 Add $t5,$t3,$zero 2) Clear $t5 $t5 = 0 Add $t5,$zero,$zero 3) Li $t5,small $t5 = small Addi $t5,$zero,small 4) Li $t5,big $t5 = big Lui $t5,ms_deo(big) Ori $t5,ls_deo(big) 5) Lw $t5,big($t3) $t5=memorija[$t3+big] Li $at,big Add $at,$at,$t3 Lw $t5,0($at) 6) Addi $t5,$t3,big $t5=$t3+big Li $at,big Add $t5,$t3,$at 7) BEQ $t5,small,l if ($t5=small) go to L Li $at,small BEQ $t5,$at,l 8) BEQ $t5,big,l if ($t5=big) go to L Li $at,big BEQ $at,$zero,l 9) BLE $t5,$t3,l if ($t5<=$t3) go to L Slt $at,$t3,$t5 BEQ $at,$zero,l 10) BGT $t5, $t3, L if($t5>$t3) go to L Slt $at,$t3,$t5 BNE $at,$zero,l 11) BGE $t5, $t3, L if($t5>=$t3) go to L Slt $at,$t5,$t3 BEQ $at,$zero,l Napomena: Tamnije šrarifani deo se odnosi na rešenje. U delu rešenja koristi se instrukcija Li koja se implementira kao u slučajevima 3 i

176 Zadatak 4.10 Neka je data sledeća kodna sekvenca na C-u: for (i = 0; i <= 100; i = i + 1) {a[i] = b[i] + c;} Usvojimo da su: (1) a i b nizovi čiji su elementi tipa reč (32-bitne vrednosti); (2) bazna adresa niza a se čuva u $a0, a bazna adresa niza b u $a1; (3) u registru $t0 se čuva promenljiva i, a u regis. $s0 promenljiva c. Napisati odgovarajući kôd na asemblerskom jeziku mikroprocesora MIPS. Koliko se instrukcija izvrši prilikom izvršenja programa? Koliko puta se vrši obraćanje memoriji podataka u toku izvršenja programa? Odgovor # Inicijaliziraćemo prvo registar $t0 na 0, tj. i = 0: Add $t0,$zero,$zero # $t0 = 0 # Ako se u $s0 čuva adresa promenljive c, tada se ona smešta u $t1 sledećom instrukcijom Lw $t1,0($s0) # $t1 = c # Da bi odredili bajt adresu sukcesivnih elemenata polja i # proverili da li je kraj petlje, potrebne su nam konstante 4 i 401. # Usvojićemo da se one nalaze u memoriji na lokacijama Konst4 # i Konst401 u trenutku kada se vrši punjenje programa Lw $t2,konst4($zero) # $t2 = 4 Lw $t3,konst401($zero) # $t3 = 401 # U okviru tela petlje pristupa se elementima polja, obavlja se # izračunavanje, i testira kraj petlje Ponovi: Add $t4,$a1,$t0 # $t4 = adresa elementa b[i] Lw $t5,0($t4) # $t5 = b[i] Add $t6,$t5,$t1 # $t6 = b[i]+ c Add $t7,$a0,$t0 # $t7 = adresa elementa a[i] 4-15

177 Sw $t6,0($t7) # a[i]= b[i]+ c Add $t0,$t0,$t2 # i = i + 4 Slt $t8,$t0,$t3 # $t8=1 if $t0<401 tj. i<=100 BNE $t8,$zero,ponovi # go to Ponovi if i < = 100 Broj instrukcija koji se izvršava iznosi 4+101*8 = 812 Broj obraćanja memoriji podataka je 3+101*2 = 205 Zadatak 4.11 Napisati programsku sekvencu na asemblerskom jeziku za mikroprocesor MIPS xx pomoću koje je moguće obaviti sledeću logičku funkciju: S = a b c + a b c + a b c + a b c Promenljive a, b i c čuvaju se u memorijskim lokacijama A, B i C, respektivno. Kod rešavanja zadataka koristiti sledeću registarsku konvenciju, koja važi za MIPS procesor: Odgovor lzraz se može srediti na sledeći način: S = c (a b + a b) + c (a b + a b) S = c z + c z, gde je z = a b + a b = a b i z = a b + a b S = c a b Programska sekvenca ima sledeći oblik: Lw $t0,a($zero) ; pribavi a u $t0 Lw $t1,b($zero) ; pribavi b u $t1 Lw $t2,c($zero) ; pribavi c u $t2 Xor $t2,$t2,$t0 ; c = c a Xor $t2,$t2,$t1 ; c = c a b St S($zero),$t2 ; smesti c u S 4-16

178 Test pitanje 4.23 Za sledeće tri situacije identifikuj tipove zavisnosti po podacima instrukcija 1 upis instrukcija 2 ~itanje a) instrukcija 1 ~itanje instrukcija 2 upis b) instrukcija 1 upis instrukcija 2 upis Odgovor a) Read - after - write (RAW) hazard b) Write - after - read (WAR) hazard c) Write - after - write (WAW) hazard c) Test pitanje 4.25 Format instrukcija RISC procesora MIPS RX000 prikazan je na Slici

179 opkod adresa grananja Adr a) format J-tipa opkôd Rs Rt neposredni operand Imm adrese registara (2) b) form at I-tipa opkôd Rs Rt Rd iznos pom eranja funkcija adrese registara (3) c) format R-tipa Slika 4.4 Format instrukcija mikroprocesora MIPS RX 000 Neka je I instrukcija koja se tekuće izvršava, smeštena na lokaciji (memorijskoj adresi) FFFF FF00 h. a) Ako I nije instrukcija grananja, na kojoj se memorijskoj adresi nalazi instrukcija koja se izvršava neposredno nakon instrukcije I? b) Neka je I instrukcija bezuslovnog grananja koja ima specificirano 26-bitno adresno polje grananja Adr = 2A9 FFFFh. Odredi memorijsku adresu instrukcije koja će se izvršavati neposredno nakon instrujkcije I? Odgovor a) Adresa naredne instrukcije biće FFFF FF00h + 4 = FFFF FF04h b) Instrukcija bezuslovnog grananja ima format J-tipa J Adr To znači go to Adr. Imajući u vidu da su memorijske adrese kod RX000 obima 32-bita, CPU treba da proširi 26-bitno asdresno 4-18

180 polje sa slike 1 na 32 bita. Proširenje se izvodi automatski od strane procesora u sledeća dva koraka: Temp := PC[31 : 28].Adr.00 ; PC := Temp ; Prva četiri MS bita programskog brojača PC se smeštaju ispred Adr, a dva bita 00 se pridružuju kao zadnja dva LS bita polju Adr. Ovako formirana 32-bitna adresa se puni u PC. U konkretnom slučaju PC[31 : 28] = F h = 1111b., a polje: Adr = 2A9 FFFFh = b, tako da je ciljna adresa grananja: A = b. Ponovnom konverzijom u heksadecimalni format dobićemo: A = FAA7 FFFCh. Test pitanje 4.35 Kako se definiše zavisnost po podacima kod superskalarnih procesora? Odgovor Između instrukcija koje se nalaze u prozoru izvršenja mogu da postoje ograničenja tipa zavisnosti-po-podacima (data dependencies). Zavisnost-po-podacima između instrukcija javljaju se zbog toga što instrukcije mogu da pristupaju (radi čitanja ili upisa) istoj lokaciji (memorijskoj ili registarskoj). Kada instrukcije pristupaju istoj lokaciji, kažemo da se javlja hazard jer postoji verovatnoća da redosled pristupa toj lokaciji ne bude korektan. Idealno posmatrano između instrukcija realno je očekivati da postoje samo ograničenja tipa prava zavisnost (true dependence). Ova ograničenja karakteristična su za hazarde RAW 4-19

181 (read-after-write), jer instrukcija tipa potrošač, može da pročita vrednost nakon što je instrukcija proizvođač upisala rezultat. Pored pravih kod superskalarnih procesora postoje i veštačke zavisnosti (artificial dependecies). Ove zavisnosti rezultat su WAR (write after read) i WAW (write after write) hazarda. WAR hazard se javlja u situacijama kada instrukcija treba da upiše novi rezultat u lokaciju, ali upis mora da se odloži sve dok prethodne instrukcije kojima je stara vrednost potrebna ne pročitaju tu vrednost. WAW hazard se javlja kada veći broj instrukcija ažurira istu lokaciju, ali je pri ovome veoma je bitno da se sačuva korektan redosled ažuriranja. Na Slici 4.6 prikazan je deo programskog segmenta (prvi blok) sa Slike 4.5b), na kome su jasno naznačeni kakvi tipovi zavisnosti po podacima postoje između instrukcija. WAW RAW LAB2: Move r3, r7 Lw r8, r3 Add r3, r3, 4 Lw r9, (r3) BLE r8, r9, LAB3 WAR Slika 4.6 Primer zavisnosti po podacima Test pitanje 4.37 Objasniti pojam odmotavanje petlje (loop unrolling). Odgovor 4-20

182 Osnovna ideja odmotavanja petlje sastoji se u tome što je potrebno ponoviti izvršenje tela petlje onoliko puta koliko je to predvidjeno samim kôdom, tj. učiniti kôd petlje sekvencijalnim. Odmotavanjem se eliminiše inter-iteracioni kôd, kao što je dekrementiranje brojača petlji, testiranje za kraj petlje i uslovno grananje izmedju iteracija. Odmotavanje petlje se može implementirati veoma lako kada je broj iteracija u toku faze kompilacije poznat, što je najčešći slučaj kod do i for petlji. Zadatak 4.12 Neka je data sledeća jednostavna petlja: for i=1 to 3 do { b(i) = 4.13*a(i) } Pokazati kako izgleda potencijano kompajlirani kôd petlje kod CISC i RISC mašine. Blokovi podataka a1, a2 i a3, kao i b1, b2 i b3, čuvaju se u memorijskim lokacijama A1, A2, A3, B1, B2 i B3, respektivno. Kod oba procesora smatrati da postoji registarsko polje od 32 interna registra, imenovana kao r0, r1,..., r31. Odgovor Potencijalno kompajlirani kôd kod CISC procesora biće oblika: Load r1,a1 ; napuni početnu adresu bloka A Load r2,b1 ; napuni početnu adresu bloka B Load r3,3 ; napuni brojač petlje Ponovi: Fmul [r2],4.13,[r1] ; mno`enje koristeći ; indirektno adresiranje Inc r1,4 ; inkrem. pokaz. na nared. elem. bloka pod. a(i) Inc r2,4 ; inkrem. pokaz. na nared. elem. bloka pod. b(i) Dcr r3 ; dekrementirnje brojača petlje BNZ Ponovi ; granaj se na Ponovi ako brojač petlje nije nula 4-21

183 Osnovna karakteristikla ove programske sekvence je ta što instrukcija Fmul koristi indirektno adresiranje radi pristupa memorijskim operandima. Nasuprot ovakvom pristupu, kompajlirani kod kod RISC mašine, za istu petlju i izvršenje instrukcije Fmul, koristi registarske operande. [ta više, za ovakav slučaj, imajući u vidu da je petlja kratka, vrši se odmotavanje petlje čime se kôd koji se odnosi na dekrementiranje i testiranje eliminiše, tako da nakon odmotavanja dobijamo: Lw r1,a1 ; Lw je ekvivalentna instrukciji Load Lw r2,b1 Lw r3,3 Fmul 0(r2),4.13,0(r1) Addi r1,r1,4 Addi r2,r2,4 Fmul 0(r2),4.13,0(r1) Addi r1,r1,4 Addi r2,r2,4 Fmul 0(r2),4.13,0(r1) U konkretnom slučaju, primenjena je code-inlining tehnika (tradicionalna makro-ekspanziona tehnika) kao standardna kompilatorska optimizaciona tehnika za kratke potprograme. Code-inlining znači da se vrši ubacivanje (insertovanje, ili tzv. umetanje) celog tela potrograma svaki put kada se on pozove u tački poziva, umesto da se telo petlje posebno memoriše i svaki put poziva iz pozivnog (glavnog) programa. Ipak, treba ukazati da je jednostavno odmotavanje petlje često nepraktično, posebno kada je broj iteracija veliki, ili kada broj iteracija nije fiksiran (poznat) u toku kompilacije. Kod ovakvih situacija jednostavno odmotavanje petlje treba proširiti. Standardno korišćeni metod se sastoji u sledećem: 4-22

184 Petlja se odmotava odredjeni broj puta, recimo tri puta, i postavlja brojač petlje na rezultantnu grupu odmotanih petlji. Nakon toga se vrši dekrementiranje, testiranje za kraj petlje i uslovno grananje za svaku od grupa odmotanih petlji. Evidentno je da je u ovom slučaju potrebno kreirati: prvo, neki pred-kôd (prolog-kôd) pre početka petlje, a zatim, na kraju neki završnikôd (epilog-kôd) kako bi se sve aktivnosti uspešno i korektno obavile. Tako na primer, ako želimo prethodnu petlju da izvršimo 30 puta, koristićemo sledeći kôd: Lw r1,a1 Lw r2,b1 Lw r3,30 Ponovi: Fmul 0(r2),4.13,0(r1) Addi r1,4 Addi r2,4 Fmul 0(r2),4.13,0(r1) Addi r1,4 Addi r2,4 Fmul 0(r2),4.13,0(r1) Addi r1,4 Addi r2,4 Subi r3,r3,3 BNE r0,r3,ponovi ; if (r0!=r3) go to PC=PC+4+Ponovi; ; u r0 uvek se čuva 0 Tehnika odmotavanja petlji ne može se efikasno primeniti kada izmedju narednih iteracija egzistira rekurentnost. Zadatak 4.13 Neka se na nekom hipotetičkom RISC procesoru izvršava sledeći program na asemblerskom jeziku: Ld r4,#a ; napuni konstantu A u registar r4 Ld r5,#b ; napuni konstantu B u registar r5 Ld r6,#c ; napuni konstantu C u registar r6 4-23

185 Ld r9,#0 BEQ r4,r5,adr1 Add r9,r5,r5 Mul r9,r9,r9 Add r9,r9,#1 adr1: St (r1),r9 ; obriši registar r9 ; if (r4)=(r5) then go to adr1 ; (r4)+(r5) (r9) ; (r9)*(r9) (r9) ; (r9)+1 (r9) ; smesti r9 u M(r1) Identifikovati RAW, WAR i WAW hazarde koji su prisutni, ako ništa nije poznato o strukturi protočne organizacije RISC procesora. Odgovor Analizirajmo sve instrukcije koje čitaju i upisuju različite eksplicitno definisane operande r4, r5, r6, r9, M(r1), kao i programski brojač PC. instrukcija Read Write I1 Ld r4, #A r4 I2 Ld r5, #B r5 I3 Ld r6, #C r6 I4 Ld r9, #0 r9 I5 BEQ r4, r5, adr1 r4, r5 PC I6 Add r9, r4, r5 r4, r5 r9 I7 Mul r9, r9, r9 r9 r9 I8 Add r9, r9, #1 r9 r9 I9 St (r1), r9 r9 M (r1) 4-24

186 Slede}e potencijalne RAW zavisnosti postoje: (I1, I5) (I4, I7) zbog r4 (I1, I6) (I4, I8) (I2, I5) (I4, I9) zbog r5 (I2, I6) (I6, I7) Jedina WAR zavisnost je (I7, I8) zbog r9. Zavisnosti tipa WAW su: (I4, I6) (I4, I7) (I4, I8) (I6, I7) (I6, I8) (I7, I8) zbog r9 (I6, I8) (I6, I9) (I7, I8) (I7, I9) (I8, I9) zbog r9 Kod određivanja ovih zavisnosti usvojene su sledeće pretpostavke: a) ne postoji ograničenje u pogledu broja protočnih stepeni, tj. dubine protočne obrade b) ne postoji ograničenje u pogledu mogućnosti da bilo koji stepen čita ili upisuje operande 4-25

187 Zadatak 4.14 Staza podataka jedne protočne petostepene jedinice, kod koje nisu izvedene povratne veze, tj. premošćavanja, prikazana je na Slici IF S 1 ID S 2 EX S 3 ME S 4 WB Le~ Le~ Le~ Le~ Cp Slika 4.10 Petostepena protočna jedinica Pravila koja se odnose na princip rada strukture sa Slike 4.10 su: (a) Operand koji se dobavlja iz memorije kod operacije Load dostupan je procesoru nakon faze ME, a upisuje se u registar RF polja u fazi WB. (b) Kod operacije Store operand je smešten u memoriji nakon faze ME. (c) Instrukcija grananja kako je prikazano na Slici 4.11 uzrokuje zastoj od tri ciklusa (jedan ciklus je ponovljeni IF ciklus a ostala dva su ciklus tipa zastoj, tj. iddle) instrukcija grananja naslednik grananja naslednik grananja + 1 naslednik grananja +2 IF ID EX ME WB IF 1 * * IF 2 ID EX ME WB IF ID EX ME WB Slika 4.11 Efekat instrukcije grananja IF IF EX ME WB 4-26

188 Napomena: IF 1 se odnosi na pribavljanje opkoda instrukcije koja u programu neposredno sledi iza instrukcije grananja; IF 2 se odnosi na pribavljanje opk da ciljne instrukcije grananja; Simbol '*" se odnosi na zastoj. d) Upis raspoloživog operanda u neki od registara RF polja vrši se u toku prve polovine taktnog impulsa, a čitanje sadržaja registra se obavlja u toku druge polovine. Kao posledica je moguće preklapanje faze ID i WB, tj. ID može da pribavi operand koji se memoriše u toku faze WB. Za sledeći kôdni segment : ponovi: Lw r1,0(r2) Addi r1,r1,#1 Sw r1,o(r2) Addi r2,r2,#4 Sub r4,r3,r2 BNZ r4,ponovi Ako je inicijalna vrednost r3 jednaka r2+396, nacrtati kako izgleda izvršenje instrukcije u vremenu. Rešenje treba da ima oblik kao onaj na Slici Ako pretpostavimo da su sva obraćanja memoriji tipa keš pogodak, koliko je taktnih intervala potrebno da se petlja izvrši? Odgovor Vremenski dijagram protočnog sistema prikazan je na Slici taktni intervali instrukcija Lw r1,0(r2) F D E M W Addi r1,r1,#1 F * * D E M W Sw r1,0r2 F * * D E M W Addi r2,r2,#4 F D E M W Sub r4,r3,r2 F * * D E M W BNZ r4,ponovi F * * * D E M W Lw r1,0r2 F * * F D E M W Slika 4.12 Vremenski dijagram rada mašine za jednu potpunu iteraciju petlje i prve instrukcije naredne iteracije. 4-27

189 Napomena: Radi preglednosti slike umesto notacije faza IF, ID, EX, MF, i WB korišćena su obeležavanja F, D, E, M i W, respektivno. Zastoji se javljaju iz sledećih razloga: taktni razlog intervali 3-4 Addi zaustavlja ID sve dok Addi ne upiše operand u r1 6-7 Sw zaustavlja ID sve dok Addi ne upiše operand u r Sub zaustavlja ID sve dok Addi ne upiše operand u r BNZ zaustavlja ID sve dok Sub ne upiše operand u r BNZ izračunava novu vrednost ciljne adrese PC-a tako da se Lw ne može pribaviti pre kraja ciklusa 17 Na osnovu dijagrama sa Slike 4.12, vidi se da druga iteracija počinje 17 taktnih intervala nakon prve iteracije, a zadnjoj iteraciji je potrebno 18 taktnih intervala da bi završila. To znači da i-ta iteracija (iteracije se broje od 0-98) počinje u taktnom intervalu 1+(i*17). S obzirom da se petlja izvršava 99 puta, ukupni broj taktnih intervala, da se izvrši cela sekvenca, iznosi (98*17)+18=1684 taktna intervala. Zadatak 4.15 Ukazati na osnovne tipove hazarda po podacima (RAW, WAR, WAW) koje postoje između sledećih instrukcija. i1: Add r1, r2, r3 ; r1=r2+r3 i2: Add r4, r1, r4 i3: Add r3, r1, r2 i4: Add r1, r1, r4 Napomena: protočni procesor koristi 5-stepenu obradu a aktivnosti u toku svake faze, za svaki tip instrukcija, su sledeće: I_mem R EX D_mem W 4-28

190 I_mem : pribavljanje instrukcije R : čitanje RF polja i dekodiranje opkoda instrukcije EX : ALU operacija D_mem : pristup memoriji podataka W : upis u RF polje Za detalje o formatu pogledati Dodatak C. Odgovor i1 R r2,r3 EX r1 W r1 i2 R r1,r4 EX r4 W r4 i3 R r1,r2 EX r3 W r3 i4 R r1,r4 EX r1 W r1 R - ~itanje EX - rezultat operacije poznat W - upis za slu~aj da ne postoji premo{}avanje: 1. izme u parova instrukcija i1:i2, i1:i3, i1:i4 postoji RAW zavisnost zbog r1 2. izme u parova instrukcija i2:i4 postoji RAW zavisnost zbog r4 Zadatak 4.16 Ciklus izvršenja instrukcije, formati instrukcija i strukture staze podataka jednog četvorostepenog RISC procesora prikazane su na Slici Pokazati kako izgleda izvršenje sledećih programskih sekvenci: a) x=a+b y=b-c z=c+d 4-29

191 Pribavljanje instrukcije i dekodiranje FD Pribavljanje operanda ili adresa OF Izvr{enje operacije ili izra~unavanje efektivne adrese EX Sme{taj rezultata WB Slika 4.13 (a) Ciklus grananja instrukcije Ofset adrese promenljivih a, b, c, d, x, y i z u okviru bloka podataka označene su kao A, B, C, D, X, Y i Z, repektivno. U registar R0uvek se čuva nula. Promenljive a, b, c, d, x, y i z smestiti u registre R1, R2, R3, R4, R5, R6 i R7, respektivno. Bazna adresa bloka podataka se čuva u registru R10. Vrednost bazne adrese je 100D. b) Za slučaj da putevi premošćavanja (isprekidane linije) kod CPU-a sa Slika 4.13 nisu izvedeni, napisati programsku sekvencu i nacrtati vremenski dijagram za sledeću programsku sekvencu: 4-30

192 var=a+b zbir=var+c Ofest adresa promenljivih a, b, c, var i zbir u okviru bloka podataka označene su kao A, B, C, VAR i ZBIR, respektivno. U registru R0 uvek se čuva 0. Promenljive a, b, c, var i zbir čuvati u registrima R1, R2, R3, R4 i R5. Bazna adresa bloka podataka se čuva u registru R10. Vrednost bazne adrese je 100D. c) Za slučaj da su putevi premošćavanja (isprekidane linije) kod CPU-a sa Slike 4.13 izvedeni, ponoviti aktivnosti specificirane pod b). (a) Registarske instrukcije aritmeti~ke, logi~ke, pomeranja i {iftovanja (b) Instrukcije koje se obra}aju memoriji Load i Store (c) Instrukcije za upravljanje tokom programa Jump i Branch Tip Dest Scr1 Scr2 Constant Tip Dest Scr1 Scr2 Offset Tip ime OP Dest, Src1, Src2 OP Dest, Src1, Constant Move Dest, Src1 Shift Dest, Src1,Constant ime Lw immu Dest Lw imml Dest Lw rel Dest, Src2, Offset St rel Src1, Src2, Offset Dest Scr1 Scr2 Offset ime Jump Offset Jump Src2, Offset Brel Src2, Offset Akcija RF[Dest] RF[Src1] Op RF[Src2] RF[Dest] RF[Src1] Op Constant RF[Dest] RF[Src1] RF[Dest] RF[Src1] shift Constant Akcija RF[Dest]( ) Offset RF[Dest](15...0) Offset RF[Dest] Mem[RF[Src2]+Offset] Mem[RF[Src2]+Offset] RF[Src1] Akcija PC PC+Offset PC RF[Src2]+Offset PC PC+ 1 if RF[Src1] rel RF[Src2] PC PC+ Offset if RF[Src1] not rel RF[Src2] [ ] (d) Ostale instrukcije Nop, Clear, Set, Reset Tip Opkôd-op- Opkôd-op- Opkôd-op- Opkôd-op- Dest Scr1 Scr2 Offset ime No-op Clear Dest Sstat Dest Rstat Dest Akcija nema efekta RF[Dest] 0 Status[Dest] 1 Status[Dest] 0 (b) formati instrukcija 4-31

193 Napomena: RF-registarsko polje; Status-marker registar dekoderska logika RF polje IR 2 Upravlja~ki registar Dest registar Offset registar reg_a reg_b 3 Memorija za instrukcije -- MUX3 ALU&shifter PC 1 Offset registar Upravlja~ki Dest registaar 4 registar 4 4 Status 4 MUX2 MUX2 MAR 4 MDR 4 MUX1 Memorija za podatke (c) blok RISC procesora Napomena: Veze prikazane isprekidanim linijama se odnose na puteve premošćavanja Slika 4.13 : ^etvorostepeni RISC procesor Odgovor a) Sekvenca instrukcija na asemblerskom jeziku i odgovarajući vremenski dijagram koji se odnosi na redosled izvršenja instrukcija prikazani su na Slici 4.14 Adrese (decimalne) Instrukcija komentar 100 Lw R1,A(R10) ; R1 a 104 Lw R2,B(R10) ; R2 b 108 Lw R3,C(R10) ; R3 c 112 Lw R4,D(R10) ; R4 d 4-32

194 116 Add R5,R1,R2 ; x=a+b 120 Sub R6,R2,R3 ; y=b-c 124 Add R7,R3,R4 ; z=c+d 128 St R5,X(R10) ; x M(X) 132 St R6,Y(R10) ; y M(Y) 136 St R7,Z(R10) ; x M(Z) a) asemblerski program Aktivnost protočnog stepena Taktni interval FD Read PC Write IR Lw Lw Lw Lw Add Sub Add St St St OF Write reg_a R1 R2 R3 R5 R6 R7 Write reg_b (R10) (R10) (R10) (R10) R2 R3 R4 R10 R10 R10 EX Write MAR reg_b+ reg_b+ reg_b+ reg_b+ reg_b+ reg_b+ reg_b+ ofset_a ofset_b ofset_c ofset_d ofset_x ofset_y ofset_z Write MDR R1+R2 R2-R3 R3+R4 R5 R6 R7 WB Write RF R1 R2 R3 R4 R5 R6 R7 Write Mem R5 R6 R7 Write PC b) vremenski dijagram Slika 4.14 Princip rada RISC procesora ciklus-po-ciklus za sekvencu instrukcija x=a+b; y=b-c; z=c+d b) Odgovarajuća sekvenca instrukcija na asemblerskom jeziku kao i vremenski dijagrami karakteristični za izvršenje sekvence prikazani su na slici

195 Adrese (decimalne) Instrukcija komentar 100 Lw R1,A(R10) ; R1<-a 104 Lw R2,B(R10) ; R2<-b 108 Lw R3,C(R10) ; R3<-C 112 Nop 116 Add R5,R1,R2 ; var<-a+b 120 Nop 124 Nop 128 Add R5,R3,R4 ; zbir=c+var 132 Nop 136 Nop 140 St R5,ZBIR(R10) a) Program na asemblerskom jeziku kada postoje zavisnosti po podacima a ne postoji premošćavanje Aktivnost protočnog stepena Taktni interval FD Read PC Write IR Lw Lw Lw Nop Add Nop Nop Add Nop Nop St OF Write reg_a R1 R4 R5 Writereg_B (R10) (R10) (R10) R2 R3 R10 EX Write MAR reg_b+ reg_b+ reg_b+ reg_b+ ofset_a ofset_b ofset_c ofset_zbir Write MDR R1+R2 R3+R4 R5 WB Write RF R1 R2 R3 R4 R6 R5 Write Mem R5 Write PC b) vremenski redosled kada postoje zavisnosti po podacima a ne postoji premošćavanje Slika 4.15 : Princip rada RISC mašine ciklus-po-ciklus kod izvršenja sekvence instrukcija var=x+y; zbir=var+c; kada postoji zavisnost po podacima

196 c) Adresa Instrukcija komentar 100 Lw R1,A(R10) ; R1<- a 104 Lw R2,B(R10) ; R2<-b 108 Lw R3,C(R10) ; R3<- C 112 Add R4,R1,R2 ; var=a+b 116 Add R5,R3,R4 ; zbir=var+c 120 St R5,zbir(R10) ; a) Program na asemblerskom jeziku kada postoje zavisnosti po podacima a izvedeno je i premošćavanje Aktivnost protočnog stepena FD OF Taktni interval Read PC Write IR Lw Lw Lw Add Add St Write reg_a R1 R1+R2 R3+R4 Write_regB (R10) (R10) (R10) R2 R3 R10 EX Write MAR reg_b+ reg_b+ reg_b+ reg_b+ ofset_a ofset_b ofset_c ofset_zbir Write MDR R1+R2 R3+R4 R3+R4 Write status WB Write RF Write Mem Write PC R1 116 R2 120 R b) Vremenski redosled izvršenja instrukcija kada je izvedeno premošćavanje Slika 4.16 Program na asemblerskom jeziku i vremenski dijagram za slučaj b) kada je premošćavanje izvedeno R4 132 R

197 Zadatak 4.17 Za RISC procesor prikazan na slici 4.13 napisati programsku sekvencu na osnovu koje se određuje koja je od dve promenljive a i b, veća, tj. manja. Inicijalno, promenljiva a je smeštena u registar R1, premenljiva a je smeštena u registar R1, promenljiva b u registar R2, veću vrednost čuvati u R3 a manju u R4. Usvojiti da je početna adresa programa 100D, a R0=0 Odgovor Sekvenca instrukcija na asemblerskom jeziku koja se koristi za određivanje minimalne i maksimalne vrednosti ima sledeći oblik Adresa Instrukcija komentar 100 BGE R1,R2,+40 ; if R1>=R2 go to LAB1 104 Nop 108 Nop 112 Nop 116 Add R3,R2,R0 ; Move max, b 120 Add R4,R1,R0 ; Move min, a 124 J +24 ; jump to LAB2 128 Nop 132 Nop 136 Nop LAB1: 140 Add R3,R1,R0 ; Mov max, a 144 Add R4,R2,R0 ; Mov min, b LAB2: Napomena: Nakon pribavljanja tekuće instrukcije PC se ne inkrementiras za 4 još u fazi FD kako se to izvodi kod većine RISC procesora nego tek u fazi WB. Zbog toga su iznosi skokova na LAB1 i LAB2 +40 i +24, a ne +36 i +20, respektivno. 4-36

198 Tip aktivnosti Taktni interval FD Read PC Write IR BGE Nop Nop Nop Add Add J Nop Nop Nop OF Write reg_a R1 R2 R1 Write_regB R2 EX Write MAR Write MDR R2 R1 Write status R1>=R2 WB Write RF R3 R4 Write Mem Write PC Tip aktivnosti a) vremenski dijagram kada do uslovnog grananja ne dođe Taktni interval FD Read PC Write IR BGE Nop Nop Nop Add Add OF Write reg_a R1 R1 R2 Write_regB R2 EX Write MAR Write DDR R1 R2 Write status R1>=R2 WB Write RF R3 R4 Write Mem Write PC b) vremenski dijagram kada do uslovnog grananja dođe Slika 4.17 : Vremenski dijagrami - efekat instrukcije uslovnog grananja 4-37

199 S obzirom da procesor ne može da odredi adresu naredne instrukcije za tri taktna intervala neophodno je da kompilator ubaci tri Nop instrukcije nakon instrukcije uslovnog grananja BGE (branch greater or equal). Na slličan način potrebno je da kompilator ubaci tri Nop instrukcije nakon instrukcije bezuslovnog grananja J (jump). Na sl. 4.17a) prikazan je vremenski dijagram kada do (uslovnog) grananja na dođe a na sl. 4.17b) kada je uslov ispunjen i dođe do grananja. Zadatak 4.18 Ukazati na efekat tehnike predikcije grananja, ako RISC procesor sa sl izvršava programsku sekvencu iz prethodnog zadatka pod istim uslovima (misli se na dodelu promenljivih registrima). Odgovor Programska sekvenca na asemblerskom jeziku je oblika Adresa Instrukcija komentar 100 BGE R1,R2,+4 ; if R1>=R2 go to LAB1 104 Add R3,R2,R0 ; Move max, b 108 Add R4,R1,R0 ; Move min, a 112 J +3 ; go to LAB2 LAB1: 116 Add R3,R1,R0 ; Move max, Add R4,R2,R0 ; Move min, b LAB2: Uočimo da u ovaj programskoj sekvenci ne postoje instrukcije tipa Nop. Vremenski dijagram koji prikazuje kako se program izvršava ako do (uslovnog) grananja na dođe prikazan je na slici 4.18b). Kao što se vidi sa slike 4.18a) procesor izvršava instrukcije na adresama 104, 108 i 112 kao da grananje ne postoji. Ali u 4-38

200 taktnom intervalu 3, kada je predikcija potvrđena, procesor produžava da pribavlja narednu instrukciju sa adrese 116, ne znajući da je prethodna instrukcija bita J, tj. bezuslovno grananje. U taktnom intervalu 6 procesor odredi da je vrednost adrese skoka 124, on puni ovu vrednost u PC i pribavlja instrukciju u registar IR u taktnom intervalu 7. U tom momentu, prethodne tri instrukcije koje su startovale u taktnim intervalima 4,5 i 6, uključujući i instrukciju na lokaciji 124, se prazne iz protočnog sistema, tj. anulira se njihov efekat. Da bi odredio minimalnu i maksimalnu vrednost, u ovom slučaju, procesoru su potrebna sedam taktna intervala. Na dijagramu sa slike 4.18b) prikazan je vremenski redosled događaja kada se obavi uslovno grananje. Procesor izvršava prve četiri instrukcije kao u prethodnom slučaju. Ipak kada u taktnom intervalu 3 procesor odredi da do grananja mora da dođe, puni se adresa grananja 116 u PC i prazni protočni sisem, tj. anulira započeto izvršenje instrukcija na adresama 104, 108 i 112. Uočimo da će se adresa 104 napuniti nezavisno od toga što je ona naredna adresa u sekvenci instrukcija. Procesor zatim produžava da izvršava instrukcije na adresama 116, 120 i 124. U ovom slučaju, da bi obavio istu aktivnost, procesoru su potrebna 6 taktna intervala. Znači ako usvojimo da je verovatnoća da će dogradnja da dođe do 50%, tada procesor, koristeći predikciju grananja, određivaće minimalnu i maksimalnu vrednost, u proseku 6,5 taktna intervala, što je približno 28% brže u odnosu na to kada predikcijagrananja ne postoji. Prethodna diskusija jasno ukazuje na prednosti koje nudi predikcija grananja. Naime, procesor kod koga mehanizam predikcije grananja nije implementiran u proseku "trošiće" nekoliko taktnih intervala više (po instrukciji uslovnog grananja) u odnosu na onaj procesor kod koga je mehanizam predikcije implementiran. 4-39

201 Tip aktivnosti FD OF Taktni interval Read PC Write IR BGE Add Add J Add Add Write reg_a R1 R1 R1 R1 R2 Write_regB R2 EX Write MAR Write DDR R2 R1 R1 Write status R1>=R2 WB Write RF R3 R4 Write Mem Write PC a) vremenski dijagram kada do grananja ne dođe protočni sistem se prazni Tip Taktni aktivnosti interval FD Read PC Write IR BGE Add Add J Add Add OF Write reg_a R1 R2 R1 R1 R2 Write_regB R2 EX Write MAR Write DDR R2 R1 R2 Write status R1>=R2 WB Write RF R3 R4 Write Mem Write PC b) vremenski dijagram kada do grananja dođe protočni sistem se prazni Slika 4.18 : Rad RISC procesora kod koga je implementiran mehanizam predikcije grananja 4-40

202 Test pitanje 4.43 Na koji način se može ostvariti odlaganje izvršenja (delaying of execution) instrukcija kod RISC procesora? Usvojiti da protočni sistem čine sledeći stepeni: IF, ID, OF, EX i WB. Odgovor Da bi ukazali na ovaj problem, razmotrimo izvršenje instrukcija i1 i i2 izmedju kojih postoji zavisnost po podacima: i1: Add r2,r3,r4 ; r2 = r3 + r4 i2: Add r5,r2,r1 Odlaganje izvršenjka se može ostvariti na sledeća dva načina: Kod prvog rešenja odlaže se izvršenje aktivnosti stepena OF ili IF instrukcije i2 za dva taktna intervala, kako je to prikazano na Slici taktni intervali i1 IF ID OF EX WB i2 IF ID OF EX WB a) Odlaganje izvr{enja faze OF taktni intervali i1 IF ID OF EX WB i IF ID OF EX WB b) Odlaganje izvr{enja faze IF Slika 4.19 Odlaganje izvršenja Da bi se umetnulo kašnjenje, u procesor je potrebno ugraditi dodatnu hardversku komponentu koja se naziva pipeline interlock 4-41

203 - PI. Blok PI detektuje zavisnosti i unosi kašnjenje kod izvršenja izmedju zavisnih instrukcija, sve dok se konflikt ne reši. b) Kod drugog rešenja, kompilator rešava problem zavisnosti. U toku kompilacije kompilator detektuje zavisnosti izmedju podataka i instrukcija, a nakon toga, preuredjuje ove instrukcije tako da zavisnosti nisu više hazardne (opasne) sa aspekta rada sistema. U slučaju kada nije moguće da se izvrši preuredjenje instrukcija, umetaju se instrukcije tipa Nop i na taj način stvara kašnjenje. Ilustracije radi, posmatrajmo izvršenje sledećih instrukcija: i1: Add r2,r3,r4 i2: Add r5,r2,r1 i3: Add r6,r6,r7 i4: Add r8,r8,r7 Redosled izvršenja ovih instrukcija se može preurediti tako da se i3 i i4, koje nisu zavisne od i1 i i2, ubacuju izmedju i1 i i2 na sledeći način: taktni intervali i1 IF ID OF EX WB i2 IF ID OF EX WB IF ID OF EX WB IF ID OF EX WB Test pitanje 4.44 Objasniti princip rada tehnike premošćavanja. 4-42

204 Odgovor Termin premošćavanje (bypassing / forwarding) se odnosi na tehniku direktne predaje rezultata jedne instrukcije drugoj instrukciji, sa ciljem da se izbegne (eliminiše), najpre memorisanje dobijenog rezultata, a nakon toga, i njegovo pozivanje. Premošćavanje se može ostvariti na nivou kompilatora, čime se izbegavaju nepotrebna obraćanja memorijskim lokacijama putem prosledjivanja vrednosti preko registara a ne preko memorijskih lokacija. Premošćavanje (prosledjivanje) rezultira povećanjem brzine izršenja operacija iz razloga što procesor brže pristupa svojim internim registrima u odnosu na memorijske lokacije. Premošćavanje se, takodje, može implementirati i na hardverskom nivou kako bi se eliminisali protočni ciklusi koji se odnose na čitanje sadržaja registra čiji je sadržaj bio ažuriran u prethodnom protočnom stepenu. U ovom slučaju, premošćavanjem se eliminišu pristupi registrima na taj način što se koriste brži putevi za prenos podataka. Kompilator koristi sledeće tri tehnike premošćavanja: Store-Fetch Forwarding - SFF Fetch-Fetch Forwarding - FFF Store-Store Overwriting - SSO Store i Fetch se odnose, prvo na upis operanada u meoriju, a nakon toga čitanje istih iz memorije. U svakom slučaju, neophodno je eliminisati nepotrebno obraćanje memoriji. Kod SFF pristupa, operand se direktno uzima iz procesorskooperandskog registra. Na primer, sledeći kôd: St 200(r0),r2 ; kopira se sadržaj registra r2 u memor. ; lokaciju 200 pri čemu je r0 jednako 0 Lw r3,200(r0) ; kopira sadr`aj mem. lokacije 200 u reg. r3 4-43

205 se može redukovati: St 200(r0),r2 Add r3,r2,r0 čime se eliminiše jedno obraćanje memoriji. Kod FFF pristupa, višestruki pristupi istoj memorijskoj lokaciji se eliminišu ako se učini da se svi pristupi odnose na operand kojise, nakon čitanja, smešta u jedan od registara procesora. Tako na primer, Lw r2,200(r0) Lw r3,200(r0) Lw r4,200(r0) se može redukovati na: Lw r2,200(r0) Add r3,r2,r0 Add r4,r2,r0 čime se eliminišu dva obraćanja memoriji. Kod SSO pristupa, eliminiše se jedna ili veći broj operacija tipa upis bez posrednih operacija koje se odnose na pamćenje rezultata. Tako na primer, St 200(r0),r2 St 200(r0),r3 se može redukovati na: St 200(r0),r3 Ali, treba naglasiti, da ovo pojednostavljenje može često da bude uzrok grešaka kod najvećeg broja programa. Interno premošćavanje (Internal forwarding) predstavlja hardversko premošćavanje koje se implementira od strane registara procesora ili puteva (magistrala) podataka i nije vidljivo 4-44

206 programeru. Intrerno premošćavanje se može aplicirati na protočnom izvršenju instrukcija sa ciljem da se eliminišu obraćanja registrima opšte namene, tj. registrima RF polja. Na primer, kod sledeće kodne sekvence: Add r3,r2,r5 Subi r4,r3,#8 operaciji Subi je potreban sadržaj registra r3 koji se generiše od strane instrukcije Add. Instrukcija će se zaustaviti u stepenu OF i čekaće da vrednost r3 postane važeća. Internim premošćavanjem prosledjuje se vrednost koju treba smestiti u r3, direktno, na ulaz stepena EX. Bez premošćavanja, operacija Subi treba da sačeka ažuriranje vrednosti r3, pa nakon toga može da sledi čitanje vrednosti registra r3. Uočimo da, i u ovom slučaju, dolazi do zastoja od jedne vremenske jedinice, ali, kada premošćavanja ne bi bilo, zastoj bi bio dva puta duži (čitalac treba da odgovori na pitanje da li sa izlaza stepena EX može da se izvrši premošćavanje na ulaz stepena EX, kako je to isprekidanim vezama, prikazano na Slici 4.20). Premošćavanje se može proširiti na prosledjivanje rezultata većem broju instrukcija, kako je to prikazano u sledećoj programskoj sekvenci: Add r3,r2,r5 Subi r4,r3,#8 Subi r6,r3,#4 Obe Subi instrukcije koriste vrednost koja se čuva u r3. Za slučaj da na Slici 4.20 postoje oba premošćavanja, do zastoja u radu sistema ne bi dolazilo. 4-45

207 U principu, premošćavanje iziskuje dodatnu logiku u protočnoj implementaciji, ali je kao princip veoma atraktivno kada se govori o povećanju performansi RISC procesora. premo{}avanje sa WB na EX instrukcije IF OF EX WB ka r3 (r3 pripada RF polju premo{}avanje sa EX na EX (opciono) write r3 Add r3,r2,r5 IF OF EX WB premo{- }avanje Subi r4,r3,#8 IF OF zastoj EX WB... IF zastoj OF EX WB Slika 4.20 Princip rada internog premošćavanja 4-46

208 Ispitni zadaci maj Zadatak 3 a) Neka je dat sledeći kôdni segment napisan na programskom jeziku C: int i; int a[100]; for (i=0; i<100; i++) a[i]=a[i]+c; Napisati odgovarajući kôd na asemblerskom jeziku mikroprocesora Mips. Koristiti registar $8 za čuvanje promenljive i, a registar $9 za čuvanje konstante c. Početna adresa polja (vektora) je 1000 h. Imati u vidu da za čuvanje celobrojne vrednosti rezervišu po 4 bajta, kao i da se sve memorijske adrese zadaju kao bajt adresibilne. b) Koliko Mips-ovih instrukcija se izvrše za kôdni segment definisan stavkom pod (a)? c) Koliko se Mips-ovih instrukcija izvrši kada se kôdni segment na C-u promeni na sledeći način? for (i=0; i<100; i=i+2) { a[i]=a[i]+c; a[i+1]=a[i+1]+c; } Odgovor a) Za ovaj problem usvojimo da postoji jedan skriveni delay slot koga nećemo brojati kao instrukciju mikroprocesora Mips. Odgovarajuća sekvenca na asemblerskom jeziku mikroprocesora Mips biće oblika: Li $8,0x1000 # početna adresa polja Li $11,4496 # krajnja adresa polja, kao decim. Loop: Lw $10,0($8) # a[i] 4-47

209 Add $10,$10,$9 # a[i]=a[i]+c Sw $10,0($8) # smesti a[i] u memoriju Addi $8,$8,4 # dodaj 4 bajta za a[i+1] Bne $8,$11,Loop # da li je kraj polja? J $31 # kraj programa b) unutrašnja petlja ovog programa ima 5 linija, a ponavlja se 100 puta, to znači da se ukupno izvršavaju 503 Mips-ove instrukcije c) Li $8,0x1000 # početna adresa polja Li $12,4496 # krajnja adresa polja, decimalna Loop: Lw $10,0($8) # a[i] Lw $11,4($8) # a[i+1] Add $10,$10,$9 # a[i]=a[i]+c Add $11,$11,$9 # a[i+1]=a[i+1]+c Sw $10,0($8) # smesti a[i] u memoriju Sw $11,4($8) # smesti a[i+1] u memoriju Addi $8,$8,8 # dodaj 8 bajtova za a[i+2] Bne $8,$12,Loop # da li je kraj polja? J $31 # kraj programa U ovom slučaju, unutrašnja petlja ima 8 linija, a ponoviće se 50 puta, a to znači da će se izvršiti 403 Mips-ove instrukcije. maj Zadatak 4 Sledeći kodni segment se izvršava na RISC procesoru koga čine pet protočna stepena prikazana na slici 1 (maj-01-4). 1. R1 R2+R3 2. R1 R1+R2 3. R2 R3+R4 4. R5 R6+R7 5. R5 R5+R7 6. R6 R1+R2 4-48

210 Pokazati kako izgleda konačni kôd i tok izvršenja programskog segmenta ako se konflikti (hazardi) po podacima rešavaju a) ubacivanjem Nop operacija b) preuredjenjem instrukcija c) korišćenjem tehnike premošćavanja a kompilator ubacuje operacije tipa Nop. FE ID Sel Reg EX Sto Reg Slika 1 (maj-01-4) Peto-stepeno organizovani RISC procesor Odgovor a) 1: R1 R2+R3 2: R1 R1+R2 3: R2 R3+R4 4: R5 R6+R7 5: R5 R5+R7 6: R6 R1+R2 b) 1: R1 R2+R3 4: R5 R6+R7 4': Nop 2: R1 R1+R2 3: R2 R3+R4 5: R5 R5+R7 6: R6 R1+R2 4-49

211 1 F D S E W 4 F D S E W 4' F D S E W Nop 2 F D S E W 3 F D S E W 5 F D S E W 6 F D S E W c) 1: R1 R2+R3 1': Nop 2: R1 R1+R2 3: R2 R3+R4 4: R5 R6+R7 4': Nop 5: R5 R5+R7 6: R6 R1+R2 1 F D S E W FE ID Sel Reg EX Sto Reg 1' F D S E W Nop 2 F D S E W 3 F D S E W 4 F D S E W 4' F D S E W Nop 5 F D S E W 6 F D S E W 4-50

212 septembar Zadatak 2 a) Sledeći programski segment se izvršava na tro-stepenom protočno organizovanom RISC procesoru sa slike 1 (sep-01-2). 1: R1 3 2: R2 R2+R3 3: R3 R3+R4 4: R4 R1+R2 5: R1 R1-1 6: if (R10 0) then go to 2 7: R5 R6+R7 8: R6 R7+R8 Pokazati konačnu verziju programa i trag izvršenja ako se konflikti zbog grananja rešavaju: i) ubacivanjem Nop operacija ii) preuredjenjem redosleda izvršenja instrukcija iii) ubacivanjem zastoja. b) Ponoviti stavku pod a) za RISC procesor koji koristi četvorostepenu protočnu obradu. FE DE & Sel_Reg EX & Sto_Reg FE DE & Sel_Reg EX Sto_Reg Slika 1 (sep-01-2) Tro- i četvoro-stepeno organizovan RISC procesor Odgovor 4-51

213 a) i) 1 FE DS ES R1 3 2 FE DS ES R2 R2+R3 3 FE DS ES R3 R3+R4 4 FE DS ES R4 R1+R2 5 FE DS ES R1 R1-1 6 FE DS ES if (R10 0) then go to 2 6' FE DS ES Nop 6'' FE DS ES Nop 2/7 FE DS ES R2 R2+R3/R5 R6+R7 ii) iii) 1 FE DS ES R1 3 2 FE DS ES R2 R2+R3 3 FE DS ES R3 R3+R4 6 FE DS ES if (R10 0) then go to 2 4 FE DS ES R4 R1+R2 5 FE DS ES R1 R1-1 7 FE DS ES R5 R6+R7 8 FE DS ES R6 R7+R8 1 FE DS ES R1 3 2 FE DS ES R2 R2+R3 3 FE DS ES R3 R3+R4 4 FE DS ES R4 R1+R2 5 FE DS ES R1 R1-1 6 FE DS ES if (R10 0) then goto 2 2/7 FE FE DS ES 3/8 FE DS ES 4-52

214 b) i) 1 FE DS EX SR R1 3 ii) iii) 2 FE DS EX SR R2 R2+R3 3 FE DS EX SR R3 R3+R4 4 FE DS EX SR R4 R1+R2 5 FE DS EX SR R1 R1-1 6 FE DS EX SR if (R10 0) then go to 2 6' FE DS EX SR Nop 6'' FE DS EX SR Nop 2/7 FE DS EX SR 1 FE DS EX SR R1 3 2 FE DS EX SR R2 R2+R3 3 FE DS EX SR R3 R3+R4 6 FE DS EX SR if (R10 0) then go to 2 4 FE DS EX SR R4 R1+R2 5 FE DS EX SR R1 R1-1 7 FE DS EX SR R5 R6+R7 8 FE DS EX SR R6 R7+R8 1 FE DS EX SR R1 3 2 FE DS EX SR R2 R2+R3 3 FE DS EX SR R3 R3+R4 4 FE DS EX SR R4 R1+R2 5 FE DS EX SR R1 R1-1 6 FE DS EX SR if (R10 0) then goto 2 2/7 FE FE DS EX SR 3/8 FE DS EX SR 4-53

215 oktobaarii Zadatak 2 a) Sledeća programska sekvenca se koristi za dodavanje broja 2 svakom elementu vektora koga čine 100 elemenata. Vektor je lociran počev od memorijske lokacije V. Indeksni registar X pokazuje na broj elemenata u vektoru: Loop: Lda V(X) Add #2 Sto V(X) Dec X Bnz Loop ; ACC M(V+X) ; ACC ACC+2 ; M(V+X) ACC ; X X-1 ; if (X 0 branch to Loop) Pokazati kako se izvršava ova sekvenca kroz protočni sistem koga čine sledećih šest stepena: FE (Fetch instruction), DE (Decode instruction), EA (Effective Address calculation), FO (Fetch Operand), EX (Execute) i WB (Write Back ili Store Results). b) Izvršiti odmotavanje petlje definisane pod a) tako da se za jedan prolaz kroz petlju procesiraju dva elementa. Napomene: 1) Inicijalno smatrati da je protočni sistem prazan. 2) Da se ne bi, usled zavisnosti, zaustavljao rad protočnog sistema (tj. ubacivali mehurovi od strane hardvera procesora) kompilator analizira kôd i vrši ubacivanje operacije tipa Nop na svim mestima gde je to potrebno. 3) Operacija tipa Lda smešta operand u ACC u toku faze FO. 4) Operacija tipa Sto smešta sadržaj ACC-a u memoriju u toku faze WB. 5) Operacije tipa Add i Dec izračunavaju svoj rezultat toku faze EX, tj. rezultat je dostupan za korišćenje jer CPU ima izvedenu tehniku premošćavanja. 6) Ishod grananja kod instrukcije uslovnog grananja zna se nakon završetka faze EX, tj. programski brojač se puni na kraju faze EX. 4-54

216 7) Arhitektura CPU-a je tipa Harvard, tj. procesor ima izdvojene magistrale za podatke i instrukcije. Odgovor FE DE EA FO EX WB Lda Nop FE DE EA FO EX WB Add Nop Nop FE DE EA FO EX WB Sto Nop Nop Nop FE DE EA FO EX WB Dec Nop Nop FE DE EA FO EX WB Branch Nop Nop Nop Nop Lda (dr. iter) Ako bi se instrukcije izvršavale strogo sekvencijalno tada bi bilo potrebno: T sek = =3000 taktnih impulsa Kod protočnog izvršenja imamo: T pro = =1705 taktna impulsa Programska sekvenca koju generiše kompilator je oblika: 1: Lda V(X) - tekuća iteracija 1': Nop 2: Add #2 2': Nop 2'': Nop 3: Sto V(X) 3': Nop 3'': Nop 3''': Nop 4: Dec X 4-55

217 4': Nop 4'': Nop 5: Branch 5': Nop 5'': Nop 5''': Nop 5 iv : Nop 1: - naredna iteracija Dobitak iznosi D T sek 1 = = = T pro 1.76 tj. protočni sistem 1.76 puta brže izvršava program u odnosu na strogo sekvencijalno izvršenje. FE DE EA FO EX WB Lda Nop FE DE EA FO EX WB Add Nop Nop FE DE EA FO EX WB Sto Nop Nop Nop FE DE EA FO EX WB Dec Nop Nop FE DE EA FO EX WB Lda Nop FE DE EA FO EX WB Add Nop Nop FE DE EA FO EX WB Nop Nop Nop FE DE EA FO EX WB Nop Branch Nop Nop FE DE Nop EA FO EX WB Branch Nop Programska sekvenca koja se generiše nakon dodavanja petlje od strane kompilatora je sledećeg oblika: Sto Dec Nop Nop Nop nar. iter. 4-56

218 Lda V(X) Nop Add #2 Nop Nop Sto V(X) Nop Nop Nop Dec X Nop Nop Lda V(X) Nop Add #2 Nop Nop Sto V(X) Nop Nop Nop Dec X Nop Nop Bnz Loop Nop Nop Nop Nop Vreme potrebno da se izvrši programska sekvenca nakon odmotavanja petlje iznosi: T od = =1455 taktnih intervala Dobitak iznosi: D = =

219 april Zadatak 3 a) Kod peto-stepenog protočno organizovanog sistema sa jednim memorijskim portom dolazi do pojave strukturnog hazarda. Za sledeću sekvencu instrukcija identifikovati sve zastoje koji su posledica strukturnih hazarda: Lw r1,0(r2) Addi r4,r3,#1 Sw r3,0(r2) Add r5,r1,r1 Sub r4,r4,r2 b) Kako se može preurediti sekvenca instrukcija da bi se izbegli strukturni hazardi? Odgovor a) Lw IF ID EX ME WB Addi IF ID EX ME WB Sw IF ID EX ME WB Add IF ID EX ME WB Sub IF ID EX ME WB b) Da bi se izbegli strukturni hazardi uvodi se veći broj portova. Ako se koristi preuredjenje instrukcija data sekvenca instrukcija se može preurediti na sledeći način: Addi IF ID EX ME WB Lw IF ID EX ME WB Sub IF ID EX ME WB Sw IF ID EX ME WB Add IF ID EX ME WB 4-58

220 maj Zadatak 2 a) Na slici 1 (maj-02-2) prikazana je organizacija jednog superskalarnog procesora koji može da inicira dve instrukcije po ciklusu u slučaju da ne postoje konflikti zbog korišćenja resursa i zbog zavisnosti po podacima. U suštini postoje dva protočna sistema sa po četiri stepena (Fetch, Decode, Execute i Store). U stepenu Execute postoje tri protočne i direktno upravljane funkcionalne jedinice (multiplier, adder i load), deljive od strane oba protočna stepena. Na svaku funkcionalnu jedinicu preko multipleksera dovode se signali iz blokova D1, S1 i S2 odnosno iz blokova D2, S1 i S2. Odrediti zavisnosti koje postoje u datom programskom segmentu: Lw r1,a(r0) Lw r2,b(r0) Add r3,r1,r2 Mul r5,r3,r4 Add r6,r4,r0 Mul r7,r6,r6 MUX multiplier m 1 m 2 m 3 S 1 F 1 D 1 adder a 1 a 2 F 2 D 2 load S 2 e 1 Fetch Decode Execute Store Slika 1 (maj-02-2) Superskalarni procesor 4-59

221 b) Za četvoro-stepeno protočno organizovani RISC procesor prikazati trag izvršenja programske sekvence date pod a) koristeći preuredjenje redosleda instrukcija. Odgovor a) 1: F1 D1 E2 S1 2: F2 D2 E2 S2 3: F1 D1 A1 A2 S1 4: F2 D2 M1 M2 M3 S2 5: F1 D1 A1 A2 S1 6: F2 D2 M1 M2 M3 S2 b) 1: F1 D1 E2 S1 5: F2 D2 A1 A2 S2 2: F1 D1 E1 S1 3: F2 D2 A1 A2 S2 6: F1 D1 M1 M2 M3 S1 4: F2 D2 M1 M2 M3 S2 mart Zadatak 3 Na slici 1 (mar-00-3) prikazana je organizacija jednog superskalarnog procesora. Procesor može da inicira dve instrukcije po ciklusu u slučaju da ne postoje konflikti zbog korišćenja resursa i konflikti zbog zavisnosti po podacima. U suštini postoje dva protočna sistema sa po četiri procesna stepena (Fetch, Decode, Execute i Store). Svaki protočni sistem ima svoj Fetch i Store stepen. Četiri funkcionalne jedinice (multiplier, adder, logic unit i store unit) su dostupne za korišćenje u stepenu 4-60

222 Execute i deljive su od strane oba protočna stepena na dinamičkoj osnovi. Obe Store jedinice se mogu dinamički koristiti od strane oba protočna stepena, u zavisnosti od dostupnosti u pojedinom ciklusu. Postoji lookahead prozor koji ima svoju logiku za fetch i decode. Prozor se koristi za pripremanje instrukcija unapred (instruction lookahead) kod iniciranja izvršenja instrukcija van redosleda (out-of-order instruction issue). Neka se na procesoru izvršava sledeći programski segment: I1: Lw R1,A ; R1 M(A) I2: Add R2,R1 ; R2 (R2)+(R1) I3: Add R3,R4 ; R3 (R3)+(R4) I4: Mul R4,R5 ; R4 (R4) (R5) I5: Not R6 ; R6 /(R6) I6: Mul R6,R7 ; R6 (R6) (R7) a) Odrediti koje zavisnosti u datom programskom segmentu postoje? b) Prikazati protočnu aktivnost programa koristeći politike iniciranje-izvršenja-instrukcije-po-redosledu (in-order-issue) i završetak-instrukcije-po-redosledu (in-order-completion). c) Ponoviti aktivnost pod b) za slučaj out-of-order-issue i outof-order-completion. Fetch stepen Decode stepen Execute stepen multiplier m 1 m 2 m 3 Store stepen f 1 d 1 f 2 d 2 f 3 d 3 lookahead prozor adder a 1 a 2 logic e 1 load e 2 S1 S2 Slika 1 (mar-00-3) Dvo-protočni superskalarni procesor 4-61

223 Odgovor a) Instrukcija Read Write I1: Lw R1,A M(A) R1 I2: Add R2,R1 R1,R2 R2 I3: Add R3,R4 R3,R4 R3 I4: Mul R4,R5 R4,R5 R4 I5: Not R6 R6 R6 I6: Mul R6,R7 R6,R7 R6 Zavisnosti su: RAW: (I2,I1) zbog R1 (I6,I5) zbog R6 WAW: (I6,I5) zbog R6 WAR: (I4,I3) zbog R4 (I6,I5) zbog R6 b) I1 F1 D1 E2 S1 I2 F2 D2 A1 A2 S2 I3 F1 D1 A1 A2 S1 I4 F2 D2 M1 M2 M3 S2 I5 F1 D1 E1 S1 I6 F2 D2 M1 M2 M3 S2 c) I1 F1 D1 E2 S1 I2 F2 D2 A1 A2 S2 I3 F1 D1 A1 A2 S1 I4 F2 D3 M1 M2 M3 S2 I5 F1 D1 E1 S1 I6 F2 D2 M1 M2 M3 S2 4-62

224 april Zadatak 2 Sledeća programska sekvenca se izvršava na mikroprocesoru Mips. Odrediti sadržaje registara nakon izvršenja sekvence. Pre početka izvršenja sekvence $0=0, $2=0x , $6=0x7555AAAA, a sadržaj memorijske lokacije na adresi labela1=0x Svi brojevi kojima prethodi 0x su predstavljeni u heksadecimalnoj prezentaciji, sa nulama na MS pozicijama cifara kada su te cifre izostavljene. Brojevi bez 0x su decimalni. Svi odgovori moraju biti u heksadecimal. prezentaciji. Slt $3,$2,$6 Bne $3,$0,skok1 Xori $2,$0,123 Skok1: Addi $4,$2,-4 Ror $6,$6,4 Lui $4,0x4321 Ori $4,$4,0x5678 Addi $5,$4,0xCABE Lw $7,labela1($0) $0=?; $2=?; $3=1; $4=?; $5=?; $6=?; $7=?; mem(labela1)=? Odgovor $0=0; $2=0x ; $3=1; $4=0x ; $5=0x ; $6=0xA7555AAA; $7=0x ; mem(labela1)=0x jun Zadatak 3 a) Koliko je ciklusa potrebno za iniciranje izvršenja sledeće programske sekvence na out-of-order superskalarnom procesoru sa dve EX-U jedinice. Latencija operacije Ld iznosi tri ciklusa, a latencija ostalih operacija dva ciklusa. Svaka od EX-U jedinica može da izvrši bilo koju operaciju. Kod planiranja izvršenja instrukcija koristiti gramžljiv algoritam, i usvojiti da je instrukcioni prozor procesora dovoljno veliki da obuhvati ukupnu programsku sekvencu. 4-63

225 Ld r4,(r5) Ld r7,(r8) Add r9,r4,r7 Ld r10,(r11) Mul r12,r13,r14 Sub r2,r3,r1 St (r2),r15 Mul r21,r4,r7 St (r22),r23 St (r24),r21 b) Pretpostavimo da procesor iz stavke a) ima jednu EX-U jedinicu koja izvršava samo memorijske instrukcije (Load i Store) i drugu koja izvršava ne-memorijske instrukcije (Add, Sub, Mul,...). Ako su parametri procesora isti kao pod stavkom a) koliko je ciklusa potrebno za iniciranje izvršenja programske sekvence. Odgovor a) Za iniciranje izvršenja instrukcije potrebna su 6 ciklusa Ciklus 1: Ld r4,(r5) Ld r7,(r8) Ciklus 2: Ld r10,(r11) Mul r12,r13,r14 Ciklus 3: Sub r2,r3,r1 St (r22),r23 Ciklus 4: Add r9,r4,r7 Mul r21,r4,r7 Ciklus 5: St (r2),r15 Ciklus 6: St (r24),r21 b) za iniciranje izvršenja instrukcija potrebna su 8 ciklusa Ciklus 1: Ld r4,(r5) Mul r12,r13,r14 Ciklus 2: Ld r7,(r8) Sub r2,r3,r1 Ciklus 3: Ld r10,(r11) Ciklus 4: St (r2),r15 Ciklus 5: Add r9,r4,r7 St (r22),r23 Ciklus 6: Mul r21,r4,r7 Ciklus 7: ne vrši se iniciranje Ciklus 8: St (r24),r

226 Memorije

227 Zadatak 5.1 Na slici 5.1 prikazana je logička šema i tablica istine, linijskog dekodera 3-u-8 tipa 74LS138, a na slici 5.2 EPROM memorija tipa 2764 kapaciteta 8kB. EPROM prostor mikroračunara zasnovan na mikroprocesoru 8088 kapaciteta 64kB zauzima opseg adresa od F0000h do FFFFFh. Koristeći dekodersko kolo 74LS138, logičko NAND kolo sa tri ulaza tipa 74LS10 i EPROM memoriju tipa 2764 pokazati kako izgleda struktura memorijskog sistema, kao i sistema za selekciju adresa. Koliko EPROM čipova je potrebno ugraditi? Naznačiti za koji je opseg adresa odgovarajući izlaz dekodera 74LS138 važeći. Selektors ki ulazi Ulazi Izlazi Izlazi Ulazi dozvole rada Slika 5.1: Logička šema i tablica istine 3-u-8 linijskog dekodera 74LS adrese RD ~ip selekt A0-A12 D0-D7 OE CE podaci Odgovor Slika 5.2. Memorijski čip

228 kB=2 *2 B=2 B 6 64kB=2 *2 10 B=2 16 B Adrese Podaci A0 A12 O0 O A13 A14 A15 74LS138 A16 A17 A18 A19 a) Struktura memorijskog sistema A19 A18 A17 A16 A15 A14 A13 A12 A11 A10... A0 Opseg selektov. adresa x x x... x F0000-F1FFF x x x... x F2000-F3FFF.. x.... x.... x x x x... x FE000-FFFFF b) Selekcija prostora Slika 5.3 Struktura koja koristi osam 2764 EPROM-ova za formiranje 64kB memor. prostora lociranog u adresnom prostoru F0000h - FFFFFh Zadatak 5.2 Često se kao dekoder adresa koristi bipolarni PROM. Logička šema bipolarnog PROM-a tipa TPB28L42 kapaciteta 512*8 prikazana je na slici 5.4. EPROM prostor kapaciteta 64kB, mikroračunrskog sistema zasnovanog na CPU 8088, lociran je u adresnom opsegu počev od adrese F0000h do FFFFFh. Koliko EPROM čipova tipa 2764 je potrebno ugraditi? Naznačiti za koji opseg adresa je odgovarajući izlaz PROM-dekodera važeći. 5-2

229 adrese A0-A8 dozvola rada G O0-O7 podaci Slika 5.4 Logički dijagram bipolarnog PROM tipa TPB28L42 Odgovor Adrese dekoder adresa Podaci TPB28L42 Slika 5.5 Memorijski sistem koji koristi bipolarni PROM TPB28L42 kao dekoder adresa Ulazi Izlazi G A8 A7 A6 A5 A4 A3 A2 A1 A0 O0 O1 O2 O3 O4 O5 O6 O sve ostale kombinacije Slika 5.6 Način na koji je programiran bipolarni PROM TPB28L42 5-3

230 Zadatak 5.3 Logička šema programibilnog logičkog kola tipa PAL16L8 prikazana je na slici 5.7. PAL16L8 se koristi kao dekoder adresa 64kB EPROM prostora kod mikroprocesora EPROM prostor je lociran u opsegu počev od adrese F0000h do FFFFFh. EPROM memorija je realizovana promoću čipova 2764 (8k*8). Ukazati na način kako je programirano kolo PAL16L8 i kako izgleda struktura memorijskog podsistema koju čini dekoder i osam EPROM čipova 2764? Logi~ki dijagram 5-4 Slika 5.7 Logički dijagram kola PAL16L8

231 Odgovor Programiranje čipa PAL16L8 vrši se sledećom programskom sekvencom. Sekvenca je napisana na HDL jeziku PALASM. TITLE PATTERN REVISION AUTHOR COMPANY adresni_dekoder test_kolo_1 A SIMA RUS ELEF DATE 05/20/1998 CHIP DEKODER PAL16L8 ; pins A19 A18 A17 A16 A15 A14 A13 NC NC GND ; pins NC O8 O7 O6 O5 O4 O3 O2 O1 VCC EQUATIONS /O1 = A19*A18*A17*A16*/A15*/A14*/A13 /O2 = A19*A18*A17*A16*/A15*/A14*A13 /O3 = A19*A18*A17*A16*/A15*A14*/A13 /O4 = A19*A18*A17*A16*/A15*A14*A13 /O5 = A19*A18*A17*A16*A15*/A14*/A13 /O6 = A19*A18*A17*A16*A15*/A14*A13 /O7 = A19*A18*A17*A16*A15*A14*/A13 /O8 = A19*A18*A17*A16*A15*A14*A13 Struktura memorijskog podsistema kojom se pomoću kola PAL16L8, U1, dekodiraju osam EPROM čipova 2764, U2-U9, prikazana je na slici 5.8 Slika 5.8 PAL16L8 kao dekoder adresa EPROM mem. prostora realizovan pomoću osam čipova

Projektovanje paralelnih algoritama II

Projektovanje paralelnih algoritama II Projektovanje paralelnih algoritama II Primeri paralelnih algoritama, I deo Paralelni algoritmi za množenje matrica 1 Algoritmi za množenje matrica Ovde su data tri paralelna algoritma: Direktan algoritam

More information

Mathcad sa algoritmima

Mathcad sa algoritmima P R I M J E R I P R I M J E R I Mathcad sa algoritmima NAREDBE - elementarne obrade - sekvence Primjer 1 Napraviti algoritam za sabiranje dva broja. NAREDBE - elementarne obrade - sekvence Primjer 1 POČETAK

More information

KLASIFIKACIJA NAIVNI BAJES. NIKOLA MILIKIĆ URL:

KLASIFIKACIJA NAIVNI BAJES. NIKOLA MILIKIĆ   URL: KLASIFIKACIJA NAIVNI BAJES NIKOLA MILIKIĆ EMAIL: nikola.milikic@fon.bg.ac.rs URL: http://nikola.milikic.info ŠTA JE KLASIFIKACIJA? Zadatak određivanja klase kojoj neka instanca pripada instanca je opisana

More information

Fajl koji je korišćen može se naći na

Fajl koji je korišćen može se naći na Machine learning Tumačenje matrice konfuzije i podataka Fajl koji je korišćen može se naći na http://www.technologyforge.net/datasets/. Fajl se odnosi na pečurke (Edible mushrooms). Svaka instanca je definisana

More information

Red veze za benzen. Slika 1.

Red veze za benzen. Slika 1. Red veze za benzen Benzen C 6 H 6 je aromatično ciklično jedinjenje. Njegove dve rezonantne forme (ili Kekuléove structure), prema teoriji valentne veze (VB) prikazuju se uobičajeno kao na slici 1 a),

More information

Slika 1. Slika 2. Da ne bismo stalno izbacivali elemente iz skupa, mi ćemo napraviti još jedan niz markirano, gde će

Slika 1. Slika 2. Da ne bismo stalno izbacivali elemente iz skupa, mi ćemo napraviti još jedan niz markirano, gde će Permutacije Zadatak. U vreći se nalazi n loptica različitih boja. Iz vreće izvlačimo redom jednu po jednu lopticu i stavljamo jednu pored druge. Koliko različitih redosleda boja možemo da dobijemo? Primer

More information

ZANIMLJIV NAČIN IZRAČUNAVANJA NEKIH GRANIČNIH VRIJEDNOSTI FUNKCIJA. Šefket Arslanagić, Sarajevo, BiH

ZANIMLJIV NAČIN IZRAČUNAVANJA NEKIH GRANIČNIH VRIJEDNOSTI FUNKCIJA. Šefket Arslanagić, Sarajevo, BiH MAT-KOL (Banja Luka) XXIII ()(7), -7 http://wwwimviblorg/dmbl/dmblhtm DOI: 75/МК7A ISSN 5-6969 (o) ISSN 986-588 (o) ZANIMLJIV NAČIN IZRAČUNAVANJA NEKIH GRANIČNIH VRIJEDNOSTI FUNKCIJA Šefket Arslanagić,

More information

Lecture 3, Performance

Lecture 3, Performance Repeating some definitions: Lecture 3, Performance CPI MHz MIPS MOPS Clocks Per Instruction megahertz, millions of cycles per second Millions of Instructions Per Second = MHz / CPI Millions of Operations

More information

Lecture 3, Performance

Lecture 3, Performance Lecture 3, Performance Repeating some definitions: CPI Clocks Per Instruction MHz megahertz, millions of cycles per second MIPS Millions of Instructions Per Second = MHz / CPI MOPS Millions of Operations

More information

Algoritam za množenje ulančanih matrica. Alen Kosanović Prirodoslovno-matematički fakultet Matematički odsjek

Algoritam za množenje ulančanih matrica. Alen Kosanović Prirodoslovno-matematički fakultet Matematički odsjek Algoritam za množenje ulančanih matrica Alen Kosanović Prirodoslovno-matematički fakultet Matematički odsjek O problemu (1) Neka je A 1, A 2,, A n niz ulančanih matrica duljine n N, gdje su dimenzije matrice

More information

System Data Bus (8-bit) Data Buffer. Internal Data Bus (8-bit) 8-bit register (R) 3-bit address 16-bit register pair (P) 2-bit address

System Data Bus (8-bit) Data Buffer. Internal Data Bus (8-bit) 8-bit register (R) 3-bit address 16-bit register pair (P) 2-bit address Intel 8080 CPU block diagram 8 System Data Bus (8-bit) Data Buffer Registry Array B 8 C Internal Data Bus (8-bit) F D E H L ALU SP A PC Address Buffer 16 System Address Bus (16-bit) Internal register addressing:

More information

TEORIJA SKUPOVA Zadaci

TEORIJA SKUPOVA Zadaci TEORIJA SKUPOVA Zadai LOGIKA 1 I. godina 1. Zapišite simbolima: ( x nije element skupa S (b) d je član skupa S () F je podskup slupa S (d) Skup S sadrži skup R 2. Neka je S { x;2x 6} = = i neka je b =

More information

A L A BA M A L A W R E V IE W

A L A BA M A L A W R E V IE W A L A BA M A L A W R E V IE W Volume 52 Fall 2000 Number 1 B E F O R E D I S A B I L I T Y C I V I L R I G HT S : C I V I L W A R P E N S I O N S A N D TH E P O L I T I C S O F D I S A B I L I T Y I N

More information

Zadatci sa ciklusima. Zadatak1: Sastaviti progra koji određuje z ir prvih prirod ih rojeva.

Zadatci sa ciklusima. Zadatak1: Sastaviti progra koji određuje z ir prvih prirod ih rojeva. Zadatci sa ciklusima Zadatak1: Sastaviti progra koji određuje z ir prvih prirod ih rojeva. StrToIntDef(tekst,broj) - funkcija kojom se tekst pretvara u ceo broj s tim da je uvedena automatska kontrola

More information

Uvod u relacione baze podataka

Uvod u relacione baze podataka Uvod u relacione baze podataka Ana Spasić 2. čas 1 Mala studentska baza dosije (indeks, ime, prezime, datum rodjenja, mesto rodjenja, datum upisa) predmet (id predmeta, sifra, naziv, bodovi) ispitni rok

More information

Iskazna logika 1. Matematička logika u računarstvu. oktobar 2012

Iskazna logika 1. Matematička logika u računarstvu. oktobar 2012 Matematička logika u računarstvu Department of Mathematics and Informatics, Faculty of Science,, Serbia oktobar 2012 Iskazi, istinitost, veznici Intuitivno, iskaz je rečenica koja je ima tačno jednu jednu

More information

Programiranje u realnom vremenu Bojan Furlan

Programiranje u realnom vremenu Bojan Furlan Programiranje u realnom vremenu Bojan Furlan Tri procesa sa D = T imaju sledeće karakteristike: Proces T C a 3 1 b 6 2 c 18 5 (a) Pokazati kako se može konstruisati ciklično izvršavanje ovih procesa. (b)

More information

Osobine metode rezolucije: zaustavlja se, pouzdanost i kompletnost. Iskazna logika 4

Osobine metode rezolucije: zaustavlja se, pouzdanost i kompletnost. Iskazna logika 4 Matematička logika u računarstvu Department of Mathematics and Informatics, Faculty of Science,, Serbia novembar 2012 Rezolucija 1 Metod rezolucije je postupak za dokazivanje da li je neka iskazna (ili

More information

PRIPADNOST RJEŠENJA KVADRATNE JEDNAČINE DANOM INTERVALU

PRIPADNOST RJEŠENJA KVADRATNE JEDNAČINE DANOM INTERVALU MAT KOL Banja Luka) ISSN 0354 6969 p) ISSN 1986 58 o) Vol. XXI )015) 105 115 http://www.imvibl.org/dmbl/dmbl.htm PRIPADNOST RJEŠENJA KVADRATNE JEDNAČINE DANOM INTERVALU Bernadin Ibrahimpašić 1 Senka Ibrahimpašić

More information

Asian Journal of Science and Technology Vol. 4, Issue 08, pp , August, 2013 RESEARCH ARTICLE

Asian Journal of Science and Technology Vol. 4, Issue 08, pp , August, 2013 RESEARCH ARTICLE Available Online at http://www.journalajst.com ASIAN JOURNAL OF SCIENCE AND TECHNOLOGY ISSN: 0976-3376 Asian Journal of Science and Technology Vol. 4, Issue 08, pp.037-041, August, 2013 RESEARCH ARTICLE

More information

Lecture 1. How to Boot a PC. Andrei Pitiș. October 8, Operating Systems Practical. OSP Lecture 1, Booting 1/30

Lecture 1. How to Boot a PC. Andrei Pitiș. October 8, Operating Systems Practical. OSP Lecture 1, Booting 1/30 Lecture 1 How to Boot a PC Andrei Pitiș Operating Systems Practical October 8, 2014 OSP Lecture 1, Booting 1/30 Table of Contents Hardware Processor Memory I/O subsystems Boot Process Keywords Resources

More information

BROJEVNE KONGRUENCIJE

BROJEVNE KONGRUENCIJE UNIVERZITET U NOVOM SADU PRIRODNO-MATEMATIČKI FAKULTET DEPARTMAN ZA MATEMATIKU I INFORMATIKU Vojko Nestorović BROJEVNE KONGRUENCIJE - MASTER RAD - Mentor, dr Siniša Crvenković Novi Sad, 2011. Sadržaj Predgovor...............................

More information

Zbirka ispitnih zadataka iz Baza Podataka 1 Ispiti i kolokvijumi u periodu

Zbirka ispitnih zadataka iz Baza Podataka 1 Ispiti i kolokvijumi u periodu Beogradski univerzitet Elektrotehnički fakultet Miloš Cvetanović Zbirka ispitnih zadataka iz Baza Podataka 1 Ispiti i kolokvijumi u periodu 2007-2011 Beograd, Januar 2012 Ispiti... 3 Januarski ispitni

More information

MATHEMATICAL ANALYSIS OF PERFORMANCE OF A VIBRATORY BOWL FEEDER FOR FEEDING BOTTLE CAPS

MATHEMATICAL ANALYSIS OF PERFORMANCE OF A VIBRATORY BOWL FEEDER FOR FEEDING BOTTLE CAPS http://doi.org/10.24867/jpe-2018-02-055 JPE (2018) Vol.21 (2) Choudhary, M., Narang, R., Khanna, P. Original Scientific Paper MATHEMATICAL ANALYSIS OF PERFORMANCE OF A VIBRATORY BOWL FEEDER FOR FEEDING

More information

DISTRIBUIRANI ALGORITMI I SISTEMI

DISTRIBUIRANI ALGORITMI I SISTEMI Postavka 7: međusobno isključivanje sa read/write promenljivama 1 DISTRIBUIRANI ALGORITMI I SISTEMI Iz kursa CSCE 668 Proleće 2014 Autor izvorne prezentacije: Prof. Jennifer Welch Read/Write deljene promenljive

More information

ANALYTICAL AND NUMERICAL PREDICTION OF SPRINGBACK IN SHEET METAL BENDING

ANALYTICAL AND NUMERICAL PREDICTION OF SPRINGBACK IN SHEET METAL BENDING ANALYTICAL AND NUMERICAL PREDICTION OF SPRINGBACK IN SHEET METAL BENDING Slota Ján, Jurčišin Miroslav Department of Technologies and Materials, Faculty of Mechanical Engineering, Technical University of

More information

EEE Lecture 1 -1-

EEE Lecture 1 -1- EEE3410 - Lecture 1-1- 1. PC -> Address Move content of the Program Counter to Address Bus 2. Mem(Add) -> ID Move the Data at Location Add from main memory to Instruction Decoder (ID) 3. Acc s -> ALU Move

More information

ZANIMLJIVI ALGEBARSKI ZADACI SA BROJEM 2013 (Interesting algebraic problems with number 2013)

ZANIMLJIVI ALGEBARSKI ZADACI SA BROJEM 2013 (Interesting algebraic problems with number 2013) MAT-KOL (Banja Luka) ISSN 0354-6969 (p), ISSN 1986-5228 (o) Vol. XIX (3)(2013), 35-44 ZANIMLJIVI ALGEBARSKI ZADACI SA BROJEM 2013 (Interesting algebraic problems with number 2013) Nenad O. Vesi 1 Du²an

More information

Metode praćenja planova

Metode praćenja planova Metode praćenja planova Klasična metoda praćenja Suvremene metode praćenja gantogram mrežni dijagram Metoda vrednovanja funkcionalnosti sustava Gantogram VREMENSKO TRAJANJE AKTIVNOSTI A K T I V N O S T

More information

1.1 Algoritmi. 2 Uvod

1.1 Algoritmi. 2 Uvod GLAVA 1 Uvod Realizacija velikih računarskih sistema je vrlo složen zadatak iz mnogih razloga. Jedan od njih je da veliki programski projekti zahtevaju koordinisani trud timova stručnjaka različitog profila.

More information

Algoritmi i programiranje

Algoritmi i programiranje Cvetana Krstev Algoritmi i programiranje Jezički prevodioci Jezički prevodioci, kao primer opšteg softvera, obezbeđuju da se tekst programa zapisanog na nekom programskom jeziku prevede na mašinski jezik

More information

Rešenja zadataka za vežbu na relacionoj algebri i relacionom računu

Rešenja zadataka za vežbu na relacionoj algebri i relacionom računu Rešenja zadataka za vežbu na relacionoj algebri i relacionom računu 1. Izdvojiti ime i prezime studenata koji su rođeni u Beogradu. (DOSIJE WHERE MESTO_RODJENJA='Beograd')[IME, PREZIME] where mesto_rodjenja='beograd'

More information

INVESTIGATION OF UPSETTING OF CYLINDER BY CONICAL DIES

INVESTIGATION OF UPSETTING OF CYLINDER BY CONICAL DIES INVESTIGATION OF UPSETTING OF CYLINDER BY CONICAL DIES D. Vilotic 1, M. Plancak M 1, A. Bramley 2 and F. Osman 2 1 University of Novi Sad, Yugoslavia; 2 University of Bath, England ABSTRACT Process of

More information

EARNED VALUE METHOD - EVM METOD OSTVARENE VREDNOSTI

EARNED VALUE METHOD - EVM METOD OSTVARENE VREDNOSTI EARNED VALUE METHOD - EVM METOD OSTVARENE VREDNOSTI 1. OSNOVNI POKAZATELJI I PARAMETRI ZA ANALIZU OSTVARENOG NAPRETKA NA PROJEKTU BCWS ili PV Budgeted Cost of Work Scheduled (ili = Planned Value) BCWS

More information

Konstrukcija i analiza algoritama

Konstrukcija i analiza algoritama Konstrukcija i analiza algoritama 27. februar 207 Matematička indukcija Princip matematičke indukcije: Da bi za svako n N važilo tvrdjenje T (n) dovoljno je pokazati: bazu indukcije: tvrdjenje T () induktivni

More information

AIR CURTAINS VAZDU[NE ZAVESE V H

AIR CURTAINS VAZDU[NE ZAVESE V H AIR CURTAINS V 15.000 H 21.000 KLIMA Co. 2 KLIMA Co. Flow and system stress should be known factors in air flow. The flow is gas quantity flowing through the system during given time unit and is measured

More information

CMP 334: Seventh Class

CMP 334: Seventh Class CMP 334: Seventh Class Performance HW 5 solution Averages and weighted averages (review) Amdahl's law Ripple-carry adder circuits Binary addition Half-adder circuits Full-adder circuits Subtraction, negative

More information

MREŽNI DIJAGRAMI Planiranje

MREŽNI DIJAGRAMI Planiranje MREŽNI DIJAGRAMI Planiranje 1 Mrežno planiranje se zasniva na grafičkom prikazivanju aktivnosti usmerenim dužima. Dužina duži nema značenja, a sa dijagrama se vidi međuzavisnost aktivnosti. U mrežnom planiranju

More information

IMPLEMENTACIJA PREDIKTORA ZA UPRAVLJANJE PRISTUPIMA SDRAM MEMORIJI IMPLEMENTATION OF PREDICTOR FOR ACCESS CONTROLL TO SDRAM MEMORY

IMPLEMENTACIJA PREDIKTORA ZA UPRAVLJANJE PRISTUPIMA SDRAM MEMORIJI IMPLEMENTATION OF PREDICTOR FOR ACCESS CONTROLL TO SDRAM MEMORY INFOTEH-JHORIN Vol 9, Ref E-II-12, p 545-549, March 21 IMPLEMENTCIJ PREDIKTOR Z UPRVLJNJE PRISTUPIM SDRM MEMORIJI IMPLEMENTTION OF PREDICTOR FOR CSS CONTROLL TO SDRM MEMORY Neojša Milenković, Vladimir

More information

6. PROGRAMSKE STRUKTURE STRUKTUIRANOG PROGRAMIRANJA

6. PROGRAMSKE STRUKTURE STRUKTUIRANOG PROGRAMIRANJA 6. PROGRAMSKE STRUKTURE STRUKTUIRANOG PROGRAMIRANJA U programiranju često postoji potreba da se redoslijed izvršavanja naredbi uslovi prethodno dobivenim međurezultatima u toku izvršavanja programa. Na

More information

NCU EE -- DSP VLSI Design. Tsung-Han Tsai 1

NCU EE -- DSP VLSI Design. Tsung-Han Tsai 1 NCU EE -- DSP VLSI Design. Tsung-Han Tsai 1 Multi-processor vs. Multi-computer architecture µp vs. DSP RISC vs. DSP RISC Reduced-instruction-set Register-to-register operation Higher throughput by using

More information

P a g e 5 1 of R e p o r t P B 4 / 0 9

P a g e 5 1 of R e p o r t P B 4 / 0 9 P a g e 5 1 of R e p o r t P B 4 / 0 9 J A R T a l s o c o n c l u d e d t h a t a l t h o u g h t h e i n t e n t o f N e l s o n s r e h a b i l i t a t i o n p l a n i s t o e n h a n c e c o n n e

More information

povezuju tačke na četiri različita načina (pravom linijom, splajnom,

povezuju tačke na četiri različita načina (pravom linijom, splajnom, Origin Zadatak 1. Otvoriti Origin i kreirati novi projekat; U datasheet-u dodati novu kolonu; U project exploreru kreirati nove podfoldere: Data i Graphs; Prebaciti trenutni datasheet u podfolder Data;

More information

Computer Engineering Department. CC 311- Computer Architecture. Chapter 4. The Processor: Datapath and Control. Single Cycle

Computer Engineering Department. CC 311- Computer Architecture. Chapter 4. The Processor: Datapath and Control. Single Cycle Computer Engineering Department CC 311- Computer Architecture Chapter 4 The Processor: Datapath and Control Single Cycle Introduction The 5 classic components of a computer Processor Input Control Memory

More information

Šta je to mašinsko učenje?

Šta je to mašinsko učenje? MAŠINSKO UČENJE Šta je to mašinsko učenje? Disciplina koja omogućava računarima da uče bez eksplicitnog programiranja (Arthur Samuel 1959). 1. Generalizacija znanja na osnovu prethodnog iskustva (podataka

More information

ANALYSIS OF INFLUENCE OF PARAMETERS ON TRANSFER FUNCTIONS OF APERIODIC MECHANISMS UDC Života Živković, Miloš Milošević, Ivan Ivanov

ANALYSIS OF INFLUENCE OF PARAMETERS ON TRANSFER FUNCTIONS OF APERIODIC MECHANISMS UDC Života Živković, Miloš Milošević, Ivan Ivanov UNIVERSITY OF NIŠ The scientific journal FACTA UNIVERSITATIS Series: Mechanical Engineering Vol.1, N o 6, 1999 pp. 675-681 Editor of series: Nenad Radojković, e-mail: radojkovic@ni.ac.yu Address: Univerzitetski

More information

FTN Novi Sad Katedra za motore i vozila. Drumska vozila Uputstvo za izradu vučnog proračuna motornog vozila. 1. Ulazni podaci IZVOR:

FTN Novi Sad Katedra za motore i vozila. Drumska vozila Uputstvo za izradu vučnog proračuna motornog vozila. 1. Ulazni podaci IZVOR: 1. Ulazni podaci IZVOR: WWW.CARTODAY.COM 1. Ulazni podaci Masa / težina vozila Osovinske reakcije Raspodela težine napred / nazad Dimenzije pneumatika Čeona površina Koeficijent otpora vazduha Brzinska

More information

Šta su računarski sistemi

Šta su računarski sistemi Šta su računarski sistemi Informacioni sistemi Promene u poslovanju preduzeća se mogu podeliti u tri grupe: pojava i jačanje globalne ekonomije, transformacija industrijskih ekonomija i transformacija

More information

Parts Manual. EPIC II Critical Care Bed REF 2031

Parts Manual. EPIC II Critical Care Bed REF 2031 EPIC II Critical Care Bed REF 2031 Parts Manual For parts or technical assistance call: USA: 1-800-327-0770 2013/05 B.0 2031-109-006 REV B www.stryker.com Table of Contents English Product Labels... 4

More information

Fraktali - konačno u beskonačnom

Fraktali - konačno u beskonačnom Prirodno-Matematički fakultet, Niš. dexterofnis@gmail.com www.pmf.ni.ac.rs/dexter Nauk nije bauk, 2011 Sadržaj predavanja 1 Sadržaj predavanja 1 2 Sadržaj predavanja 1 2 3 Box-Counting dimenzija Hausdorfova

More information

TemidaLib sistem za rad sa velikim brojevima TemidaLib Multiprecision Arithmetic Library

TemidaLib sistem za rad sa velikim brojevima TemidaLib Multiprecision Arithmetic Library TemidaLib sistem za rad sa velikim brojevima TemidaLib Multiprecision Arithmetic Library Jelena Tomašević i Milena Vujošević-Janičić Matematički fakultet, Univerzitet u Beogradu Studentski trg 16, 11000

More information

THE TRANSLATION PLANES OF ORDER 49 AND THEIR AUTOMORPHISM GROUPS

THE TRANSLATION PLANES OF ORDER 49 AND THEIR AUTOMORPHISM GROUPS MATHEMATICS OF COMPUTATION Volume 67, Number 223, July 1998, Pages 1207 1224 S 0025-5718(98)00961-2 THE TRANSLATION PLANES OF ORDER 49 AND THEIR AUTOMORPHISM GROUPS C. CHARNES AND U. DEMPWOLFF Abstract.

More information

Termodinamika. FIZIKA PSS-GRAD 29. studenog Copyright 2015 John Wiley & Sons, Inc. All rights reserved.

Termodinamika. FIZIKA PSS-GRAD 29. studenog Copyright 2015 John Wiley & Sons, Inc. All rights reserved. Termodinamika FIZIKA PSS-GRAD 29. studenog 2017. 15.1 Thermodynamic Systems and Their Surroundings Thermodynamics is the branch of physics that is built upon the fundamental laws that heat and work obey.

More information

Processor Design & ALU Design

Processor Design & ALU Design 3/8/2 Processor Design A. Sahu CSE, IIT Guwahati Please be updated with http://jatinga.iitg.ernet.in/~asahu/c22/ Outline Components of CPU Register, Multiplexor, Decoder, / Adder, substractor, Varity of

More information

VELOCITY PROFILES AT THE OUTLET OF THE DIFFERENT DESIGNED DIES FOR ALUMINIUM EXTRUSION

VELOCITY PROFILES AT THE OUTLET OF THE DIFFERENT DESIGNED DIES FOR ALUMINIUM EXTRUSION VELOCITY PROFILES AT THE OUTLET OF THE DIFFERENT DESIGNED DIES FOR ALUMINIUM EXTRUSION J.Caloska, J. Lazarev, Faculty of Mechanical Engineering, University Cyril and Methodius, Skopje, Republic of Macedonia

More information

FIZIKALNA KOZMOLOGIJA VII. VRLO RANI SVEMIR & INFLACIJA

FIZIKALNA KOZMOLOGIJA VII. VRLO RANI SVEMIR & INFLACIJA FIZIKALNA KOZMOLOGIJA VII. VRLO RANI SVEMIR & INFLACIJA KOZMIČKI SAT ranog svemira Ekstra zračenje u mjerenju CMB Usporedba s rezultatima LEP-a Usporedba CMB i neutrina Vj.: Pozadinsko zračenje neutrina

More information

POUZDANOST ELEKTRONSKIH UREĐAJA

POUZDANOST ELEKTRONSKIH UREĐAJA POUZDANOST ELEKTRONSKIH UREĐAJA Goran Kostić, konstruktor, DP Elu Ključne reči:. pouzdanost (reliability), 2. teorija (theory), 3. proizvod (product), 4. učestanost otkaza (failure rate),, 5. prosečno

More information

TEHNIČKO REŠENJE. Algoritam za sinhronizaciju rada prediktora DRAM memorija

TEHNIČKO REŠENJE. Algoritam za sinhronizaciju rada prediktora DRAM memorija TEHNIČKO REŠENJE Algoritam za sinhronizaciju rada prediktora DRAM memorija M-85: Prototip, nova metoda, softver, standardizovan ili atestiran instrument, nova genetska proba, mikroorganizmi Autori: Vladimir

More information

EC 413 Computer Organization

EC 413 Computer Organization EC 413 Computer Organization rithmetic Logic Unit (LU) and Register File Prof. Michel. Kinsy Computing: Computer Organization The DN of Modern Computing Computer CPU Memory System LU Register File Disks

More information

U X. 1. Multivarijantna statistička analiza 1

U X. 1. Multivarijantna statistička analiza 1 . Multivarijantna statistička analiza Standardizovana (normalizovana) vrednost obeležja Normalizovano odstupanje je mera varijacije koja pokazuje algebarsko odstupanje jedne vrednosti obeležja od aritmetičke

More information

Sveučilište J. J. Strossmayera u Osijeku Odjel za matematiku Sveučilišni nastavnički studij matematike i informatike. Sortiranje u linearnom vremenu

Sveučilište J. J. Strossmayera u Osijeku Odjel za matematiku Sveučilišni nastavnički studij matematike i informatike. Sortiranje u linearnom vremenu Sveučilište J. J. Strossmayera u Osijeku Odjel za matematiku Sveučilišni nastavnički studij matematike i informatike Tibor Pejić Sortiranje u linearnom vremenu Diplomski rad Osijek, 2011. Sveučilište J.

More information

LABORATORY MANUAL MICROPROCESSORS AND MICROCONTROLLERS. S.E (I.T) ( S e m. IV)

LABORATORY MANUAL MICROPROCESSORS AND MICROCONTROLLERS. S.E (I.T) ( S e m. IV) LABORATORY MANUAL MICROPROCESSORS AND MICROCONTROLLERS S.E (I.T) ( S e m. IV) 1 I n d e x Serial No. T i tl e P a g e N o. 1 8 bit addition with carry 3 2 16 bit addition with carry 5 3 8 bit multiplication

More information

Metrički prostori i Riman-Stiltjesov integral

Metrički prostori i Riman-Stiltjesov integral Metrički prostori i Riman-Stiltjesov integral Sadržaj 1 Metrički prostori 3 1.1 Primeri metričkih prostora................. 3 1.2 Konvergencija nizova i osobine skupova...................... 12 1.3 Kantorov

More information

Ksenija Doroslovački KOMBINATORIKA INTERPRETIRANA FUNKCIJAMA I NJIHOVIM OSOBINAMA MASTER RAD. NOVI SAD jun 2008

Ksenija Doroslovački KOMBINATORIKA INTERPRETIRANA FUNKCIJAMA I NJIHOVIM OSOBINAMA MASTER RAD. NOVI SAD jun 2008 1 Ksenija Doroslovački KOMBINATORIKA INTERPRETIRANA FUNKCIJAMA I NJIHOVIM OSOBINAMA MASTER RAD NOVI SAD jun 2008 2 Sadržaj 1 UVOD 5 2 FUNKCIJE 11 3 KLASIČNI KOMBINATORNI OBJEKTI 17 4 NEKI NEKLASIČNI KOMBINATORNI

More information

UOPŠTENI INVERZI, FAKTORI USLOVLJENOSTI I PERTURBACIJE

UOPŠTENI INVERZI, FAKTORI USLOVLJENOSTI I PERTURBACIJE UNIVERZITET U NIŠU PRIRODNO MATEMATIČKI FAKULTET ODSEK ZA MATEMATIKU I INFORMATIKU Dijana Mosić UOPŠTENI INVERZI, FAKTORI USLOVLJENOSTI I PERTURBACIJE Doktorska disertacija Mentor Prof. dr Dragan Djordjević

More information

DYNAMIC HEAT TRANSFER IN WALLS: LIMITATIONS OF HEAT FLUX METERS

DYNAMIC HEAT TRANSFER IN WALLS: LIMITATIONS OF HEAT FLUX METERS DYNAMI EAT TRANFER IN WALL: LIMITATION OF EAT FLUX METER DINAMIČKI PRENO TOPLOTE U ZIDOVIMA: OGRANIČENJA MERAČA TOPLOTNOG PROTOKA (TOPLOTNOG FLUKA) 1 I. Naveros a, b,. Ghiaus a a ETIL UMR58, INA-Lyon,

More information

Uvod u analizu (M3-02) 05., 07. i 12. XI dr Nenad Teofanov. principle) ili Dirihleov princip (engl. Dirichlet box principle).

Uvod u analizu (M3-02) 05., 07. i 12. XI dr Nenad Teofanov. principle) ili Dirihleov princip (engl. Dirichlet box principle). Uvod u analizu (M-0) 0., 07. i. XI 0. dr Nenad Teofanov. Kardinalni broj skupa R U ovom predavanju se razmatra veličina skupa realnih brojeva. Jasno, taj skup ima beskonačno mnogo elemenata. Pokazaće se,

More information

Đorđe Đorđević, Dušan Petković, Darko Živković. University of Niš, The Faculty of Civil Engineering and Architecture, Serbia

Đorđe Đorđević, Dušan Petković, Darko Živković. University of Niš, The Faculty of Civil Engineering and Architecture, Serbia FACTA UNIVERSITATIS Series: Architecture and Civil Engineering Vol. 6, N o 2, 2008, pp. 207-220 DOI:10.2298/FUACE0802207D THE APPLIANCE OF INTERVAL CALCULUS IN ESTIMATION OF PLATE DEFLECTION BY SOLVING

More information

DETERMINATION OF THE EFFECTIVE STRAIN FLOW IN COLD FORMED MATERIAL

DETERMINATION OF THE EFFECTIVE STRAIN FLOW IN COLD FORMED MATERIAL DETERMINATION OF THE EFFECTIVE STRAIN FLOW IN COLD FORMED MATERIAL Leo Gusel University of Maribor, Faculty of Mechanical Engineering Smetanova 17, SI 000 Maribor, Slovenia ABSTRACT In the article the

More information

Kontrolni uređaji s vremenskom odgodom za rasvjetu i klimu

Kontrolni uređaji s vremenskom odgodom za rasvjetu i klimu KOTROI SKOPOVI ZA RASVJETU I KIMA UREĐAJE Kontrolni i s vremenskom odgodom za rasvjetu i klimu Modularni dizajn, slobodna izmjena konfiguracije Sigurno. iski napon V Efikasno čuvanje energije Sigurnost.

More information

In 1980, the yield = 48% and the Die Area = 0.16 from figure In 1992, the yield = 48% and the Die Area = 0.97 from figure 1.31.

In 1980, the yield = 48% and the Die Area = 0.16 from figure In 1992, the yield = 48% and the Die Area = 0.97 from figure 1.31. CS152 Homework 1 Solutions Spring 2004 1.51 Yield = 1 / ((1 + (Defects per area * Die Area / 2))^2) Thus, if die area increases, defects per area must decrease. 1.52 Solving the yield equation for Defects

More information

CA Compiler Construction

CA Compiler Construction CA4003 - Compiler Construction Code Generation to MIPS David Sinclair Code Generation The generation o machine code depends heavily on: the intermediate representation;and the target processor. We are

More information

LINEARNI MODELI STATISTIČKI PRAKTIKUM 2 2. VJEŽBE

LINEARNI MODELI STATISTIČKI PRAKTIKUM 2 2. VJEŽBE LINEARNI MODELI STATISTIČKI PRAKTIKUM 2 2. VJEŽBE Linearni model Promatramo jednodimenzionalni linearni model. Y = β 0 + p β k x k + ε k=1 x 1, x 2,..., x p - varijable poticaja (kontrolirane) ε - sl.

More information

ANALYSIS OF THE RELIABILITY OF THE "ALTERNATOR- ALTERNATOR BELT" SYSTEM

ANALYSIS OF THE RELIABILITY OF THE ALTERNATOR- ALTERNATOR BELT SYSTEM I. Mavrin, D. Kovacevic, B. Makovic: Analysis of the Reliability of the "Alternator- Alternator Belt" System IVAN MAVRIN, D.Sc. DRAZEN KOVACEVIC, B.Eng. BRANKO MAKOVIC, B.Eng. Fakultet prometnih znanosti,

More information

Prsten cijelih brojeva

Prsten cijelih brojeva SVEUČILIŠTE JOSIPA JURJA STROSSMAYERA U OSIJEKU ODJEL ZA MATEMATIKU Marijana Pravdić Prsten cijelih brojeva Diplomski rad Osijek, 2017. SVEUČILIŠTE JOSIPA JURJA STROSSMAYERA U OSIJEKU ODJEL ZA MATEMATIKU

More information

Mehurasto sortiranje Brzo sortiranje Sortiranje učešljavanjem Sortiranje umetanjem. Overviev Problemi pretraživanja Heš tabele.

Mehurasto sortiranje Brzo sortiranje Sortiranje učešljavanjem Sortiranje umetanjem. Overviev Problemi pretraživanja Heš tabele. Bubble sort Razmotrimo još jedan vrlo popularan algoritam sortiranja podataka, vrlo sličan prethodnom algoritmu. Algoritam je poznat pod nazivom Bubble sort algoritam (algoritam mehurastog sortiranja),

More information

False. Vrednost XIC Stanje bita "a" naredbe 0 True. 1 False. Bit na adresi "a" dobija vrednost uslov. Bit na adresi "a" dobija vrednost uslov

False. Vrednost XIC Stanje bita a naredbe 0 True. 1 False. Bit na adresi a dobija vrednost uslov. Bit na adresi a dobija vrednost uslov Bit nredbe XIC - Exmine if closed (ispitivnje d li je kontkt ztvoren) Grfički simbol dres bit Tblic istinitosti Vrednost XIC Stnje bit "" nredbe 0 Flse Položj u rngu kcij 1 True XIO - Exmine if open (ispitivnje

More information

U člnaku se nastoji na jednostavan i sažet način bez ulaženja u egzaktne i formalizirane dokaze postići slijedeće:

U člnaku se nastoji na jednostavan i sažet način bez ulaženja u egzaktne i formalizirane dokaze postići slijedeće: Mr Ratimir Kvaternik Fakultet organizacije i informatike V a r a ž d i n UDK 681.142.2 Prethodno saopćenje O D R E D J I V A N J E R A D N O G S K U P A S T R A N I C A U člnaku se nastoji na jednostavan

More information

Projektovanje paralelnih algoritama I. Uvod Osnove dinamičke paralelizacije

Projektovanje paralelnih algoritama I. Uvod Osnove dinamičke paralelizacije Projektovanje paralelnih algoritama I Uvod Osnove dinamičke paralelizacije 1 Uvod PLATFORMA ZA DINAMIČKU PARALELIZACIJU Omogućava specificiranje paralelizma u aplikaciji Bez brige o komunikacionim protokolima,

More information

page 1 Total ( )

page 1 Total ( ) A B C D E F Costs budget of [Claimant / Defendant] dated [ ] Estimated page 1 Work done / to be done Pre-action Disbs ( ) Time ( ) Disbs ( ) Time ( ) Total ( ) 1 Issue /statements of case 0.00 0.00 CMC

More information

Yu.G. Matvienko. The paper was presented at the Twelfth Meeting New Trends in Fatigue and Fracture (NT2F12) Brasov, Romania, May, 2012

Yu.G. Matvienko. The paper was presented at the Twelfth Meeting New Trends in Fatigue and Fracture (NT2F12) Brasov, Romania, May, 2012 Yu.G. Matvienko The paper was presented at the Twelfth Meeting New Trends in Fatigue and Fracture (NTF1) Brasov, Romania, 7 30 May, 01 CRACK TP PLASTC ZONE UNDER MODE LOADNG AND THE NON-SNGULAR T zz STRESS

More information

Paralelni algoritmi 1

Paralelni algoritmi 1 SVEUČILIŠTE U ZAGREBU PMF MATEMATIČKI ODJEL Sanja Singer i Saša Singer Paralelni algoritmi 1 Predavanja i vježbe Zagreb, 2003. Sadržaj 1. Uvod.................................... 1 1.1. Mali podsjetnik

More information

Fibonaccijev brojevni sustav

Fibonaccijev brojevni sustav Fibonaccijev brojevni sustav Ljerka Jukić asistentica Odjela za matematiku Sveučilišta u Osijeku, ljukic@mathos.hr Helena Velić studentica Odjela za matematiku Sveučilišta u Osijeku, hvelic@mathos.hr Sažetak

More information

Napredni standard enkripcije (AES)

Napredni standard enkripcije (AES) UNIVERZITET CRNE GORE Prirodno-matematički fakultet Podgorica Dušan Radoičić Napredni standard enkripcije (AES) Specijalistički rad Podgorica, 2013. UNIVERZITET CRNE GORE Prirodno-matematički fakultet

More information

ECE 3401 Lecture 23. Pipeline Design. State Table for 2-Cycle Instructions. Control Unit. ISA: Instruction Specifications (for reference)

ECE 3401 Lecture 23. Pipeline Design. State Table for 2-Cycle Instructions. Control Unit. ISA: Instruction Specifications (for reference) ECE 3401 Lecture 23 Pipeline Design Control State Register Combinational Control Logic New/ Modified Control Word ISA: Instruction Specifications (for reference) P C P C + 1 I N F I R M [ P C ] E X 0 PC

More information

BREEDING AND GENETIC PROPERTIES OF THE MAIZE VARIETY UZBEKSKA BELA

BREEDING AND GENETIC PROPERTIES OF THE MAIZE VARIETY UZBEKSKA BELA UDC 575: 633.15 Original scientific paper BREEDING AND GENETIC PROPERTIES OF THE MAIZE VARIETY UZBEKSKA BELA Lazar KOJIC 1 and Dillyara AJGOZINA 2 1 Maize Research Institute, Zemun Polje, Belgrade, Serbia

More information

COMPARISON OF THREE CALCULATION METHODS OF ENERGY PERFORMANCE CERTIFICATES IN SLOVENIA

COMPARISON OF THREE CALCULATION METHODS OF ENERGY PERFORMANCE CERTIFICATES IN SLOVENIA 10 Oригинални научни рад Research paper doi 10.7251/STP1813169K ISSN 2566-4484 POREĐENJE TRI METODE PRORAČUNA ENERGETSKIH CERTIFIKATA U SLOVENIJI Wadie Kidess, wadie.kidess@gmail.com Marko Pinterić, marko.pinteric@um.si,

More information

LLL Seminari u okviru TEMPUS projekta

LLL Seminari u okviru TEMPUS projekta LLL Seminari u okviru TEMPUS projekta Naziv projekta: 511140 TEMPUS JPCR MAS Master programe in Applied Statistics - Broj projekta: 511140 Nosilac projekta: Rukovodilac: Departman za matematiku i informatiku,

More information

Geometrijski smisao rješenja sustava od tri linearne jednadžbe s tri nepoznanice

Geometrijski smisao rješenja sustava od tri linearne jednadžbe s tri nepoznanice Osječki matematički list 6(2006), 79 84 79 Geometrijski smisao rješenja sustava od tri linearne jednadžbe s tri nepoznanice Zlatko Udovičić Sažetak. Geometrijski smisao rješenja sustava od dvije linearne

More information

ARITMETIČKO LOGIČKA JEDINICA ( ALU ) Davor Bogdanović SVEUČILIŠTE JOSIPA JURJA STROSSMAYERA U OSIJEKU ELEKTROTEHNIČKI FAKULTET. Sveučilišni studij

ARITMETIČKO LOGIČKA JEDINICA ( ALU ) Davor Bogdanović SVEUČILIŠTE JOSIPA JURJA STROSSMAYERA U OSIJEKU ELEKTROTEHNIČKI FAKULTET. Sveučilišni studij SVEUČILIŠTE JOSIPA JURJA STROSSMAYERA U OSIJEKU ELEKTROTEHNIČKI FAKULTET Sveučilišni studij ARITMETIČKO LOGIČKA JEDINICA ( ALU ) Završni rad Davor Bogdanović Osijek, rujan 2010. 1. Uvod -----------------------------------------------------------------------------------------------------------

More information

Karakterizacija problema zadovoljenja uslova širine 1

Karakterizacija problema zadovoljenja uslova širine 1 UNIVERZITET U NOVOM SADU PRIRODNO-MATEMATIČKI FAKULTET DEPARTMAN ZA MATEMATIKU I INFORMATIKU Aleksandar Prokić Karakterizacija problema zadovoljenja uslova širine 1 -master rad- Mentor: dr Petar Marković

More information

DEVELOPMENT OF MATHEMATICAL MODELS TO PREDICT THE EFFECT OF INPUT PARAMETERS ON FEED RATE OF A RECIPROCATORY TUBE FUNNEL FEEDER

DEVELOPMENT OF MATHEMATICAL MODELS TO PREDICT THE EFFECT OF INPUT PARAMETERS ON FEED RATE OF A RECIPROCATORY TUBE FUNNEL FEEDER http://doi.org/10.24867/jpe-2018-01-067 JPE (2018) Vol.21 (1) Jain, A., Bansal, P., Khanna, P. Preliminary Note DEVELOPMENT OF MATHEMATICAL MODELS TO PREDICT THE EFFECT OF INPUT PARAMETERS ON FEED RATE

More information

OH BOY! Story. N a r r a t iv e a n d o bj e c t s th ea t e r Fo r a l l a g e s, fr o m th e a ge of 9

OH BOY! Story. N a r r a t iv e a n d o bj e c t s th ea t e r Fo r a l l a g e s, fr o m th e a ge of 9 OH BOY! O h Boy!, was or igin a lly cr eat ed in F r en ch an d was a m a jor s u cc ess on t h e Fr en ch st a ge f or young au di enc es. It h a s b een s een by ap pr ox i ma t ely 175,000 sp ect at

More information

Lecture: Pipelining Basics

Lecture: Pipelining Basics Lecture: Pipelining Basics Topics: Performance equations wrap-up, Basic pipelining implementation Video 1: What is pipelining? Video 2: Clocks and latches Video 3: An example 5-stage pipeline Video 4:

More information

Digitalni generator sinusnog signala s amplitudnom, faznom i frekvencijskom modulacijom izveden DSP procesorom

Digitalni generator sinusnog signala s amplitudnom, faznom i frekvencijskom modulacijom izveden DSP procesorom SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA DIPLOMSKI RAD br. 297 Digitalni generator sinusnog signala s amplitudnom, faznom i frekvencijskom modulacijom izveden DSP procesorom Tomislav

More information

Neke primene teorije fazi skupova i fazi logike u procesiranju slika

Neke primene teorije fazi skupova i fazi logike u procesiranju slika Univerzitet u Beogradu Matematički fakultet Neke primene teorije fazi skupova i fazi logike u procesiranju slika - Master rad - Nebojša Perić 1024/2013 Beograd, 2014. 2 Mentor: Članovi komisije: Datum

More information

UNIVERZITET U NOVOM SADU PRIRODNO-MATEMATIČKI FAKULTET DEPARTMAN ZA MATEMATIKU I INFORMATIKU

UNIVERZITET U NOVOM SADU PRIRODNO-MATEMATIČKI FAKULTET DEPARTMAN ZA MATEMATIKU I INFORMATIKU UNIVERZITET U NOVOM SADU PRIRODNO-MATEMATIČKI FAKULTET DEPARTMAN ZA MATEMATIKU I INFORMATIKU Ivan Marinković Klasifikacija H-matrica metodom skaliranja i njena primena u odred ivanju oblasti konvergencije

More information

I N A C O M P L E X W O R L D

I N A C O M P L E X W O R L D IS L A M I C E C O N O M I C S I N A C O M P L E X W O R L D E x p l o r a t i o n s i n A g-b eanste d S i m u l a t i o n S a m i A l-s u w a i l e m 1 4 2 9 H 2 0 0 8 I s l a m i c D e v e l o p m e

More information

Konstrukcija i analiza algoritama

Konstrukcija i analiza algoritama Konstrukcija i analiza algoritama 27. februar 2017 1 Pravila zaključivanja i tehnike dokazivanja u iskaznoj i predikatskoj logici 1 1.1 Iskazna logika Pravila zaključivanja za iskaznu logiku: 1. DODAVANJE

More information