279
1. Ocena performansi

1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

  • Upload
    others

  • View
    20

  • Download
    1

Embed Size (px)

Citation preview

Page 1: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

1. Ocena performansi

Page 2: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

1-1

Š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.

Page 3: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

Šta je računar sa memorisanim programom?

registri

instrukcije

FF...FF16

podaciadrese

instrukcije i podaci

memorija

procesor

heksadecimalneadrese

00...0016

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

Page 4: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

Koji su osnovni blokovi von Neumann-ovog računara?

ulazni interfejs (i)

ulazni uredjaj (i)

uobičajeno skupljeni u jedinstvenu stazu podataka

izlazni uredjaj (i)

sekundarna memorija

procesor

glavna memorija izlazni interfejs

(i)

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

Page 5: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

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

memorijapodataka

magistralaadresepodataka

magistralapodataka

memorijaza

instrukcije

magistralainstrukcija

magistralaadreseinstrukcija

ka spoljnojmemoriji

Slika 1.3 Pojednostavljena struktura Harvard arhitekture 1-4

Page 6: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

Š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

1iCPUii T*CPI*IF

gde je i - tip instrukcije u okviru skupa instrukcija; k - ukupan broj instrukcija u repertoaru. Za MIPS važi:

( )1000

T*CPI*IF

1MIPS k

1iCPUii

×=

∑=

1-5

Page 7: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

1-6

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.

Page 8: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

1-7

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.

Page 9: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

1-8

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.

Page 10: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

- Vreme koje je potrebno CPU-u da izvrši program?

cpCPU

CPU

t*CPI*NI=Tiodtaktni_perdibroj_sekun*

ainstrukcijlaih_intervabroj_taktn*

programukcijabroj_instrT =

gde je : NI - broj instrukcija u programu; CPI - broj taktnih intervala po instrukciji; tcp - vreme trajanja taktne pobude. Pri ovome imamo da je: • tcp - 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

jedinice mera

Tcpu sekunda NI broj instrukcija potreban da se

izvrši program CPI prosečan broj taktnih perioda po

instrukciji tcp broj sekundi po taktnom periodu

1-9

Page 11: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

Vreme koje je potrebno CPU-u de izvrši program: TCPU=broj_taktnih_intervala_CPU-a_u_programu*tcp=N*tcp

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

1iii NI*CPI

gde je : n - broj različitih klasa instrukcija; NIi - ukazauje na to koliko se broj puta instrukcija iz klase i izvršava u programu; CPIi - prosečno vreme izvršenja instrukcije iz klase i. Prema tome:

, cp

n

1iiiCPU t*NI*CPIT ⎟⎠

⎞⎜⎝

⎛= ∑

=

dok je

∑∑

=

=⎟⎟⎠

⎞⎜⎜⎝

⎛==

n

1i

ii

n

1iii

ukcijabroj_instrNI*CPI

ukcijabroj_instr

NI*CPICPI

1-10

Page 12: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

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.

jšanjeisti_poboloja_ne_kore_mašine_kperformansnjei_poboljšaoja_koriste_mašine_kperformansUbrzanje =

ili, alternativno:

boljšanjemšini_sa_porama_na_mašenja_progvreme_izvroboljšanjašini_bez_prama_na_mašenja_progvreme_izvrUbrzanje =

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:

( ) ⎟⎟⎠

⎞⎜⎜⎝

⎛+−=

SpobFpobFpob1*TstaroTnovo

Ukupno ubrzanje Suk predstavlja odnos vremena izvršenja Tnovo i Tstaro:

( )SpobFpobFpob1

1TnovoTstaroSuk

+−==

Ilustrcije radi, analizirajmo sledeća dva slučaja:

1-11

Page 13: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

(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=10

561

6401

104060

1Suk ....

≈=+

=

(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.

( ) ⎟⎟⎠

⎞⎜⎜⎝

⎛+−=

SpobFpobFpob1TstaroTnovo

20=100((1-0.8)+0.8/Spob) 20=20+80/Spob

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

Page 14: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

Zadatak 1.5 Neka postoje dve implementacije arhitektura sa istim skupom naredbi. Računar R1 karakteriše tcp1=1ns i CPI1=2.0, a računar R2 tcp2=2ns i CPI2=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 Nx u toku izvršenja programa: a) za računar R1 iznosi:

N = NI ∗ CPI N1=k*2,0 b) za računar R2 iznosi N2=k*1,2 CPU-ovo vreme izračunavanja za svaki računar je: i) za računar R1: TCPU1=k*2,0*tcp1=k*2,0*1ns=2,0*k ns; ii) za računar R2: TCPU2=k*1,2*tcp2=k*1,2*2ns=2,4*k ns. Formiranjem odnosa:

1,2nsk *2,0nsk *2,4

Tcpu1Tcpu2

PR2PR1

===

Ovaj rezultat ukazuje da je računar R1 brži 1,2 puta od računara R2.

1-13

Page 15: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

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 1.11.

klasa CPIR1 CPIR2 C1isk C2isk C3is

A 4 2 30% 30% 50% B 6 4 50% 20% 30% C 8 3 20% 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). C1isk(C2isk) 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?

∑=

⎟⎠⎞

⎜⎝⎛=

n

1i

ii NI

NI*CPICPI

iklaseuččešćprocenat−NINIi

Odgovor a) Ako se koristi C1, važi: CPIR1C1=0,3*4+0,5*6+0,2*8=5,8 CPIR2C1=0,3*2+0,5*4+0,2*3=3,2 TCPUR1C1=NI*CPIR1C1*tcpR1=NI*5,8/400⋅106

TCPUR2C1=NI*CPIR2C1*tcpR2=NI*3,2/200⋅106

⇒=⋅⋅

= 1110400851020023

6

6

,)/(.)/(.

TT

CPUR1C1

CPUR2C1 R1 je 1,1 puta brži od R2.

1-14

Page 16: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

b) Ako se koristi C2, tada imamo: CPIR1C2=6,4 CPIR2C2=2,9

pri istim uslovima je: t cpR1 6

1400 10

=⋅ i t cpR2 6

1200 10

=⋅ .

Dobićemo da je R2 za 1,10 puta brži od R1. c) Ako se koristi simulator C3, tada: CPIR1C3=5,4 CPIR2C3=2,8 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 2

1-15

Page 17: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

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:

610∗=

CPUTNIMIPS

610šenja*vreme_izvrukcijabroj_instrMIPSnative = ,

ili, alternativno:

610∗=

CPIf

MIPS cp

610CPI*osttanstaktna_učaMIPS =

b) Ako je MFP-u potrebno 300*106 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*106, za koje vreme se izvrši program P na MFP i MNFP mašini.

Odgovor a) CPIMFP=0,1*6+0,15*4+0,05*20+0,7*2=3,6

CPIMNFP=2

MIPSMFP= 6

6

106310100⋅⋅

, =27,8

MIPSMNFP=100 10

2 10

6

6

⋅⋅ =50

1-16

Page 18: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

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% 210 210 ukupno 100% 300 2760

1-17

c) s,,MFP 810827300

=== 66MFP

1

1010MIPSN

**T ,

s,*TMNFP 25550

102760 6

===MNFP

62

MIPS10N *

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 1.12.

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):

Page 19: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

broj instrukcija (109) za svaku klasu instrukcije

kôd A B C kompilator 1 5 1 1 kompilator 2 10 1 1

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= kvencijataktna_fre_intervaliovi_taktniCPU −

TCPU=N*tcp

N= ∑=

n

1iii NI*CPI

U konkretnom slučaju, kada je apliciran kompajler 1, važi: Nc1=(5*1+1*2+1*3)*109=10*109. Kada je apliciran kompajler 2, imamo: Nc2=(10*1+1*2+1*3)*109=15*109. Vreme izvršenja za odgovarajuće kompajlirane programe iznosi:

TCPUC1= s 2010*500

10*106

9

=

TCPUC2= s 3010*500

10*156

9

=

Na osnovu vremena izvršenja zaključujemo da kompilator generiše kraći program. Odredimo sada MIPS-ove za svaku verziju programa. 1-18

Page 20: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

MIPS= 6CPU 10*T

ukcijabroj_instr

MIPSC1=( ) *

*5 1 1 10

20 10350

9

6

+ +=

MIPSC2=( ) *

*10 1 1 10

30 10400

9

6

+ +=

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:

1-19

klasa instrukcije CPI frekventnostA 2 40% B 3 25% C 3 25% D 5 10%

broj instrukcija = NI 0.4 NI 0.25 NI 0.25 NI 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:

Page 21: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

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

A 90% B 90% C 85% D 95%

1-20

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?

broj instrukcija 0.9∗0.4NI 0.9∗0.25NI 0.8925 ∗ NI 0.85∗0.25NI = NIkom 0.95∗0.1NI

(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

Page 22: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

poboljšanja. Ovakav tip mašine zvaćemo Rhps. Koliko puta je brži Rhps u odnosu na Rosn?

∑=

⎟⎠⎞

⎜⎝⎛=

n

1i

ii NI

NI*CPICPI

iklaseuččešćprocenatpi ==NINIi

Odgovor (1) CPI za Rosn iznosi: CPIRosn=2*0,4+3*0,25+3*0,25+5*0,1=2,8 CPI za Rpob iznosi: CPIRpob=2*0,4+2*0,25+3*0,25+4*0,1=2,45 (2) MIPS za Rosn i Rpob: MIPSRosn=500/2,8=179 MIPSRpob=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:

41179254 ,

MIPSMIPS

Rosn

Rpob ==

(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:

CPIkom= 1389250

950105850250390250390402 ,.

,*,*,*,*,*,*,*,*=

+++

1-21%

%

%

100N0.8925N0.40.9p

100N

N0.40.9p

001:pN:N0.40.9

A

komA

Akom

⋅⋅⋅⋅

=

⋅⋅⋅

=

=⋅⋅

Page 23: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

(5) TCPURosn=osnosn

Rosn

fcp2,8*NI

fcpCPI*NI

=

TCPUkom=komkomkom

komkom

fcp2,5*NI

fcp3,1*0,89*NI

fcpCPI*NI

==

Pri fcphps = fcposn, imaćemo sledeći odnos performansi:

1215282

TT

PRosnPRkom

CPUkom

CPUosn ,,,===

(6) CPI za Rhps i Rosn se razlikuje, a za Rhps iznosi:

CPIhps= 72810

950104850250390250290402 ,,

,*,*,*,*,*,*,*,*=

+++.

Za odnos performansi se dobija:

515002260082 ,

MHz*,MHz*,

TT

PRosnPRhps

CPurhps

CPUosn ===

Zadatak 1.14 Propusnost magistrale (BW - bandwidth), se meri u MB/s i izračunava se kao:

BW= W*t1

cik

gde je: tcik - vreme trajanja ciklusa magistrale; W - obim magistrale u bajtovima. Neka je taktna frekvencija mikroprocesora 8088 5MHz-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.

1-22

Uporediti dobijene rezultate sa performansama koje se odnose na mikroprocesor 8086 pod istim uslovima.

Page 24: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

Odgovor Magistrala podataka mikroprocesora 8088 je 8-bitna a memorijski ciklus je trajanja tcik=4*200ns=800ns.

a) BW8088= sMBBns

/,* 2511800

1=

Magistrala podataka mikroprocesora 8086 je 16-bitna, pa je:

BW8086= sMBBns

/,* 522800

1=

b) Pod uslovom da se vrši ubaciavanje jednog stanja čekanja, memorijski ciklus trajaće 5 taktnih intervala, tj. tcik=5*200ns=1000ns, a propusnost magistrale u tom slučaju iznosiće:

BW 80881

10001 1' * /= =

nsB MB s

BW 80861

10002 2' * /= =

nsB MB s

1-23

Page 25: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

1-24

Ispitni zadaci Novembar 2002. - 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

instrukcije broj

instrukcija vreme

izvršenja ubrzanje

Add 10*106 2 ciklusa 2,0 Mul 30*106 20 ciklusa 1,3 Mem 35*106 10 ciklusa 3,0

Branch 15*106 4 ciklusa 4,0 Napomena: Amdahl-ov zakon glasi ETnovo = ETstaro * ( FRneisk + ( FRisk / Spisk)) Gde je: ETnovo - novo vreme izvršenja; ETstaro - staro vreme izvršenja (pre primene inovacije); FRneisk - deo (frakcija) vremena (ne instrukcija) za koji se poboljšanja ne odnose; FRisk - deo vremena za koji se poboljšanja izvedena na mašini odnose; Spisk - 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 = ( ETstaro / ETnovo) = 1 / ( FRneisk + ( FRisk / Spisk))

Page 26: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

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 FRisk, 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*106 2 ciklusa 2,0 20*106 2% Mul 30*106 20 ciklusa 1,3 600*106 58% Mem 35*106 10 ciklusa 3,0 350*106 34% Branch 15*106 4 ciklusa 4,0 60*106 6%

ukupno 1030∗106 ciklusa

66

4

ST4N4

66

3

ST3N3

66

2

ST2N2

66

1

ST1N1

101521060

STT

106.116310350

STT

104613.110600

STT

101021020

STT

⋅=⋅

==

⋅=⋅

==

⋅=⋅

==

⋅=⋅

==

05.1985

10305135060020

1030)4(S

29.16.796

1030606.16160020

1030)3(S

15.1891

10306035061420

1030)2(S

01.110201030

60350600101030)1(S

==+++

=

==+++

=

==+++

=

==+++

=

Moguće je sada na osnovu Amdahl-ovog zakona proceniti performanse, tj. izračunati FRisk za svaki tip instrukcije i zameniti ga u izraz za

Sp = 1 / ( FRneisk + ( FRisk / Spisk)) 1-25

Page 27: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

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*106 2 ciklusa 2,0 20*106 2% 1.01 Mul 30*106 20 ciklusa 1,3 600*106 58% 1015 Mem 35*106 10 ciklusa 3,0 350*106 34% 1.29 Branch 15*106 4 ciklusa 4,0 60*106 6% 1.05 Januar-Februar 2003 - 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

Page 28: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

Napomena: Amdahl-ov zakon glasi ETnovo = ETstaro * ( FRneisk + ( FRisk / Spisk))

Gde je: ETnovo - novo vreme izvršenja; ETstaro - staro vreme izvršenja (pre primene inovacije); FRneisk - deo (frakcija) vremena (ne instrukcija) za koje se poboljšanja ne odnose; FRisk - deo vremena za koje se poboljšanja izvedena na mašini odnose; Spisk - 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 = ( ETstaro / ETnovo) = 1 / ( FRneisk + ( FRisk / Spisk)) 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) 91510320210120140 ......CPI =⋅+⋅+⋅+⋅+⋅=

915791300 ../MIPS ==

1-27

b) 17162191

5020106011209191 .

..

.....

TTUbrzanje

new

old ==⋅−⋅−⋅−

==

35p

%1000.8NI

NI0.28p

p:NI)3.01(4.0100%:NI0.8

A

A

A

=

⋅⋅

=

⋅−=⋅

5.17p

%1000.8NI

NI0.14p

p:NI)3.01(2.0100%:NI0.8

B

B

B

=

⋅⋅

=

⋅−=⋅

................

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

Page 29: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

c) Optimizacijom se smanjuje ukupan broj instrukcija za 20%, s obzirom da je 0.12+0.06+0.02=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 ( ) 358.0

3.0140=

− 1

Load ( ) 5.178.0

3.0120=

− 1

Store 5.128.0

10= 2

Branches 258.0

20= 3

Floating point ( ) 108.0

2.0110=

− 5

Na osnovu Tabele 2 za optimizovani program se dobija: CPI = 1.62/0.8= 2.025, MIPS= 300/2.025 = 148.1.

1-28

Page 30: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

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

Page 31: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

Mikroprocesor 8086 Definisanje pinova

2-1

Page 32: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

Karakteristike mikroprocesora 8086

• 16-bit Arithmetic Logic Unit • 16-bit data bus (8088 has 8-bit data bus) • 20-bit address bus - 220 = 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 8086

2-2

Page 33: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

Registri jedinice za povezivanje na magistralu (BIU) i registri izvršne jedinice (EU)

ESCSSSDSIP

AH BH CH DH

ALBLCLDL

SPBPSID

FLAGS

AX BX CX DX

Extra Segment Code Segment Stack Segment Data Segment Instruction Pointer

Accumulator Base Register Count Register Data Register Stack Pointer Base Pointer Source Index RegisterDestination Index Register

BIU registers

EU registers

Carry flag

Parity flag

Auxiliary flag

Zero

Overflow

2-3

Direction

Interrupt enable

Trap

Sign6 are status flags 3 are control flag

Page 34: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

Registarski model procesora 8086

2-4

CS

SS

DS

ES

Segment

BP

Index

SP

SI

DI

AH

BH

CH

DH DL

CL

BL

AL

General Purpose

Status and Control

Flags

IP

AX

BX

CX

DX

Page 35: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

Organizacija memorije

00000

10000

20000

30000

40000

50000

60000

70000

80000

90000

A0000

B0000

C0000

D0000

E0000

F0000

8000:0000

8000:FFFF

seg ofs

8000:0250

0250

2-5

Page 36: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

Određivanje fizičke adrese

Offset Value (16 bits)

Segment Register (16 bits) 0 0 0 0

Adder

2-6

Offset:

Physical Address (20 bits)

0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1

2 9

0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Segment:

0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 Address:

Page 37: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

2-7

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.

Page 38: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

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

2-8

operacija prvi operand

drugi operand

rezultat naredna adresa

a) četvoro-adresni format

operacija prvi operand

drugi operand

rezultat

b) tro-adresni format

operacija prvi operand

i

drugi operand

c) dvo-adresni format

operacija registar drugi operand

d) jedno-i-po-adresni format

operacija drugi operand

e) jedno-adresni format

operacija

f) nulto-adresni format

Slika 2.1 Formati instrukcija

Page 39: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

Formiranje efektivne adrese operanda instrukcije

memorija

e)

RF polje

memorija

f)

RF polje

d)

opkôd

memorija

a)

b)

c)

e)

memorija

g)

RF polje memorija

h)

RF polje memorija

j)

memorija

opkôd adresa

adresa

operand

opkôd operand

operand

operand

opkôd operand

operand

operand

opkôd adresa

operand

registar

opkôd ofset

operand

opkôd adresa ofset

adresa operand

opkôd adresa baza

index operand

+

+

+

opkôd baza

+ operand+

registar

+1(-1)

i)

opkôd

Slika 2.2 : Načini adresiranja

registarsko direktno

implicitno

neposredno

memorijsko direktno

registarsko indirektno

memorijsko indirektno

PC relativno registarsko relativno

indeksno sa autoinkr./ dekrem.

bazno indeksno

2-9

Page 40: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

2-10

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 1000. • 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:

Page 41: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

.

.

.

.

.

. opkôd Add

1000 . . .

2000 . . .

150

20 170 +R1pre početka Add nakon završetka Add

R1

memorija adresa

A A+1

1000

2000

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:

.

. .

.

.

. opkôd Jmp

1000 . . .

2000 . . .

3500

3500 PC

nakon završetka instrukcije JMP[1000]

memorija adresa

A A+1

1000

2000

I u ovom slučaju upravljačka jedinica se obraća memoriji četiri puta.

2-11

Page 42: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

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

.

.

.

opkôd modeADR ili NOPR=500

opkôd naredne instrukcije...

700...

800...

600...

300...

250251252

400

500

752

800

memorijaadrese

250PC

400R1

Acc

200...

900

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] 500 800 neposredni Lda #NOPR Acc ← NOPR 251 500 indirektni Lda [ADR] Acc ← M[M[ADR]] 800 300 relativni Lda $ADR Acc ← M[ADR+PC] 752 600 indeksni Lda (R1)ADR Acc ← M[ADR+R1] 900 200 registarski Lda R1 Acc ← R1 - 400 registarsko-indirektni

Lda [R1] Acc ← M[R1] 400 700

Slika 2.9 : Simbolička konvencija kod adresnih načina rada 2-12

Page 43: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

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 jedno-operandskih 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 2

6

0 0 0 0

. . .1 1 1 0

k = 15 dvo-operandskih instrukcija

Kod jedno-operandskih instrukcija važiće format:

4 + 6

opkod operand

6

1 1 1 1 0 0 0 0 0 0

. . . .1 1 1 1 1 1 1 1 1 0

m = 63 jedno-operandske instrukcije

Kod nulto-operandskih instrukcija imaćemo format:

opkod

16

1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0. . . .

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

m = 64 nulto-operandskeinstrukcije

Za rešavanje ovog problema korišćena je tehnika kodiranja sa proširenjem.

2-13

Page 44: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

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 ; Rm ← M[Rn] Sto- Rm,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; smanji se vrednost SP za 1 i u praznu mem. lokaciju smešta se Rk

SP ← SP-1 M[SP] ← 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

Page 45: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

2-15

(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 2.11-2.13.

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

Page 46: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

2-16

tip grananja mnemonik

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 mnemonik

uslov statusni bitovi

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=00110101 i B=11000100. (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)

Page 47: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

(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 2n a znak minus pridružiti rezultatu. Kada se javi pozajmljivanje imamo da je rezultat jednak A-B+2n, gde 2n predstavlja vrednost pozajmljivanja na MS bit poziciji. Umesto ovog rezultata, željeni moduo je B-A. On se može dobiti oduzimanjem prethodne formule od 2n, tj. 2n-(A-B+2n)=B-A U konkretnom primeru treba da oduzmemo sledeća dva binarna broja A=00110101 i B=11000100. Borrow 1 1 0 0 0 0 0 0 A 0 0 1 1 0 1 0 1 B - 1 1 0 0 0 1 0 0 početni rezultat 0 1 1 1 0 0 0 1

2-17

MS Borrow je 1 a to ukazuje da je potrebno izvršiti korekciju rezultata 28 1 0 0 0 0 0 0 0 0 -početni rezultat - 0 1 1 1 0 0 0 1 konačni rezultat - 1 0 0 0 1 1 1 1

Page 48: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

(napomena : Do istog rezultata se dolazi formiranjem razlike B-A Borrow 0 0 1 1 1 1 1 1 B 1 1 0 0 0 1 0 0 A 0 0 1 1 0 1 0 1 konačni rezultat - 1 0 0 0 1 1 1 1

2-18

(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+(2n-B)=A-B+2n. (jj) ako je A≥B, suma će generisati Carry na mesto MS bit pozicije, tj. 2n. 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 2n-(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 = 0 0 1 1 0 1 0 1 dvojični komp. od B = 0 0 1 1 1 1 0 0 rezultat_ime = 0 1 1 1 0 0 0 1 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 01110001)=- 10001111 (a2) oduzimanje dva označena broja kada se za negativne brojeve koristi notacija dvojičnog komplementa obavlja se shodno

Page 49: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

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 +127. Logika za detekciju Overflow oblika je kao na Slici 2.14.

n n

n

CinCn-1

Cn

V

C

BA

F

Slika 2.14 : Logika za Carry i Overflow

U konkretnom slučaju imamo A=00110101=+53 dok je B=11000100=-60, pa će razlika biti A = 0 0 1 1 0 1 0 1 (+53) dvojični komplement od B = 0 0 1 1 1 1 0 0 (+60) rezultat 0 1 1 1 0 0 0 1 (+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

Page 50: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

2-20

(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>.

Page 51: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

2-21

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

Page 52: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

2-22

Zadatak 2.11 Neka je dat skup od četiri procesora P0, P1, P2 i P3, gde je Pi i-to adresna mašina. P0 je nulto-adresna stack mašina, dok su P1, P2 i P3 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 8 + 4 + 16 = 28 bitova).

Page 53: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

2-23

Odgovor

instrukcija

dužina

instrukcija dužina

instrukcija dužina

instrukcija dužina

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

Page 54: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

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

Upravljačajedinica

SP

Aritmetičo-logičk

jedinica

Magacin

TOS

TOS - vrh magacina

. . .

. . .

a) program

Push W Push 3 Push X Push Y Sub Mul Add Pop Z

a) Program za odredjivanje izraza i princip rada mašine

. . .

. . .

. . .

. . .

. . .

. . .

. . .

. . .

. . .

. . .

. . .

. . .

. . .

. . .

. . .

. . .

w w w w

w w w+3(x-y) w+3(x-y)

3 3 3

3

x xy

x-y3(x-y)

w+3(x-y)

TOSTOS

TOSTOS

TOSTOS

TOS TOS

z z z z

z z z z

Push w Push 3 Push x Push y

Sub Mul Add Pop z b) Izgled magacina u toku izvršenja programa

Slika 2.26. Princip rada stack mašine 2-24

Page 55: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

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 adresa13000h

DS*10h+DISP10000h+3000h

memorijskaadresa

memorijskalokacija

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

Page 56: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

2-26

a) MOV BH,38h ;BH = 38h ADD BH,2Fh ;38h + 2Fh = 67h = BH 38 0 0 1 1 1 0 0 0 + 2F + 0 0 1 0 1 1 1 1 67 0 1 1 0 0 1 1 1 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 1 0 0 1 1 1 0 0 + 6 4 0 1 1 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 CF = 1, PF = 1, AF = 1, ZF = 1, SF = 0 c) MOV AX,34F5h ; AX = 34F5h ADD AX,95EBh ; AX = CAE0h 3 4 F 5 0 0 1 1 0 1 0 0 1 1 1 1 0 1 0 1 + 9 5 E B 1 0 0 1 0 1 0 1 1 1 1 0 1 0 1 1 CA E 0 1 1 0 0 1 0 1 0 1 1 1 0 0 0 0 0 CF = 0 , PF = 0, AF = 1, ZF = 0, SF = 1 d) MOV BX,AAAAh ; BX = AAAAh ADD BX,5556h ; BX = 0000h AAAA 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 + 5 5 5 6 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 2 1 0 0 1 0 1 0 0 1 1 0 0 0 0 1 0 + 3 2 3 E 0 0 1 1 0 0 1 0 0 0 1 1 1 1 1 0 C 7 0 0 1 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 CF = 0, PF = 0, AF =1, ZF = 0, SF = 1

Page 57: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

2-27

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 2.18.

Page 58: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

2-28

; 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

Page 59: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

2-29

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. 2.18. 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.

Page 60: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

2-30

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

Page 61: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

2-31

Test pitanje 2.30 Tri koraka u procesu kreiranja izvršivih programa na asemblerskom jeziku mikroprocesora 80x86 prikazana su na Slici 2.19. 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.asm2. 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 2.20. • "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

Page 62: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

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.

ASEMBLER(program)

EDITOR (program)

LINKER (program)

mojfajl.asm

mojfajl.crt drugi.obj fajlovi

mojfajl.map

mojfajl.exe

mojfajl.lst

Slika 2.20 Koraci u generisanju izvršivih programa

2-32

Page 63: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

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

2-33

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

Page 64: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

Zadatak 2.20 ASCII kôdovi za mala i velika slova prikazani su na Slici 2.21.

slovo Heksa decimalna vrednost

slovo Heksa decimalna vrednost

A 41 a 61 B 42 b 62 C 43 c 63 D 44 d 64 . . . . . . . . . . . . . . . . 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.

2-34

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

Page 65: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

2-35

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,11011111b ;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 "8473251064" ORG 0010h NEPAK DB 10 DUP(?) Napisati programsku sekvencu na asemblerskom jeziku mikroprocesora 80x86 za konverziju ASCII znakova u nepakovane BCD brojeve. Odgovor

Page 66: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

2-36

Odgovarajući ASCII formati u heksadecimalnom i binarnom kôdu kao i BCD nepakovanom kôdu su oblika

dirka ASCII (hex) binarni BCD nepakovani

0 30 0011 0000 0000 0000 1 31 0011 0001 0000 0001 2 32 0011 0010 0000 0010 . . . . . . . . . . . . 8 38 0011 1000 0000 1000 9 39 0011 1001 0000 1001

Konverzija ASCII kôda u nepakovani BCD kôd vrši se logičkom operacijom And ASCII broja sa "0000 1111" (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

Page 67: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

2-37

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.

Page 68: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

2-38

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 10000010h 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:

Page 69: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

pakovani BCD napakovani BCD ASCII 29 h 02 h & 09 32 h & 39 0010 1001 0000 0010 & 0000 1001 0011 0010 & 0011 1001 Programska sekvenca biće oblika VRED_PBCD DB 29h

2-39

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 412963Bh 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

Page 70: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

2-40

Nakon SUB, AX=62FA-963B=CCBF i CF=1. Kako je CF=1 kada se obavi SBB imaćemo AX=625-412-1=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

Page 71: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

2-41

(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. 2.22 ilustracije radi za jedan isti program prikazana je uporedna prezentacija potpune i pojednostavljene definicije segmenata.

Page 72: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

2-42

; 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. 2.23. 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 ?

Page 73: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

2-43

.CODE POCETAK: MOV AX,@DATA 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 2.24. TITLE PROG 2 pojednostavljena definicija segmenta PAGE 60,132 .MODEL SMALL .CODE

Page 74: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

2-44

GL_P MOV AX,@DATA 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 2. 24 : 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

Page 75: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

Odgovor TITLE PROG_KON ASCII u BCD konverzija i sabiranje PAGE 60, 132 SMAG SEGMENT DB 64 DUP (?) SMAG ENDS ;---------------------------------------------------------------------------------------

2-45

PSEG SEGMENT POD1_ASC DB '2731947290' ORG 0010h POD2_ASC DB '3276401832' 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

Page 76: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

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

2-46

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

Page 77: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

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 ; smesti sumu DEC DI ; ukaži na naredne bajtove

5 bajtova po operandu, pribavljamo poslednji bajt

DEC BX

2-47

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

DAA (decimal adjust after addition) - nakon sabiranja BCD brojeva DAS (decimal adjust after subtraction) - nakon oduzimanja BCD brojeva

- Instrukcije za korekciju rezultata (koji je u AL) u BCD format:

Page 78: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

AAS (ASCII adjust after subtraction) - podešava registar AX nakon ASCII oduzimanja, za rezultat se usvaja da je 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.

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

AAA (ASCII adjust after addition) - nakon sabiranja dva BCD broja, konvertuje rezultat (koji je u AL) u korektnu BCD formu

- ASCII aritmetičke instrukcije:

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

Page 79: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

Odgovor a) MOV AL,'5' ; AL = 35 ADD AL,'2' ; AL = 35 + 32 = 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 = 37 + 35 = 6C AAA ; AL = 02 AH = CF = 1 OR AX,3030h ; AX = 3132

IDIV - Signed divide: when operand is a byte: when operand is a word: AL = AX / operand AX = (DX AX) / operand AH = remainder (modulus). DX = remainder (modulus).

DIV - Unsigned divide: when operand is a byte: when operand is a word: AL = AX / operand AX = (DX AX) / operand AH = remainder (modulus).. DX = remainder (modulus).

IMUL - Signed multiply: when operand is a byte: when operand is a word: AX = AL * operand. (DX AX) = AX * operand.

MUL - Unsigned multiply: when operand is a byte: when operand is a word: AX = AL * operand. (DX AX) = AX * operand.

2-49

Page 80: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

2-50

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.

Page 81: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

2-51

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 ; svako ime može biti u posebnoj EXTRN EXTRN ime_2: tip EXTRN ime_3: tip, ime_4:tip ;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

Page 82: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

2-52

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:

Page 83: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

2-53

(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.

Page 84: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

2-54

Jedan tipičan način predaje parametara preko registara prikazan je na Slici 2.34. 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

Page 85: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

2-55

; 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.

Page 86: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

2-56

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

Page 87: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

2-57

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

Page 88: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

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.

YYXX

39C8

8436

4157

CS

IP

BP

200120001FFF1FFE1FFD1FFC1FFB1FFA1FF91FF81FF71FF61FF51FF41FF31FF2

SP (pre Push VR3nakon Ret 6)

SP (nakon PushVR3)

SP (nakon PushVR2)

SP (nakon PushVR1)

SP (nakon Call PP_6,nakon Pop BP)

SP (nakon PushBP)

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:

2-58

(1) koja operacija treba da se obavi, tipični primeri su ADD, MOV, LDA, SUB,...

Page 89: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

2-59

(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 jedno-adresnih 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

Page 90: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

2-60

(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) + 1234H + (SI * 2) = 02000H + 1234H + (2000H * 2) = 07234H

Page 91: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

2-61

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

3 15 15 3 000 - 110 adr adr reg

• 500 instrukcija 3 9 6 15 3

111 000h - 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

3 9 6 18 111 1FFh 00h - 31h xxxxxh

Page 92: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

2-62

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>

Page 93: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

2-63

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

Page 94: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

2-64

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,11011111B JMP DALJE IZVAN: CMP AL,41H JB IZVAN1 CMP AL,5AH JA IZVAN1 OR AL,00100000B 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

Page 95: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

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:

N! - M! 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

Page 96: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

2-66

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

Page 97: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

2-67

Dodatak

Direktive asemblera Directives, or as they are sometimes called, pseudo-ops or pseudo-instructions, 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,10000011b 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.

Page 98: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

2-68

VALUE1 DD 4563F57H

RESULT DD ? ; RESERVE 4-BYTE LOCATION DAT4 DD 25000000

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 10000000000000

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 99 20 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)

Page 99: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

2-69

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 00001111B

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

Page 100: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

2-70

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 22229999H ... 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

Page 101: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

DATA1 DB 2FH

2-71

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

Page 102: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

2-72

DATA2 DW 1200 DATA3 DD 99999999H 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 characters. “?” “.” “@”” “_” “$” 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

Page 103: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

2-73

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:

Page 104: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

2-74

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 $ * + - . / = ? [ ]

Page 105: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

2-75

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 .186 .286 .286P .287 .386 .386P .387 .8086 .8087 .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

Page 106: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

Shift and rotate

2-76

Page 107: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

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

Page 108: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

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, TALU, iznosi 50ns. Vreme postavljanja signala (setup time - TS) za registre iznosi 8ns, vreme dr`anja (hold time- TH) je 5ns, a vreme dozvole rada izlaznih stepeni, TOE 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.

Page 109: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

. . .

internamagistrala B

internamagistrala A

magistrala podataka

adresna magistrala

interni pluseksterni upravlja~ki

signali

IR + dekoderinstrukcija

MDR

MAR

PC

SP

R0

Rn

Y

AddSubupravlja-

~kisignali

mag_B mag_ACin

set

reset

ALUBA

F

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)

Page 110: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

Vreme potrebno da se obavi aktivnost, specificirana kao a.1.1, iznosi:

Ta.1.1=TOE+Tmag_A+Ts+TH

=5+10+8+5=28ns

Vreme potrebno da se obavi aktivnost a.1.2 iznosi:

Ta.1.2=TALU+Tmag_B+Ts+TH

=50+10+8+5=73ns

Izlaz registra Y direktno je povezan na ulaz A ALU-a pa zbog toga nije uzeto u obzir ka{njenje TOE 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 Ta.1.2>Ta.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.:

TUa1=2*Tcp=150ns

Page 111: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

dekoderinstrukcija

IR

PC

MAR

internamagistrala

MDR

R0

.

.

.

Rn-1

Y

AddSubupravlja-

~kisignali

Z

Sistemskamagistrala

Adresnelinije

Linije zapodatke

mag_A

interni pluseksterniupravlja~kisignali

ALUBA

F

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:

Ta2=TOE+Tmag_A+TALU+Tmag_B+Ts+TH

=5+10+50+10+8+5=88ns

Usvoji}emo da je Tcp=90ns

Page 112: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

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: (PC)→(Y)

b.1.2: (Y)+1→(PC)

Vreme potrebno da se obavi b.1.1 iznosi:

Tb.1.1=TOE+Tmag_A+Ts+TH

=5+10+8+5=28ns.

Vreme potrebno da se obavi b.1.2 iznosi:

Tb.1.2=TALU+Tmag_B+Ts+TH

=50+10+8+5=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:

Tub1=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:

Tb2=TOE+Tmag_A+TALU+Tmag_B+Ts+TH

=5+10+50+10+8+5=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:

Page 113: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

k11: (Rm)→(Z)

k12: (Z)→(Rz)

Odgovaraju}a vremena bi}e:

Tk11=TOE+Tmag_A+TALU+Ts+TH

=5+10+50+8+5=78ns

Tk12=TOE+Tmag_A+Ts+TH

=5+10+8+5=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:

Tuk1=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:

Tk21=TOE+Tmag_A+TALU+Ts+TH

=5+10+50+8+5=78ns

ALU obavlja operaciju F=A+1 za:

Tk22=TOE+Tmag_A+Ts+TH

=5+10+8+5=28ns.

Ako usvojimo da je Tcp=80ns, tada ukupno za izvr{enje operacije (PC)→(PC)+1 potrebno je vreme od

Tk2=2*Tcp=160ns

Page 114: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

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 tc=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 (4tw). Tako da je ukupno vreme pristupa memoriji, tACU, sada jednako:

tACU=tc+4tw=5tw=500ns, gde je tw=tc=100ns.

Odavde se mo`e videti da je tACU za 50ns du`e od potrebnog vremena pristupa memoriji.

Page 115: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

IR

d ek o d er in stru k c ija +u p rav lja~k a lo g ik a

Y

k am em o riji

ad resn am ag istra la

m ag istra lap o d a tak a

Z

A d dS u bu p rav lja~k

isig n a liA L U -a

M D R

M A R

P C

S P

R 0

R n -2

C i

rese t

se t

C in

A L UBA

F

in te rn iu p rav lja~k isig n a li

in te rn am ag istra la

a) Organizacija staze podataka CPU-a oko jedinstvene interne

magistrale

Page 116: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

R(i-1)

Y

Z

interna magistralaCPU-a

R(i-1)in

R(i-1)out

YinYout

Cin

Zin

Zout

ALUBA

F

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.

Page 117: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

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

Page 118: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

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:

Page 119: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

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; (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

Page 120: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

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

. . .

internamagistrala B

internamagistrala A

magistrala podataka

adresna magistrala

interni pluseksterni upravlja~ki

signali

IR + dekoderinstrukcija

MDR

MAR

PC

SP

R0

Rn

Y

AddSubupravlja-

~kisignali

mag_B mag_ACin

set

reset

ALUBA

F

Z

Slika 3.4: Interna oranizacija CPU-a oko dve magistrale

Page 121: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

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

Page 122: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

. . .

ka memoriji i U/Ipodsistemu

magistrala podataka

adresna magistrala

interni pluseksterni upravlja~ki

signali

IR + dekoderinstrukcija

MDR

MAR

PC

SP

R0

Rn-2

Y

AddSubupravlja-

~kisignali

mag_2 mag_1Cin

set

reset

ALUBA

F

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 ALU-a, 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)

Page 123: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

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: korak

akcije komentar

1. PCout, MUX0, F=B, MARin, Yin, Read ; pribavi se opkôd ins.

2. Yout, MUX1, F=A+B, PCin, Wait for Ready ;

3. MDRLout, IRin ;

4. PCout, MUX0, F=B, MARin, Yin, Read ; druga re~ instrukcije

5. Yout, MUX1, F=A+B, PCin, Wait for Ready ; ofset=200

6. MDRLout, MUX0, F=B, Yin ; privrem. sme{t. u Y

7. R3out, MUX0, Yout, F=A+B, MARin, Read ; formira se M(R3+200)

8. D4out, MUX0, F=B, Yin, Wait for Ready ; D4→Y 9. MDRLout, MUX0, F=A-B, MARin, D4in ; D4-M(R3+200) →D4

Page 124: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

Operacija je tipa D1-(R2), R2+2→R2, a sekvenca: korak

akcije komentar

1. PCout, MUX0, F=B, MARin, Yin, Read ; pribavljanje opkôda instrukcija

2. Yout, MUX1, F=A+B, PCin, Wait for Ready ;

3. MDRLout, IRin ;

4. R2out, MUX0, F=B, Yin, MARin, Read ; prihvata se podatak sa lokacije

5. Yout, MUX1, 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)

32

dekoderinstrukcija

IR

MAR

MDRH | MDRL

PC

R0

R7

InternamagistralaA

Internamagistrala

B

adresnelinije

linijezapodatke

D0

D7

2

32 32

Y

16

M 0 U X 1

mag_Amag_A

upravlja~kisignali

ALUBA

F

Slika 3.6 : Interna organizacija 32-bitnog CPU-a organizovanog

oko dve magistrale

Page 125: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

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.

Page 126: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

Upravlja~ka jedinica

IR

PC

MAR

32 registra RF polje

MDR

S C O Zmarker registar

D_mag S1_mag S2_mag

adrese

podaci

upravlja~kisignali

ALU

B

A

F

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

Page 127: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

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

25=32 registra Format instrukcije imao bi oblik:

opkôd Rd Rs1 Rs2 neiskori{}eno

6 5 5 5 11

B. Kod aritmeti~ko logi~kih instrukcija tipa registar-konstanta imali bi slede}e aktivnosti

11+5=16 bitova za konstantu S1_mag ← Rs1; S2_mag ← IR15-0

D_mag ← S1_mag <ALUop> S2_mag Rd ← D_mag

Page 128: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

MAR ← PC

IR ← MDR

PC ← PC+4

dekodiranje

registar-registar

registar-konstanta

obra}anjememoriji

branch

store

dekodiranje

pribavljanjeinstrukcije

izvr{enje

Slika 3.13 Dijagram stanja ciklusa pribavljanje/dekodiranje

S1_mag ← Rs1S2 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 Rs1 konstanta

6 5 5 16

Page 129: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

C. Instrukcija Load/Store ima slede}e karakteristike:

Kod obe instrukcije Load/Store adresa memorijske lokacije se specificira sadr`ajem izvornog adresnog registra Rs1 plus neposrednim 16-bitnim ofsetom koji je sastavni deo instrukcije.

opkôd Rd Rs1 16-bitni ofset

odredi{ni adresni

a) Load format

opkôd Rd Rs1 16-bitni ofset

izvori{ni adresni

b) Store format

Aktivnosti koje se obavljaju u toku Load instrukcije su slede}e (klju~ne sa aspekta razumevanja): S1_mag ← Rs1; S2_mag ← IR15-0

D_mag ← S1_mag + S2_mag MAR ← D_mag D_mag ← MDR ; MDR->S1_mag, D_mag <- S1_mag <ALU*op>

na D_mag je adresa mem. lokac. sa koje treba pročitati podatak

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 ← IR15-0

D_mag ← S1_mag + S2_mag MAR ← D_mag

na D_mag je adresa mem. lokac. u koju se smešta sadržaj registra Rd S1_mag ← Rd

MDR ← S1_mag 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

Page 130: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

Pogodan format instrukcija je:

opkôd Rd Rs1 16-bitni ofset

odredi{ni izvori{te 1 izvori{te 2

gde, za konkretni slu~aj, R4 je Rd, R5 je Rs1, a L1 = PC + 16-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. ALUop ← PC + IR15-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:

opkôd 26 bitni ofset

6 26

Page 131: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

I u ovom slu~aju koristi se PC relativno adresiranje, tj.

PC ← PC + IR25-0

Pored PC-relativnog adresiranja, za realizaciju Branch i Jump instrukcija mogu}e je koristiti i registarsko indirektno adresiranje. Format instrukcije Jump koja koristi registarsko-indirektno adresiranje ima oblik

opkôd ne koristi se Rs1 16-bitni ofset

6 5 5 16

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 ← IR15-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.

Page 132: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

PC13 PC0

ACC7 ACC0

ACC

PC

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 214 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.

Page 133: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

8IR

15 13 7 0

7 0

07

13 0

13 0

MAR

PC

memorija

MDR

ACC

7 0

- +

ALU

8

8

8

1414

14

14 0000h bazna adresa

3FFFh max. adresa

adresapristupa

Slika 3.18 Implementacija MIN-a

Svaku instrukciju MIN-a ~ine dva bajta. Format instrukcije prikazan je na Slici 3 19. 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 3.20. 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

15 13 0

Slika 3.19 Format instrukcija MIN-a

Page 134: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

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:

korak G1

korak G2

korak G3

korak G4

D1. kopira se PC u MARD2. READ memorijaD3. kopira MDR u levu polovinu IR-aD4. inkrementira PCD5. kopira PC u MARD6. READ memorijaD7. kopira MDR u desnu polovinu IR-a

D8. inkrementira PC

D9. if bit IR15≠0 or IR14≠0, go na drugo mesto

D10. kopiraj IR13...IR0 u MARD11. kopiraj ACC u MDRD12. WRITE memorijaD13. go to korak D1

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:

Page 135: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

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 ACC7, tj. ako je ACC7=1 dolazi do grananja, a za slu~aj da je ACC7=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.

Page 136: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

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 ACC7=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 ACC7=1 JNG Y; go to Y

Page 137: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

Test pitanje 3.12 Struktura jednostavnog akumulatorski-zasnovanog procesora prikazana je na Slici 3.21.

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.

Dekoderinstrukcija

IR MAR PC

Upravlja~kisignali

Upravlja~kajedinica (UJ)

DR ACC

Sistemska magistrala

ALU procesnajedinica

(PJ)

ka/iz memorije iliU/I uredjaja

Slika 3.21 Jednostavna akumulatorski-zasnovana CPU jedinica

Page 138: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

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.

S

16

1

16

16

16

1

ta~kaprespajanja

1 na 16

DR15:DR0

DR31:DR16

Ka memoriji

01531

DR15

DR registar

E1

01 1

0 1S

MUX1 2-na-1

0 1S

MUX1 2-na-1

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

Page 139: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

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 3.23.

DR3DR7

0

S MUX1 4 na 1

123

15 7 3 031DR15

DR15 DR7 DR3

DR15:DR8

Ka memoriji

S

2

2

2

16161616

8888

DR7:DR4

1

8 4

444DR3:DR0

16

DR - registar

0S

1MUX32 na 1

S

0

S MUX2 4 na 1

123

2

Slika 3.23 Logika za upis podataka u memoriju koja koristi

mogu}nost pro{irenja znaka

Page 140: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

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.

n

S1 S00 MUX1 3 na 12

Load

R0

Load

R1

Load

R2

L0 L1 L2

punjenje

selekcija

n

n

n

n

n

Slika 3.32 Ulazi registara povezanih na jedinstvenu

magistralu

Odgovor registarski prenos

selekcija S1 S0

punjenje L2 L1 L0

R0←R2 1 0 0 0 1 R0←R1, R2←R1 0 1 1 0 1 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.

Page 141: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

Odgovor registarski prenos

selekcija punjenje

S2 S1 S0 L2 L1 L0 R0←R2 x x 0 0 0 1

R0←R1, R2←R1 1 x 1 1 0 1 R0←R1, R1←R0 * ne preporu~uje se kod transparentnih le~eva

** x 0 1 0 ↓ ↓ 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

n

S0 MUX01 2 na 1

S0 MUX11 2 na 1

S0 MUX21 2 na 1

L

Ul R0 Iz

L

Ul R1 Iz

L

Ul R2 Iz

S0 L0

S1

S2

L1

L2

n

n

n

n

Slika 3.33 Ulazi registara povezani na namenske

multipleksere

Page 142: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

Zadatak 3.19 Logi~ka struktura registra sa bidirekcionim ulazom prikazana je na Slici 3.34.

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.

l

R

punjenje

En

n n

n

≡ R

Load

En

n

Slika 3.34 Simbol registra sa bidirekcionim ulazno-izlaznim linijama

R0

L0

E0

n

R1

L1

E1

n

R2

L2

E2

n

E2 E1 E0

dozvola L1L2

punjenje

Slika 3.35 Tro-stati~ka magistrala koja koristi registre sa

bidirekcionim linijama

Page 143: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

Odgovor registarski prenos

dozvola

E2 E1 E0 punjenje

L2 L1 L0 R0←R2 1 0 0 0 0 1 R0←R1, R2←R1 0 1 0 1 0 1 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

B_adreseA_adrese2 2

n n

n 2

Write D_podaci D_adrese

4*n RF polje

A_podaci B_podaci

Slika 3.36. Blok {ema RF polja

Odgovor

Page 144: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

0 Sel1 M2 U Y3 X

0 Sel1 M2 U Y3 X

R0load

R1load

R2load

R3load

n

n

n

n

0 1 2 3

dekoder

2D_ adrese

1

Write D_podaci

n

A_podaci

A_adrese B_adrese

n

n

n

n

n

n

n

nn

n n

2 2

B_podaci

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

1iix

Page 145: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

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 + xi

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 xi 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

Page 146: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

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

8 7 6 5 4 3 2 1 0

selekcija ulaza

ALU upravljanje

iznos i smer pomeranja

upravljanje akumulatorom

dozvola 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,

Page 147: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

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

selektorS

456

ALU

MS1

S0

12 pomera~

IL IR

S1

S0

S23

0

7

11

8-10

12-14

1516-18

ClK

WAWE

RAAREA

RABREB

8*mRF polje

3

3

3

izlazni_port

rezultantna mag.

A B

mag A mag B

"0" "0"

19

a) Staza podataka

M F1 F0 ALU operacija 0 0 0 komplement A 0 0 1 AND A 0 1 0 ExOR A 0 1 1 OR A 1 0 0 dekrement A 1 0 1 Add 1 1 0 Sub 1 1 1 inkrement A b) Rad ALU-a

S2 S1 S0 rad Pomera~a 0 0 0 prolaz 0 0 1 prolaz 0 1 0 ne koristi se 0 1 1 ne koristi se 1 0 0 pomeranje ulevo 1 0 1 rotiranje ulevo 1 1 0 pomeranje udesno 1 1 1 rotiranje udesno c) Rad Pomera~a

Page 148: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

9 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 S adresa upisa

WA, WE adresa ~itanja A

RAA, REA adresa ~itanja B

RAB, REB

ALU operacija M, F1-F0

operacija pomera~a

S2-S0

OE

d) Upravlja~ka re~ Slika 3.68 Staza podataka sa 3-portnim RF poljem

Zadatak 3.33 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).

1

RW3

DA3

AA

Write D podaci

D adrese 8 * nA adrese RF polje B adrese

A podaci B podaci

1 0 MUX B

Funkcionalnajedinica

A B

n

n

1

n nn

3

1

1

1

1

V

C

N

Z

0 1 MUX B

5

nn

1

Ulaz podataka

FS

MD

Bus A

Bus D

Adresni izlazi

Izlaz podataka

MB

Ulaz konstante

BA

nBus D

n

a) blok dijagram staze podataka

Page 149: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

Napomena: Svi upravlja~ki signali su ozna~eni kao: XY

DA AA BA MB FS MD RW

16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

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ôdR0 000 Registar 0 F=1 00000 Funkcija 0 nema Write 0 R1 001 Konstanta 1 F =A+1 00001 ulaz podat. 1 Write 1 R2 010 F=A+B 00010 R3 011 F=A+B+1 00011 R4 100 F=A+/B 00100 R5 101 F=A+/B+1 00101 R6 110 F=A-1 00110 R7 111 F=A 00111 F=A∧B 01000 F=A∨B 01010 F=A⊕B 01100 F=/A 01110 F=srA 10000 F=slA 10001

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:

Page 150: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

Polje: DA AA BA MB FS MD RW Simbol: R1 R2 R3 Registar F=A+/B+1 Funkcija Write Binarna vrednost:

001 010 011 0 00101 0 1

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 WriteR4← ulaz podatka R4 - - - - 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-R3 001 010 011 0 00101 0 1 R4←sl R6 100 110 000 0 10001 0 1 R7←R7+1 111 111 000 0 00001 0 1 R1←R0+2 001 000 000 1 00010 0 1 izlaz podatka←R3 000 000 011 0 00000 0 0 R4←ulaz podatka 100 000 000 0 00000 1 1 R5←0 101 000 000 0 01100 0 1

Page 151: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

Ispitni zadaci Jun 2003 - 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).

32

dekoder instrukcija

IR

MAR

MDRH | MDRL

PC

R0

R7

Interna magistrala A

Interna magistrala

B

adresne linije

linije za podatke

D0

D7

2

32 32

Y

16

M 0 U 1 X 2 3

mag_Amag_A

upravlja~ki signali

ALUBA

F

0

(-1)

2 0

4

TEMP

Slika 1: Interna organizacija 32-bitnog CPU-a

oraganizovana oko dve magistrale

Page 152: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

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 Yi≡i→Y (i=0,2,4); Yin≡Mag_B→Y MUXi= 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:

opkod

neposredni operand 0A1h

PC

PC+2

korak akcije komentar

1. PCout, MUX0, Set Y0, Yout, F=A+B, Yin, MARin, ReadL

; pribavljanje opkôda instrukcije

2. Yout, MUX2, F=A+B, Yin, PCin, Wait for Ready ; (PC)=(PC)+2

3. MDRLout, IRin, MUX1, Yout, F=A+B, MARin, PCin, ReadH

4. MUX2, Yout, F=A+B, PCin, Wait for Ready ; (PC)=(PC)+2

5. MDRHout, MUX0, Set Y0, Yout, F=A+B, Yin ; neposredni operand sme{ta se u Y

6. R1out, MUX0, Yout, F=A+B, MARin, Read

7. Wait for Ready

8. MDRLout, MUX0, Set Y0, Yout, F=A+B, Yin ; M(R1+0A1h)→Y

9. Yout, MUX3, F=A+B, MDRLin, Write ; dekrementiranje

10. Wait for Ready, End

Page 153: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

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

Page 154: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

ARLD

6 [5:0] 6 6ARBus

PCLD INC

6 [5:0] 6 6RCBus

DRLD

8 8 8DRBus

ACLD INC

8 8 8ACBus

IRLD

2 [7:6] 2 2IRBus

ALU

ARLOAD

PCLOAD PCINC

DRLOAD

ALUSELACLOAD ACINC

IRLOAD

8-bitna magistrala

clk

MEMBus

D[7:0]A[5:0]

MRead

6

8

Slika 2.2 Staza podataka jednostavnog CPU-a

Page 155: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

FETCH 1

FETCH 2

FETCH 3

ADD1

ADD 2

AND 1

AND 2

JMP1 INC1

IR=00 IR=01 IR=10

IR=11

ciklus pribavljanja(FETCH)

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

Page 156: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

zatim koristiti MUX da selektuje na izlazu jedan od oba rezultata. Realizacija ALU-a prikazana je na slici 2.4.

paralelni sabira~

M 1

U 0

X s

AC

DR (sa magistrale)

ka AC

upravlja~ki signal (iz upravlja~ke jedinice)

8

8

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.

broja~ LD INC CLR

dekoder

logika ulaz

clk

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.

Page 157: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

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 stanje

IR

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

00 1000 (8) ADD1 01 1001 (9) AND1 10 1010 (10) JMP1 11 1011 (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.

Page 158: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

Saglasno prethodnom deo strukture upravljačke jedinice sa slike 2.5 koja sadrži samo brojač i dekoder prikazana je na slici 2.8.

BROJAC

LD INC CLR

DEKODER

0 12...89

101112...

14

FETCH1FETCH2FETCH3

ADD1ADD2AND1AND2JMP1

INC1

FETCH1FETCH2

FETCH3

ADD2

ADD1

AND2

AND1

JMP1INC1

441IR[1..0]0

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

Page 159: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

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.

ARLOAD FETCH1

FETCH3

JMP1 PCLOAD

FETCH2 PCINC

DRLOADFETCH2

ADD2 ADD1

ACLOAD ADD2

AND2

INC ACINC

FETCH IRLOAD

AND2 ALUSEL

MEMBUS FETCH2

AND1 ADD1

FETCH1 PCBUS

READ FETCH2

AND1 ADD1

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

Page 160: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

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

Page 161: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

4. RISC procesori

Page 162: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

4-1

Konvencije kod korišćenja registara MIPS-a

ime broj registra

korišćenje da li se pamti kod Call?

$zero 0 uvek postavljen na konstantnu vrednost nula

nije dostupan

$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 parametara proceduri

da

$t0-$t7 8-15 za čuvanje privremenih promenljivih ne $s0-$s7 16-23 čuvanje promenljivih da $t8-$t9 24-25 čuvanje dodatnih privremenih

promenljivih ne

$k0-$k1 26-27 rezervisani od strane operativnog sistema

nije dostupan

$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.

Page 163: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

4-2

Odgovor

registri sadržaj

$zero

$s1

$s2

$s3

$t0 (privremeni)

G=1500

adrese (decimalne)

0

g

h

A0

a8

.

.

.

g

h

.

.

.

.

.

.

a0

a1

a2

.

.

.

a99

.

.

.

H=1900

A=A0=2600

A1=2604

A2=2608

A99=2996

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

Page 164: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

4-3

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

registri sadržaj

$zero

$s3

$s2

$t1

$t2 (privremeni)

adrese (decimalne)

0

A0

h

a8

a10

.

.

.

.

.

.

a0

a1

a2

.

.

.

a9

.

.

.

H=2000

A=A0=2600

A1=2604

A2=2608

A9=2636

a10 A9=2640

Page 165: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

4-4

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 = 1500. 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 2000

Page 166: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

4-5

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?

f=g+h f=g-h

i=j i≠j

Else:

Izlaz:

Page 167: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

4-6

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?

Page 168: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

4-7

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 4.

Page 169: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

4-8

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 # $t1 = adresa Jump Tabela[k] Lw $t0,0($t1) # $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

Page 170: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

4-9

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 = 0 + 0 # 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

Page 171: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

4-10

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: 0000 0000 0011 1101 0000 1001 0000 0000 u registar $s0. Odgovor # Prvo se pune 16 bitova veše težine, 61 decimalno, pomoću instrukcije Lui:

Lui $s0,61 # 61 decimalno = 0000 0000 0011 1101 binarno # vrednost registra $s0 nakon izvodjenja ove operacije je # $s0 = 0000 0000 0011 1101 0000 0000 0000 0000 # 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 = 0000 1001 0000 0000 binarno # konačna vrednost $s0 biće # 0000 0000 0011 1101 0000 1001 0000 0000

Page 172: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

4-11

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 6 5 5 5 5 6 80000 0 19 19 9 0 32 80004 0 9 9 9 0 32 80008 0 9 21 9 0 32 80012 35 9 8 0 80016 5 8 21 8 80020 0 19 20 19 0 32 80024 2 80000 80028...

Page 173: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

4-12

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

Page 174: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

4-13

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: 5 + 10 * 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 = 37

Page 175: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

4-14

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 4.

Page 176: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

4-15

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]

Page 177: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

4-16

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:

cbacbacbacbaS ⋅⋅+⋅⋅+⋅⋅+⋅⋅= 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:

)baba(cb)aba(cS ⋅⋅+⋅⋅+⋅+⋅⋅= zczcS ⋅+⋅= ,

gde je z = baba ⋅⋅+⋅ = a ⊕ b i babaz ⋅+⋅= 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

Page 178: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

4-17

Test pitanje 4.23 Za sledeće tri situacije identifikuj tipove zavisnosti po podacima

upis

~itanje

instrukcija 1

instrukcija 2

a) ~itanje

upis

instrukcija 1

instrukcija 2

b)

upis

upis

instrukcija 1

instrukcija 2

c)

Odgovor a) Read - after - write (RAW) hazard b) Write - after - read (WAR) hazard c) Write - after - write (WAW) hazard

Test pitanje 4.25 Format instrukcija RISC procesora MIPS RX000 prikazan je na Slici 4.4.

Page 179: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

4-18

3 1 2 5 0 o p k o d a d re s a g r a n a n ja A d r a ) fo r m a t J - t ip a

3 1 2 5 2 0 1 5 0 o p k ô d R s R t n e p o s re d n i o p e ra n d Im m

a d re s e r e g is ta r a (2 )

b ) fo r m a t I - t ip a 3 1 2 5 2 0 1 5 1 0 5 0 o p k ô d R s R t R d iz n o s p o m e ra n ja fu n k c ija

a d r e s e r e g is ta r a (3 )

c ) fo r m a t R -t ip a

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

Page 180: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

4-19

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 = 10 1010 1001 1111 1111 1111 1111 b, tako da je ciljna adresa grananja: A = 1111. 1010 1010 0111 1111 1111 1111 11.00 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

Page 181: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

4-20

(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.

LAB2: Move r3, r7

Lw r8, r3

Add r3, r3, 4

Lw r9, (r3)

BLE r8, r9, LAB3

RAWWAW

WAR

Slika 4.6 Primer zavisnosti po podacima

Test pitanje 4.37 Objasniti pojam odmotavanje petlje (loop unrolling).

Odgovor

Page 182: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

4-21

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

Page 183: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

4-22

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:

Page 184: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

4-23

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šni-kô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

Page 185: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

4-24

Ld r9,#0 ; obriši registar r9 BEQ r4,r5,adr1 ; if (r4)=(r5) then go to adr1 Add r9,r5,r5 ; (r4)+(r5)→(r9) Mul r9,r9,r9 ; (r9)*(r9)→(r9) Add r9,r9,#1 ; (r9)+1→(r9) adr1: St (r1),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)

Page 186: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

4-25

Slede}e potencijalne RAW zavisnosti postoje:

(I1, I5) (I4, I7)

(I1, I6) (I4, I8)

(I2, I5) (I4, I9)

(I2, I6) (I6, I7)

(I6, I8)

(I6, I9)

(I7, I8)

(I7, I9)

(I8, I9)

zbog r4

zbog r5

zbog r9

Jedina WAR zavisnost je (I7, I8) zbog r9. Zavisnosti tipa WAW su:

(I4, I6)(I4, I7)(I4, I8)(I6, I7) zbog r9(I6, I8)(I7, I8)

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

Page 187: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

4-26

Zadatak 4.14 Staza podataka jedne protočne petostepene jedinice, kod koje nisu izvedene povratne veze, tj. premošćavanja, prikazana je na Slici 4.10.

IF S1 ID S2 EX S3 ME S4 WB

Cp

Le~ Le~

Le~

Le~

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

IF ID EX ME WB

naslednik grananja

IF1 * * IF2 ID EX ME WB

naslednik grananja + 1

IF ID EX ME WB

naslednik grananja +2

IF IF EX ME WB

Slika 4.11 Efekat instrukcije grananja

Page 188: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

4-27

Napomena: IF1 se odnosi na pribavljanje opkoda instrukcije koja u programu neposredno sledi iza instrukcije grananja; IF2 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 4.11. 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 4.12.

taktni intervali instrukcija 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

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.

Page 189: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

4-28

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 intervali

razlog

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 r1 10-11 Sub zaustavlja ID sve dok Addi ne upiše operand u r2 13-14 BNZ zaustavlja ID sve dok Sub ne upiše operand u r4 16-17 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

Page 190: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

4-29

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

R r2,r3 EX r1 W r1

R r1,r4 EX r4 W r4

R r1,r2 EX r3 W r3

R r1,r4 EX r1 W r1

i1

i2

i3

i4

R - ~itanjeEX - rezultat operacije poznatW - upisza slu~aj da ne postoji premo{}avanje:1. izme|u parova instrukcija i1:i2, i1:i3, i1:i4

postoji RAW zavisnost zbog r12. 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 4.13. Pokazati kako izgleda izvršenje sledećih programskih sekvenci: a) x=a+b y=b-c z=c+d

Page 191: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

4-30

Pribavljanje instrukcije idekodiranje

FD

Pribavljanje operanda iliadresa

OF

Izvr{enje operacije iliizra~unavanje efektivne

adreseEX

Sme{taj rezultataWB

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:

Page 192: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

4-31

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

Tip Opkôd-op-

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 0

ConstantDest Scr1 Scr2

Tip Opkôd-op-

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 0

OffsetDest Scr1 Scr2

Tip Opkôd-op-

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 0

OffsetDest Scr1 Scr2

Tip Opkôd-op-

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 0

OffsetDest Scr1 Scr2

(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

(d) Ostale instrukcije Nop, Clear, Set, Reset

imeOP Dest, Src1, Src2 OP Dest, Src1, Constant Move Dest, Src1 Shift Dest, Src1,Constant

imeLw immU Dest Lw immL Dest Lw rel Dest, Src2, Offset St rel Src1, Src2, Offset

ime Jump Offset Jump Src2, Offset Brel Src2, Offset

ime No-op Clear Dest Sstat Dest Rstat Dest

AkcijaRF[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](31...16)←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

[ ]RF[Src2] relnot RF[Src1] ifOffsetPCPCRF[Src2] rel RF[Src1] if1PCPC

+←+←

Akcija nema efekta RF[Dest]←0 Status[Dest] ←1 Status[Dest] ←0

(b) formati instrukcija

Page 193: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

4-32

Napomena: RF-registarsko polje; Status-marker registar

dekoderska logika

Upravlja~ki registar

IR

Memorija za instrukcije

PC

MUX1

Offset registar

Upravlja~ki registar

Dest registaar

Dest registar Offset registar

--

3

MUX2

Status 44 4 4

2

1

MUX3

ALU&shifter

RF polje

reg_B reg_A

MAR 44

MUX2

Memorija za podatke

MDR

(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

Page 194: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

4-33

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)

140 ----------

a) asemblerski program

Aktivnost

protočnog

stepena

Taktni

interval

0

1

2

3

4

5

6

7

8

9

10

11

12

13

FD Read PC

Write IR

100

Lw

104

Lw

108

Lw

112

Lw

116

Add

120

Sub

124

Add

128

St

132

St

136

St

140

OF Write reg_A

Write reg_B

(R10)

(R10)

(R10)

(R10)

R1

R2

R2

R3

R3

R4

R5

R10

R6

R10

R7

R10

EX Write MAR

Write MDR

reg_B+

ofset_A

reg_B+

ofset_B

reg_B+

ofset_C

reg_B+

ofset_D

R1+R2

R2-R3

R3+R4

reg_B+

ofset_X

R5

reg_B+

ofset_Y

R6

reg_B+

ofset_Z

R7

WB Write RF

Write Mem

Write PC

104

108

112

R1

116

R2

120

R3

124

R4

128

R5

132

R6

136

R7

140

R5

144

R6

148

R7

152

156

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 4.15

Page 195: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

4-34

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

0

1

2

3

4

5

6

7

8

9

10

11

12

13

FD Read PC

Write IR

100

Lw

104

Lw

108

Lw

112

Nop

116

Add

120

Nop

124

Nop

128

Add

132

Nop

136

Nop

140

St

OF Write reg_A

Writereg_B

(R10)

(R10)

(R10)

R1

R2

R4

R3

R5

R10

EX Write MAR

Write MDR

reg_B+

ofset_A

reg_B+

ofset_B

reg_B+

ofset_C

R1+R2

R3+R4

reg_B+

ofset_zbir

R5

WB Write RF

Write Mem

Write PC

104

108

112

R1

116

R2

120

R3

124

128

R4

132

R6

136

140

R5

144

148

152

R5

156

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

Page 196: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

4-35

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

Taktni

interval

0

1

2

3

4

5

6

7

8

FD Read PC

Write IR

100

Lw

104

Lw

108

Lw

112

Add

116

Add

120

St

OF Write reg_A

Write_regB

(R10)

(R10)

(R10)

R1

R2

R1+R2

R3

R3+R4

R10

EX Write MAR

Write MDR

Write status

reg_B+

ofset_A

reg_B+

ofset_B

reg_B+

ofset_C

R1+R2

R3+R4

reg_B+

ofset_zbir

R3+R4

WB Write RF

Write Mem

Write PC

104

108

112

R1

116

R2

120

R3

124

128

R4

132

R6

136

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

Page 197: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

4-36

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: 148 ............

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.

Page 198: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

4-37

Tip

aktivnosti

Taktni

interval

0

1

2

3

4

5

6

7

8

9

10

FD Read PC

Write IR

100

BGE

104

Nop

108

Nop

112

Nop

116

Add

120

Add

124

J

128

Nop

132

Nop

136

Nop

148

OF Write reg_A

Write_regB

R1

R2

R2 R1

EX Write MAR

Write MDR

Write status

R1>=R2

R2

R1

WB Write RF

Write Mem

Write PC

104

108

112

116

120

124

128

R3

132

R4

136

140

a) vremenski dijagram kada do uslovnog grananja ne dođe Tip

aktivnosti Taktni interval

0

1

2

3

4

5

6

7

8

9

10

FD Read PC

Write IR

100

BGE

104

Nop

108

Nop

112

Nop

140

Add

144

Add

148

OF Write reg_A

Write_regB

R1

R2

R1 R2

EX Write MAR

Write DDR

Write status

R1>=R2

R1

R2

WB Write RF

Write Mem

Write PC

104

108

112

140

144

148

R3

R4

b) vremenski dijagram kada do uslovnog grananja dođe Slika 4.17 : Vremenski dijagrami - efekat instrukcije uslovnog grananja

Page 199: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

4-38

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. 4.13 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, 0

120 Add R4,R2,R0 ; Move min, b

LAB2: 124 ---------------

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

Page 200: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

4-39

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.

Page 201: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

4-40

Tip

aktivnosti

Taktni

interval

0

1

2

3

4

5

6

7

8

FD Read PC

Write IR

100

BGE

104

Add

108

Add

112

J

116

Add

120

Add

124

124

OF Write reg_A

Write_regB

R1

R2

R1

R1 R1 R2

EX Write MAR

Write DDR

Write status

R1>=R2

R2

R1

R1

WB Write RF

Write Mem

Write PC

104

108

112

116

R3

120

R4

124

124

a) vremenski dijagram kada do grananja ne dođe

Tip

aktivnosti

Taktni

interval

0

1

2

3

4

5

6

7

8

FD Read PC

Write IR

100

BGE

104

Add

108

Add

112

J

116

Add

120

Add

124

OF Write reg_A

Write_regB

R1

R2

R2

R1

R1 R2

EX Write MAR

Write DDR

Write status

R1>=R2

R2

R1

R2

WB Write RF

Write Mem

Write PC

104

108

112

116

120

124

R3

R4

b) vremenski dijagram kada do grananja dođe

Slika 4.18 : Rad RISC procesora kod koga je implementiran mehanizam predikcije grananja

protočni sistem se prazni

protočni sistem se prazni

Page 202: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

4-41

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 4.19.

IF ID EXOF WB

IF --ID -- OF WBEX

taktni intervali

1 2 3 4 5 6 7 8

i1

i2

a) Odlaganje izvr{enja faze OF

IF ID EXOF WB

-- IF-- ID OF WBEX

taktni intervali

1 2 3 4 5 6 7 8

i1

i2

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

Page 203: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

4-42

- 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:

IF ID EXOF WB

IF ID OF WBEX

taktni intervali

1 2 3 4 5 6 7 8

i1

i2

IF ID EXOF WB

IF ID OF WBEX

Test pitanje 4.44 Objasniti princip rada tehnike premošćavanja.

Page 204: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

4-43

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 procesorsko-operandskog 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

Page 205: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

4-44

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

Page 206: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

4-45

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.

Page 207: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

4-46

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.

IF OF EX WB

premo{}avanje sa EX na EX (opciono)

premo{}avanje sa WB na EX

ka r3(r3 pripada RF polju

instrukcije

Add r3,r2,r5

Subi r4,r3,#8

. . .

IF EXOF WB premo{-}avanje

IF zastojOF EX WB

IF OFzastoj EX WB

write r3

Slika 4.20 Princip rada internog premošćavanja

Page 208: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

4-47

Ispitni zadaci maj 2000 - 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]

Page 209: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

4-48

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 2001 - 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

Page 210: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

4-49

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

Page 211: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

4-50

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

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

FE ID Sel Reg EX Sto Reg

Page 212: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

4-51

septembar 2001 - 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

Page 213: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

4-52

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

iii) 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

Page 214: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

4-53

b) i) 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 go to 2

6' FE DS EX SR Nop

6'' FE DS EX SR Nop

2/7 FE DS EX SR

ii) 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

iii) 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

Page 215: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

4-54

oktobaarII 2001 - 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) ; ACC←M(V+X) Add #2 ; ACC←ACC+2 Sto V(X) ; M(V+X)←ACC Dec X ; X←X-1 Bnz Loop ; 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.

Page 216: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

4-55

7) Arhitektura CPU-a je tipa Harvard, tj. procesor ima izdvojene magistrale za podatke i instrukcije. Odgovor

FE DE EA FO EX WB

FE DE EA FO EX WB

FE DE EA FO EX WB

FE DE EA FO EX WB

FE DE EA FO EX WB

LdaNop

AddNop

Nop

NopNop

Nop

NopNop

NopNop

NopNop

Lda(dr. iter)

Sto

Dec

Branch

Ako bi se instrukcije izvršavale strogo sekvencijalno tada bi bilo potrebno:

Tsek=100∗5∗6=3000 taktnih impulsa Kod protočnog izvršenja imamo:

Tpro=100∗17+5=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

Page 217: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

4-56

4': Nop 4'': Nop 5: Branch 5': Nop 5'': Nop 5''': Nop 5iv: Nop 1: - naredna iteracija Dobitak iznosi

76.117053000

1 ===pro

sek

TT

D

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

FE DE EA FO EX WB

FE DE EA FO EX WB

FE DE EA FO EX WB

FE DE EA FO EX WB

Lda

Nop

Add

Nop

Nop

Nop

Nop

Nop

Nop

Nop

NopNop

Nop

Nop

nar.iter.

Sto

Dec

Branch

Lda

FE DE EA FO EX WB

FE DE EA FO EX WB

FE DE EA FO EX WB

FE DE EA FO EX WB

Nop

Add

Nop

Nop

Nop

Nop

Nop

Nop

Nop

Sto

Dec

Branch

Nop

Nop

Programska sekvenca koja se generiše nakon dodavanja petlje od strane kompilatora je sledećeg oblika:

Page 218: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

4-57

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:

Tod=50∗29+5=1455 taktnih intervala

Dobitak iznosi: 06.214553000

2 ==D

Page 219: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

4-58

april 2002 - 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

Page 220: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

4-59

maj 2002 - 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

F1

F2

D1

D2

m1 m2 m3

a1 a2

e1

S1

S2

Fetch ExecuteDecode

MUX

Store

multiplier

adder

load

Slika 1 (maj-02-2) Superskalarni procesor

Page 221: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

4-60

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 2000 - 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

Page 222: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

4-61

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 out-

of-order-completion.

f1 d1

f2 d2

f3 d3

m1 m2 m3

a1 a2

e1

e2

S1

S2

lookaheadprozor

Fetch stepen Decodestepen

Execute stepen Store stepenmultiplier

adder

logic

load

Slika 1 (mar-00-3) Dvo-protočni superskalarni procesor

Page 223: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

4-62

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)

1 2 3 4 5 6 7 8 9 10 11 12 13 14

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)

1 2 3 4 5 6 7 8 9 10 11

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

Page 224: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

4-63

april 2003 - 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=0x73334444, $6=0x7555AAAA, a sadržaj memorijske lokacije na adresi labela1=0x87654321. 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=0x73334444; $3=1; $4=0x43215678; $5=0x43222136; $6=0xA7555AAA; $7=0x87654321; mem(labela1)=0x87654321

jun 2003 - 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.

Page 225: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

4-64

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),r21

Page 226: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

5-0

5. Memorije

Page 227: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

5-1

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.

Izlazi

Selektorski ulazi

Ulazi dozvole

rada

UlaziIzlazi

Slika 5.1: Logička šema i tablica istine 3-u-8 linijskog dekodera 74LS138

2764

A0-A12

D0-D7

OE

CE

podaci

adrese

RD

~ipselekt

Slika 5.2. Memorijski čip 2764

Odgovor

Page 228: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

5-2

a) Struktura memorijskog sistema

Adrese

Podaci

A13 A14 A15

A16

A17 A18 A19

A0 ↔ A12

O0 ↔ O7

2764

74LS138

3

A19 A18 A17 A16 A15 A14 A13 A12 A11 A10 . . . A0 Opseg selektov. adresa1 1 1 1 0 0 0 x x x . . . x F0000-F1FFF 1 1 1 1 0 0 1 x x x . . . x F2000-F3FFF . . x . . . . x . . . . x . . 1 1 1 1 1 1 1 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.

8kB=2 *210 13B=2 B 664kB=2 *210B=216B

Page 229: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

5-3

A0-A8

O0-O7G

adrese

dozvolarada

podaci

Slika 5.4 Logički dijagram bipolarnog PROM tipa 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 O70 0 0 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 0 0 0 1 1 1 1 0 0 1 1 0 1 1 1 1 1 1 0 0 0 1 1 1 1 0 1 0 1 1 0 1 1 1 1 1 0 0 0 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 0 0 0 1 1 1 1 1 0 0 1 1 1 1 0 1 1 1 0 0 0 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 0 0 0 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0

sve ostale kombinacije 1 1 1 1 1 1 1 1 Slika 5.6 Način na koji je programiran bipolarni PROM TPB28L42

Adrese

Podaci

dekoder adresa

TPB28L42

Odgovor

Page 230: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

5-4

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 8088. 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

Slika 5.7 Logički dijagram kola PAL16L8

Page 231: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

5-5

Odgovor Programiranje čipa PAL16L8 vrši se sledećom programskom sekvencom. Sekvenca je napisana na HDL jeziku PALASM. TITLE adresni_dekoder PATTERN test_kolo_1 REVISION A AUTHOR SIMA RUS COMPANY ELEF DATE 05/20/1998 CHIP DEKODER PAL16L8 ; pins 1 2 3 4 5 6 7 8 9 10 A19 A18 A17 A16 A15 A14 A13 NC NC GND ; pins 11 12 13 14 15 16 17 18 19 20 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 2764

Page 232: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

5-6

Test pitanje 5.4 Magistrale podataka kod mikroprocesora 8086/80186/80286/80386SX su dvaput većeg obima u odnosu na mikroprocesore 8088/80188. Procesori 8086/80186/80286/80386SX moraju biti u stanju upisivati (čitati) podatak u bilo koju 16-bitnu ili 8-bitnu lokaciju. To znači da se 16-bitni podaci upisuju (čitaju) u posebne sekcije nazvane banke koje su obima 8-bitova, tj. mikroprocesor može da pristupi bilo kojoj banci, ili da pristupi jednoj i drugoj banci istovremeno. Jedna banka se naziva niža-banka i uključuje sve parno numerisane lokacije, a druga viša-banka i sadrži sve neparno numerisane lokacije. Kada pristupa višoj-banci procesor 8086/80186/80286/80386SX aktivira signal /BHE, a kada pristupa nižoj banci signal /BLE. Lokacije koje pripadaju parnoj i neparnoj banci prikazane su na slici 5.14a) a selekcija banaka vrši se na osnovu tabele sa slike 5.14b). Projektovati dekodersko kolo koje će za mikroprocesor 80386SX (24-bitna adresa) selektovati 16*64kB RAM memorijske komponente u adresnom opsegu od 000000h do 0FFFFFh. Kao dekodere koristiti kola 74LS138. Odgovor Struktura dekodera za selekciju banaka prikazana je na slici 5.15. Kao što se vidi sa slike 5.15 koriste se dva dekodera 74LS138. Kod dekodera U3, signal /BLE je priključen na ulaz /G2A a kod dekodera U2 signal /BHE je doveden na ulaz /G2A. Selekcija banaka se vrši shodno sledećoj tabeli :

aktivni dekoderi 16-bitni prenos

8-bitni prenos - viša banka 8-bitni prenos - niža banka U1, U2, U3 U1, U2 U1, U3

a) memorijske banke do 1 MB Ni`a banka Vi{a banka

(parna banka)(neparna banka)

Page 233: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

5-7

/BHE /BLE (A0) funkcija 0 0 selektovane su obe banke : 16-bitni prenos 0 1 selektovana je viša-banka : 8-bitni prenos 1 0 selektovana je niža-banka : 8-bitni prenos 1 1 banke nisu selektovane

b) selekcija banaka pomoću signala /BHE, /BLE (tj. A0) Slika 5.14 Memorijske banke i način selekcije

Test pitanje 5.10 Dekoder adresa realizovan pomoću NAND kola prikazan na slici 5.25 koristi se za selekciju 2716 EPROM memorijske komponente kojoj su dodeljene memorijske lokacije FF800h - FFFFFh. Modifikuj dekoder realizovan pomoću NAND kola prikazan na slici 5.25 tako da može da selektuje memoriju lociranu u sledećem adresnom prostoru: (a) DF800h - DFFFFh (b) 40000h - 407FFh

adresni prostor procesora 8088Magistrala podataka procesora 8088

Slika 5.25 Adresni dekoder realizovan NAND kolom koji se koristi da selektuje EPROM čip tipa 2716 za opseg adrese od FF800h - FFFFFh

Odgovor Za strukturu sa slike 5.25 važi sledeća adresna selekcija

Page 234: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

5-8

1111 1111 1xxx xxxx xxxx ili 1111 1111 1000 0000 0000 = FF800h do 1111 1111 1111 1111 1111 = FFFFFh

a) Za selekciju adresa u opsegu od DF800h do DFFFFh imaćemo 1101 11111 1xxx xxxx xxxx ili 1101 11111 1000 0000 0000 = DF800h do 1101 11111 1111 1111 1111 = DFFFFh

Logička šema dekodera je prikazana na slici 5.26. b) Za selekciju adresa u opsegu od 40000h do 407FFh imaćemo 0100 0000 0xxx xxxx xxxx ili 0100 0000 0000 0000 0000 = 40000h do 0100 0000 0111 1111 1111 = 407FFh Logička šema dekodera je prikazana na slici 5.27.

Slika 5.26 Logička šema dekodera adresa koji selektuje memorijski prostor

počev od adrese DF800h do DFFFFh

Page 235: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

5-9

A19A18A17A16A15A14A13A12A11

IO/M

123

45

67

1011

1213

1415

9

74ALS133

Slika 5.27 Logička šema dekodera adresa u opsegu 40000h do 407FFh

Zadatak 5.7 Neka su data sledeća četiri bajta heksadecimalnih podataka: 25h, 62h, 3Fh i 52h. (a) Odredi "checksum" bajt. (b) Obavi "checksum" operaciju kako bi se obezbedio integritet podataka. (c) Ako je drugi bajt 62h promenio vrednost na 22h, pokaži kako checksum detektuje grešku. Odgovor a) Checksum se odredjuje sabiranjem bajtova 25h + 62h + 3Fh + 52h 118 Suma iznosi 118h, tako da ako se zanemari prenos dobićemo 18h. Checksum bajt je dvojični komplement od 18h a to iznosi E8h. b) Sabiranjem niza bajtova uključujući i checksum bajt rezultira novoj sumi čija je vrednost nula. Ovakva vrednost sume ukazuje da u bloku podataka ne postoji bajt čija je vrednost promenjena

Page 236: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

5-10

25h + 62h + 3Fh + 52h + E8h 200h (prenos se zanemaruje) c) Sabiranjem niza bajtova uključujući i checksum bajt pokazuje se da je rezultat različit od nule, a to znači da je vrednost jednog ili većeg broja bajtova promenjena 25h + 22h + 3Fh + 52h + E8h 1C0h (zanemarujući prenos dobija se C0h).

Zadatak 5.10 Ciklus magistrale mikroprocesora 8086 iznosi 4 taktna intervala, a mikroprocesora 80286 dva taktna intervala. Ako je radna frekvencija oba mikroprocesora 10MHz odredi propusnost magistrale za oba procesora pri: (a) 0 stanja čekanja, tj. zero WS (sait state); (b) 1WS; i (c) 2WS. Odgovor Perioda takta sa kojom procesor radi je 1/(10MHz) = 100ns 8086-1MHz 80286-10MHz memorijski cklus sa 0WS 400ns 200 ns memorijski cklus sa 1WS 500ns 300 ns memorijski cklus sa 2WS 600ns 400 ns BW8086/0WS =(1/400ns)*2 = 5MB/s Propusnost magistrale, BW, se

meri u MB/s i izračunava se kao BW8086/1WS =(1/500ns)*2 = 4MB/s BW8086/2WS =(1/600ns)*2 = 3.3MB/s BW=(1/t )*W cikBW286/0WS =(1/200ns)*2 = 10MB/s gde je: tcik - vreme trajanja

ciklusa magistrale; W - obim magistrale u bajtovima.

BW286/1WS =(1/300ns)*2 = 6.6MB/s

Page 237: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

5-11

BW286/2WS =(1/400ns)*2 = 5MB/s

Zadatak 5.22 RAM prostor veličine 128 MB je projektovan od RAM čipova kapaciteta 2M*4-bita. Usvojimo da se kao dekoderi adresa koriste integrisani dekoderski čipovi tipa 1-izlaz-od 2k, gde je k < 3, kao i ostala standardna logička kola, ako je potrebno. Glavni cilj projektanata je da u svom rešenju ugradi minimalan broj integrisanih kola. Pokazati kako izgleda rešenje memorijskog podsistema, ako usvojimo da svaki RAM čip kapaciteta 2M*4 bita, ima jedinstvenu čip selekt liniju. Ponuditi rešenje čija je struktura slična onoj koja je prikazana na Slici 5.58 ili Slici 5.59. Ako svaki RAM čip ima dve čip selekt linije CS1=CS2=1 pokazati kakva je složenost memorijskog sistema

2mxw RAM

CS WE OE

2mxw RAM

CS WE OE

2mxw RAM

CS WE OE

2mxw RAM

CS WE OE

w w w

4w

podaci D

m adresa A

CS WE OE

Upravlja~ke linije

Slika 5.58. Povećanje obima reči RAM-a za četiri puta

Odgovor RAM veličine 128 MB se može realizovati kao 64M * 2 * 8 bitova, tj. pomoću polja RAM čipova. Ukupan broj adresa koji nam stoji na raspolaganju je 27. To su adrese od: A26 : A0. Dekoder tipa 1/64 je potrebno ugraditi radi za dekodiranja MS

Page 238: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

5-12

adresnih bitova A26 : A21 sa ciljem da se pristupi adresama vrsta. Ovakav dekoder se može realizovati u dva nivoa pomoću devet dekodera adresa tipa 1-od-8 izlaza. Svaki izlaz rezultujućeg dekodera je povezan na CS ulaze RAM modula Mij . RAM modul Mi,j čine dva RAM čipa kapaciteta 2M*4bita. Ako usvojimo da dodatni drajveri nisu potrebni, tada ceo memorijski sistem čine devet dekodera i 128 RAM čipova (Slika 5.60). Na Slici 5.60 prikazan je detalj organizacije memorijskog bloka Mij koji odgovara organizaciji prikazanoj na Slici 5.58. Čitalac treba da pokaže da li se može koristiti rešenje koje se zasniva na organizaciji sa Slike 5.59.

2mxw RAM

CS WE OE

2mxw RAM

CS WE OE

2mxw RAM

CS WE OE

2mxw RAM

CS WE OE

w

w podaci D

adresa A

čip selekt

dozvola upisa

w

w

2

m m+2

w

dekoder “1_od_četiri”

E

Slika 5.59 Povećanje broja reči koje se čuvaju u RAM-u za faktor četiri

Napomena: 2m*w = 2M*4

Page 239: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

5-13

Jevtinije rešenje se dobija ako svaki RAM čip ima izvedeno dva čip selekta. U tom slučaju se RAM prostor može oganizovati kako je prikazano na Slici 5.61. Konkretna realizacija zahteva ugradnju samo dva dekodera tipa 1-od-8-izlaza. Dekoder D1 se koristi da adresira osam vrsta a dekoder D2 osam kolona.

.

.

....

.

.

.

. . .CS00

M00

CS01

M01

CS07

M07

01

D1

G7

A23A22A21

01

D2

G7

CS10

M10

CS11

M11

CS17

M17

.

.

.

A23A22A21

. . .

.

.

.01

D8

G7

CS70

M70

CS71

M71

CS77

M77

.

.

.

A23A22A21

. . .

01

D1

G7

A26A25A24

2M*4 2M*4

4 48

CSWEOE

adreseA20:A0

podaci Slika 5.60 2D organizacija memorijskog prostora veličine 128 MB koji

koristi memorijske čipove sa jedinstvenim CS kapaciteta 2 M * 4 Napomena: Detalji koji se odnose na definisanje stanja signala WE i OE (slika

5.58 i 5.59 nisu prikazani na slici 5.60

Page 240: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

5-14

M00 M01 M02 M03 M04 M05 M06 M07

M10 M11 M12 M13 M14 M15 M16 M17

M20 M21 M22 M23 M24 M25 M26 M27

M30 M31 M32 M33 M34 M35 M36 M37

M40 M41 M42 M43 M44 M45 M46 M47

M50 M51 M52 M53 M54 M55 M56 M57

M60 M61 M62 M63 M64 M65 M66 M67

M70 M71 M72 M73 M74 M75 M76 M77

1/8 dekoderza CS2

1/8dekoderza CS1

3

3

6

A26:A21

CS1

CS1

A23:A21

A26:A24

264b42b82

b4M2MB128

21

27

∗=∗∗

=∗ tj. 64 modula sa po 2 čipa

Slika 5.61 Organizacija RAM prostora veličine 128 MB u formi 2D-

polja kada RAM čipovi imaju dve čip selekt linije

Zadatak 5.23 Koristeći DRAM memorijski čip kapaciteta 8 M * 8 bitova kao osnovnu komponentu (Slika 5.62), projektovati memorijski sistem veličine 256 M * 32 bita. Za formiranje memorijskih blokova većeg kapaciteta koristiti šeme prikazane na slikama 5.58 i slici 5.59.

432

b82b322

b8M8b32M256

23

28

∗=∗∗

=∗∗

tj. 32 modula sa po 4 čipa

Page 241: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

5-15

Logika zasinhronizaciju i

osve`avanje

Interniupravlja~ki

signali

8

MagistralapodatakaD0:D7

Bafer podataka

8192x1024x8polje memorijskih

}elija

Dekoderadresevrste

Dekoder adresakolona

Baferadresakolona1013

13

Baferadresevrste

Adresnamagistrala

RAS CAS WE OE

Slika 5.62 Struktura memorijskog DRAM čipa kapaciteta 8 MB

Odgovor Za realizaciju memorijskog prostora veličine 256 M * 32 bita pomoću DRAM čipova obima 8 M * 8 bitova potrebno je ugraditi:

128832

8256

=* kopija DRAM integrisanih kola sa Slike 5.62, koristeći pri tome organizaciju koja je prikazana na slici 5.58. Da bi se zadovoljile potrebe koje se odnose na veličinu adresnog prostora treba koristiti adresni dekoder tipa 1-od-32-izlaz.a Rešenje koje se odnosi na organizaciju memorijskog prostora veličine 256M*32bita prikazana je na Slici 5.63.

Page 242: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

5-16

8Mx8b RAM A DQ RAS CAS WE OE

8Mx8b RAM A DQ RAS CAS WE OE

8Mx8b RAM A DQ RAS

CAS WE OE

32

32

32 podaci D

0 1 2 30

31 E

~ip selekt

adresa A0:A22

adresa A23:A27 5

23

RAS

CAS

dozvola upisa WE dozvola izlaza

Slika 5.63 256M * 32 bitna organizacija memorije zasnovana na DRAM čipu kapaciteta 8 M * 8 bita

Čitalac treba da obrati pažnju na način multipleksiranja RAS i CAS signala pomoću dvo-ulaznih OR logičkih kola. Rešenje prikazano na Slici 5.63 karakteristično je i po tome što je ceo RAM prostor organizovan kao 1D umesto 2D polje. Test pitanje 5.51 Odredjeni broj DRAM-ova kapaciteta 1 M * 16 bitova koristi četvorostruki adresni interleaving radi pristupa memorijskim bankama M0, M1, M2 i M3.

Page 243: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

5-17

a) Identifikovati banke kojima se vrši pristup na osnovu sledeće četiri adrese: 01234, ABCDE, 91272 i FFFFF. b) Ako je jedna od memorijskih banaka zauzeta, koja je verovatnoća da će zahtev biti zakašnjen (odložen) zbog sudara kod pristupa toj banci? Odgovor Na osnovu vrednosti dva LS bita odredjuje se kojoj se banci pristupa. a)

heksadecimalna adresa

binarna adresa

banka kojoj se pristupa

01234 0000...0100 M0 ABCDE 1010...1110 M2 91272 1001...0010 M2 FFFFF 1111..1111 M3

b) Verovatnoća sudara zbog pristupa toj banci je 1/4 = 0,25. Test pitanje 5.52 Za odredjeni magnetni hard disk definisani su sledeći parametri: broj diskova (površine na kojima se vrši zapis) 14(27) broj pisti po površini zapisa 4925 ukupan broj sektora na svim površinama za zapis 17,755,614 formatirani kapacitet diska 9.09 GB brzina rotacije diska 5400 obr./min prosečno vreme pozicioniranja glave diska na pistu (seek time) 11,5 ms interna brzina prenosa podataka 44-65 MB/s Odrediti veličinu bloka (sektora) podataka BP i prosečno vreme pristupa bloku podataka tB. B

Odgovor Veličina sektora se dobija kao:

Page 244: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

5-18

bajtova 512

,10*9,09

zapisza a povr{inamsvimna sektora broj ukupnidiska kapacitetiformatiran

BP

9

=

=

=

6175517

Prosečno vreme pristupa tB predstavlja zbir prosečnog vremena pozicioniranja ana pisti t

B

S, prosečne rotacione latentnosti tL, i prosečnog vremena prenosa jednog bloka. U konkretnom slučaju imamo da je: • tS = 11,5 ms • rotaciona brzina

obr/ms 0,09obr/s 9060

5400r ===

s 5,560,09*21

t L ==

• prosečna interna brzina prenosa je 55 MB/s => 55 kB/ms za prenos jednog bloka (sektora) potrebno je interno vreme:

ms ,055000

bajtova 512t I 01==

Prosečno vreme pristupa: tBP = tS + tL + tI

= 11,5 + 5,56 + 0,01 = 17,07 ms

Page 245: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

5-19

Zadatak 5.25 Vreme pozicioniranja magnetne glave diska zavisi od toga koliko se brzo vrši pomeranje upisno-čitajuće glave sa jedne piste na drugu. Usvojimo da je: (i) ukupan broj pisti N i da su one numerisane od 0 do N-1; (ii) upisno-čitajućoj glavi potrebno je vreme Dt da se pomeri sa piste i na pistu i ± D, tj za D pisti. Shodno prethodnom, ako se prvo pristupalo pisti i a nakon toga sledi pristup pisti j = i ± D, vreme pozicioniranja glave kod narednog pristupa iznosi Dt. Najkraće vreme pozicioniranja glave je 0 a najduže Nt. Postavlja se sledeće pitanje: Koliko je prosečno vreme pozicioniranja glave na pistu tS u funkciji N i t? Ako usvojimo da se pistama pristupa po proizvoljnom (slučajnom) redosledu, pokazati da je tS ≈Nt/3; što znači da je prosečno vreme pristupa pisti približno jednako vremenu da se upisno-čitajuća glava pomeri za trećinu od ukupnog broja pisti. Izvedi dokaz na primeru N = 8. Odgovor Za N=8 formirajmo matricu oblika 8*8, za sve 64 (i, j) kombinacije:

pista j

pista i 0 1 2 3 4 5 6 7

0 0 1 2 3 4 5 6 7

1 1 0 1 2 3 4 5 6

2 2 1 0 1 2 3 4 5

3 3 2 1 0 1 2 3 4

4 4 3 2 1 0 1 2 3

5 5 4 3 2 1 0 1 2

6 6 5 4 3 2 1 0 1

7 7 6 5 4 3 2 1 0

Page 246: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

5-20

Suma svih 64 ulaza je 168, tako da je:

625,264

168Dsred == Vrednost 2,625 je veoma blizu vrednosti 8/3. Da bi generalizovali postupak analizirajmo ponovo prethodnu tabelu. Analizu ćemo početi od glavne dijagonale, i ići prema gornjim i donjim dijagonalama. Prvo, na glavnoj dijagonali su sve nule. Dijagonala ispod glavne dijagonale ima sedam jedinica, ona ispod subdijagonale šest dvojki, i td. To znači da je zbir ulaza ispod glavne dijagonale:

1(N-1)+2(N-2)+3(N-3)+...+(N-1)1= ( )∑−

=

−1N

1i

iN*i

Ulazi iznad glavne dijagonale imaju isti oblik, a to znači da je njihov zbir (suma) identičan kao i prethodna suma. Na osnovu prethodnog, imamo da je:

( )

∑∑

=

=

=

−=

=−

=

1N

1i

22

1N

1i

2

1N

1isred

iN2

iN2

2,6N

iN*i*2D 25

(1)

Kako važi, u opštem slučaju ( )

21nn

in

1i

+=∑

= (2) i:

( )( )6

12n1nni

n

1i

2 ++=∑

= (3) zamenom (2) i (3) u (1) dobijamo:

( ) ( )( )6

12N1NNN2

21NN

N2

D2sred

−−+

−=

3N13N2N

1ND2

sred

−−−−=

Page 247: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

5-21

3N1

3N

Dsred −=

3N

Dlim sred =>− αN Zbog ovoga:

3N

Dt tsredts ≈=

Proverom za N = 8 imamo 2,625

241

38

3N1

3N

=−=− a to odgovara vrednosti dobijenoj iz tabele. Zadatak 5.26 Računar R1 ima ugradjen dvo-nivovski virtuelno-memorijski sistem. Vremena pristupa glavnoj memoriji M1 i sekundarnoj memoriji M2 iznose 10-6 i 10-3 s, respektivno. Testiranjem je ustanovljeno da je prosečno vreme pristupa memorijskoj hijerarhiji 10-4 s. Ovo vreme je neprihvatljivo dugačko za najveći broj aplikacija. Ukazati na najmanje dva načina pomoću kojih je ovo vreme moguće smanjiti sa 10-4 na 10-5 s, i dati komentar u vezi cene, kako sa hardverske tako i softverske tačke gledišta. Odgovor Ukazaćemo na tri načina na koje je moguće smanjiti tA sa 10-4 na 10-5 s. (1) Povećanje stope pogodaka H: ovo se može ostvariti poboljšanjem algoritma memorijskog preslikavanja (memory mapping algorithm). Tipično se to izvodi korišćenjem bolje politike zamene stranica ili promenom dužine stranice. Cena koja mora da se plati je uglavnom softverska. Često je moguće povećati H povećanjem kapaciteta glavne memorije, a to direktno znači da se povećava cena hardvera. Prvo odredimo tekuću vrednost za H na osnovu relacije

Page 248: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

5-22

(1) tA = H tA1 + (1 - H) tA2-3-4gde je tA = 10 , tA1 = 10-6, a tA2 = 10

Preuredjenjem po H dobićemo: - t H = (tA A2)/(t - tA1 A2) (2) -4 -3 = (10 - 10 )/(10-6 -3 - 10 )

= 0,901. -4Da bi se dobilo prosečno vreme pristupa tA = 10 potrebno je

povećati H na H', tako da je: -5 -3 H' = (10 - 10 )/(10-6 -3 - 10 )

= 0,991. To znači da željeno smanjenje vremena pristupa tA sa 10-4 na 10-5 neminovno dovodi do povećanja stope pogodaka H sa 0,901 na 0,991. (2) Smanjenjem tA2 - moguće je zameniti sekundarnu memoriju sa uredjajem čije je vreme pristupa kraće. Na ovaj način u značajnoj meri se povećava cena hardvera (Slika 5.65).

10-9

10-8

10-7

10-6

10-5

10-4

10-3

10-2

10-1

10

1

100

10-9 10-8 10-7 10-6 10-510-10

magnetne trake

opti~ki diskovi (CD-ROM i dr)

magnetni diskovi(hard-disk)

DRAM integrisana kola

SRAM integrisana kola

cena c(dolara po bitu)

vremepristupa tA (s)

Slika 5.65 Vreme pristupa u odnosu na tehnologiju

Page 249: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

5-23

Preuredjenjem jednačine (1) dobija se: tA2 = (tA - H tA1)(1 - H) ako bi učinili tA = 10-4, tada je neophodno da i tA2 bude: tA2 = (10-4 - 0,901 * 10-6)/(1 - 0,901) ≈ 10-4

Ovo rešenje ukazuje da je neophodno smanjiti tA2 za faktor reda 10, tj. sa 10-3 na 10-4. (3) Smanjenje tA1 - moguće je smanjiti tA . Ovaj slučaj se javlja kada se glavna memorija realizuje bržom tehnologijom. Preuredjenjem jednačine (1) dobićemo tA1 = (tA + (1 - H) tA2)/H (3) Zamenom za tA = 10-5, H = 0,901 i tA2 = 10-3 u (3), dobićemo: za tA1 = - 0,998 * 10-6, tj. negativnu vrednost. To znači da je nemoguće ostvariti željenu vrednost za tA od 10-4 ugradnjom bržih memorijskih čipova.

Zadatak 5.27 Dvo-nivovsku organizaciju memorije (M1 i M2) karakteriše vreme pristupa tA1 = 10-8 s i tA2=10-3 s. Kolika treba da bude stopa pogodaka H da bi efikasnost pristupa bila ne manja od 65% od svoje maksimalne vrednosti? Odgovor Efikasnost pristupa l je definisana odnosom tA1/tA. Da bi dobili l = 0,65 potrebno je da: tA = tA1/l = 10-8/0,65 = 1,53846 * 10-8 s. Na osnovu relacije: tA = H tA1 + (1 - H)tA2

dobijamo: H = (tA - tA2)/(tA1 - tA2)

Page 250: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

5-24

= (1,53486 * 10-8 -3 -8 -3 - 10 )/(10 - 10 ) = 0,999846. To znači da stopa pogodaka mora biti H ≥ 0,999846, da bi l ≥ 0,65

Zadatak 5.28 Kod n-to nivovske organizacije memorije, stopa pogodaka Hi koja je pridružena memoriji Mi na nivou i, može se definisati preko verovatnoće da informacija koju zahteva CPU bude dodeljena memoriji Mi. Ako usvojimo da se sva informacija, koja se čuva u M , takodje, javlja i u M , tada važi uslov H < Hi i +1 1 2 <... <H = 1. Koristeći ovu definiciju za Hn i generalizovati izraz koji važi za dvo-nivonsku memorijsku hijerarhiju (tA = Ht +(1-h)tA2A1 ) na n-nivovsku memorijsku hijerarhiju. Odgovor Učestanost pristupa nivou Mi memorijske hijerarhije se definiše kao verovatnoća da će se obraćanje stavki X od strane CPU-a obaviti (ostvariti) na nivou Mi, tj. da je Mi najvići nivo (ili najmanja vrednost i) koji čuva vrednost X. Odavde sledi da je pi = Hi - Hi-1 pri H0 = 0 i Hn = 1. Za prosečno vreme pristupa važi relacija:

∑=

=n

1iAiA i

tpt (4)

Zamenom se dobija:

( )∑=

− ⋅−=n

1iA1iiA i

tHHt

Napomena: Samo za slučaj n=2, važi p1 = H1 = H.

Zadatak 5.31 Neka pi predstavlja deo zahteva za pristup memoriji koji se javlja kao rezultat pristupa nivou memorije Mi kod tro-nivovske hijerarhijske organizacije.

Page 251: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

5-25

nivo i vreme pristupa tA(s)

verovatno}a pristupa vreme prenosa p stranice ti Bi(s)

M1 10-7 0,999990 0,0005 M2 10-6 0,000009 0,01 M3 10-4 0,000001

Kada se na nivou Mi javi promašaj, dolazi do zamene stranice izmedju nivoa Mi i Mi+1, uz prosečno vreme zamene stranice tBi. Odrediti prosečno vreme za koje procesor pročita jednu reč iz memorije.

-7Neka se projektantu da zahtev da učinimo da tA <= 1,1*10 . To znači da tA ne sme da premaši vreme pristupa memoriji za više od 10%. Poboljšanje se može ostvariti ako se M3 zameni memor. tehnologijom kod koje se t '. Kolika je vrednost t '. smanji na vrednost tB2 B2 B2Sugerisati i ukazati na opravdanje kako se na jeftiniji način može doći do zadovoljavajućeg rešenja, tj. kako se može smanjiti tA a da se pri tome ne smanjuje t na vrednost t '. B2 B2

Odgovor (a) Prosečno vreme pristupa se izračunava kao: tA = p1tA1 + p2(t + t ) + pA1 B1 3(t + t + tA1 B1 B2) (5) = t + (pA1 2 + p3) t + pB1 3tB2 = 10-7 + 0,00001 * 0,0005 + 0,000001 * 0,01 s = (1,0 + 0,05 + 0,1) * 10-7 s

-7 = 1,15 * 10

Neka tA1 i t predstavljaju vreme za pristup memorijama MA2 1 i M2, respektivno, relativno u odnosu na CPU. Kod dvo-nivovske memorijske organizacije, prose~no vreme pristupa t (average time tA A) CPU-a nekoj re~i u memorijiiznosi: t = H t + (1 - H) tA A1 A2Kod najve}eg broja dvo-nivovske hijerarhijske {eme, zahtev za prenosom re~i koja se ne nalazi u M1 (kada se javi proma{aj) uzrokuje da se, umesto jedne re~i, prenese ceo blok informacije iz M2 u M1. Kada se prenos bloka zavr{i, re~ za kojom je izdat zahtev za prenos nalazi se u M1. Ako sa tB ozna~imo vreme potrebno da se izvr{i prenos celog bloka podataka (block access ili block transfer time), tada va`i da je t = t + tA2 B A1. Kada se t zameni u t dobi}emo: A2 A tA = t + (1 - H) tA1 BKod najve}eg broja slu~ajeva t >> tA2 A1, pa t ≈ t . A2 B

Page 252: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

5-26

(b) Potrebno je sada odrediti t'B2 tako da tA <= 1,1 * 10-7, pa stoga: 1,1 * 10 -7 < tA1 + (p2 + p3) tB1 + p3t'B2 1,1 * 10-7 < 1,05 * 10-7 + 0,00001 * t'B2Sledi da je: t'B2 < 0,05 * 10-7 * 0,005 s što ukazuje da vreme prenosa bloka treba najmanje skratiti za 50%. Ovo se može postići ako se M3 zameni sekundarnom memorijom koja je dvaput brža od tekuće instalirane, što predstavlja skupo rešenje. (c) Jednačina (5) ukazuje da se tA može smanjiti na vrednost 1,1 * 10-8 ako se smanji tA1 na vrednost 0,95 * 10-7 ili na još nižu vrednost. Ovo znači da je potrebno da M1 ima kraće vreme pristupa za 5%, a čini se da se taj cilj može ostavariti po nižoj ceni. Alternativno rešenje je da se neznatno poveća p1 a efektivno smanje p2 i p3. Povećanje p1 (zavisno je od ponašanja programa) se može ostvariti po nekoj srednje prihvatljivoj ceni a to znači ili da se poveća kapacitet memorije M1, ili poboljša politika zamene stranica.

Zadatak 5.32 a) Odrediti kolika je prosečna cena po bitu kao i vreme pristupa četvoro-nivovskog memorijskog sistema na osnovu vrednosti specificirane sledećom tabelom:

memorija kapacitet cena ($/B) vreme pristupa stopa pogodaka ke{ 1 16 kB 10-3 10 ns 0,990000 ke{ 2 256 kB 10-5 20 ns 0,999900 glavna memorija 32 MB 10-6 100 ns 0,999999 disk memorija 8 GB 10-9 10 ns 1,000000

b) Neka je, zbog ekonomskih razloga, drugi nivo keša eliminisan iz sistema. Odrediti rezultujući procenat promena koji se odnosi na cenu sistema i vreme pristupa. Odgovor Neka za memoriju Mi vrednosti ci i Si označavaju cenu po bitu i kapacitet, respektivno. Prosečna cena po bitu -c, se odredjuje na osnovu sledeće relacije: c = (c1S1 + c2S2 + c3S3 + c4S4)/(S1 + S2 + S3 + S4) (6) = (10-3 * 214 + 10-5 * 218 + 10-6 *225+10-9*233)/(214 + 218 + 225 + 233)

Page 253: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

5-27

= (16,38 + 2,62 + 33,55 + 8,59)/(8,62 * 109) = 7,09 * 10-9 dolara/bajtu Na osnovu prezentiranih podataka, stopa pogodaka Hi se može interpretirati kao verovatnoća da reč kojoj se obraćamo postoji (nalazi se) u memoriji nivoa i, tj. Mi. Reči koja se nalazi na nivou Mi se pristupa samo kada ista nije dodeljena nivou Mj, pri čemu važi j < i. Neka pi predstavlja verovatnoća da će se obraćanje memoriji procesirati od strane nivoa Mi. Sledi da je pi = Hi - Hi-1, gde H0 = 0. Shodno prethodnoj konstataciji, imaćemo da je: tA = p1tA1 + p2tA2 + p3tA3 + p4tA4. Odgovarajućom zamenom za pi, i=1,..., 4, dobićemo: tA = (H1 - H0)tA1 + (H2 - H1)tA2 + (H3 - H2)tA3 + (H4 - H3)tA4 (7) = 0,99 * 10-8 + 0.0099 * 2 10-8 + 0,00099 * 10-7 + 0,000001 * 10-2 s = (0,99 + 0,0198 + 0,00099 + 0,1) * 10-8 s = 1,11079 * 10-8 s = 11,11 ns ako se izostavi nivo-2 keš M1 na osnovu jednačine (6) dobijamo: c = (10-3 * 214 * 10-6 * 225+ 10-9 * 233)/(214 + 225 + 233) = (16,38 + 33,55 + 8,59)/(8,62 * 109) = 6,79 * 10-9 dolara/bajt. Uočava se smanjenje cene sa 7,09 * 10-9 dolara/bajtu na 6,79 * 10-9 dolara/bajtu što iznosi oko 4,2 %. Zbog eliminacije keša na nivou-2, na osnovu jed. (7), imaćemo: t'A = (H1 - H0)tA1 + (H3 - H1)tA3 + (H4 - H3)tA4 = 0,99 * 10-8 + 0,009999 * 10-7 + 0,0000001 * 10-2 s = (0,99 + 0,09999 + 0,1) * 10-8 s = 1,18999 * 10-8 s = 11,90 ns Prosečno vreme pristupa se povećalo sa 11,11 ns na 11,90 ns, ili procentualno za oko 7%, za slučaj kada keš nivoa-2 ne postoji, tj. nije instaliran.

Test pitanje 5.63 Kada se govori o magnetnim diskovima, ukazati na značenje sledećih pojmova: seek time - ts, latencija - tL, rotaciona latencija blok podataka brzina prenosa bloka podataka prosečno vreme pristupa bloku podataka

Page 254: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

5-28

Odgovor Prosečno vreme potrebno da se pomeri glava sa jedne piste na drugu naziva se seek time - t , ili vreme pozicioniranja. sNakon što se glava pozicionira na pisti, potrebno je da se ona pomeri na mesto gde je zapisana informacija i da dodje do kontakta glave i medijuma kako bi počeo prenos podataka. U tom smislu karakteristično je prosečno vreme koje je potrebno da se ostvari ovaj pomeraj naziva se latencija - tL, memorije. Kod memorija kod kojih informacija rotira po kružnoj pisti, veličina t se naziva rotaciona latentnost. LKod sekvencijalnog zapisa, reči se grupišu u veće jedinice koje zovemo grupe. Sve reči iz grupe se smeštaju u uzastopne lokacije tako da vreme potrebno da se pristupi celom bloku čini: vreme pozicioniranja i vreme latencije. Brzina sa kojom se vrši prenos informacija ka- ili sa piste, naziva se brzina prenosa podataka (data transfer rate). Prosečno vreme pristupa bloku podataka - tB, jednako je: B

rNn

2r1

tt SB ++= gde je: N - fiksni kapacitet reči po pisti r - broj okretaja diska u sekundi; n - broj reči po bloku podataka; tS - prosečno seek time; Proizvod rN odgovara brzini prenosa podataka iz memorije i izražava se u reč/s. Nakon što je upisno-čitajuća glava pozicionirana na početak željenog bloka, podaci se prenose aproksimativno za n/(rN) sekundi. Prosečna latencija je 1/(2r) sekundi, a to odgovara vremenu potrebnom da se disk okrene za pola kruga. Konačno, tS je prosečno vreme pozicioniranja glave na željenu pistu.

Test pitanje 5.68 Kako se vrši distribucija adresa kod interleaved memorije? Odgovor

Predaja razli~itih adresa ve}em broju memorijskih modula tako da se n-uzajamno nepovezanim linijama koje pripadaju razli~itim memorijskim modulima mo`e simultano pristupati, zovemo memory interleaving. Pri ovome va`no je praviti razliku izmedju: (i) bloka uzastopnih lokacija kojima se pristupa simultano; i (ii) lokacije koje nisu uredjene a pristupa im se simultano pri ~emu se lokacije nalaze u razli~itim memorijskim modulima.

Page 255: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

5-29

Distribucija memorijskih adresa po izdvojenim memorijskim modulima, shodno adresnim formatima sa slike 5.74, prikazana je na slici 5.76. Alternativno, umesto termina adresnog formata interleaving-odredjen-višim-adresama koristi se termin grubi-interleaving (coarse interleaving) a umesto termina interleaving-odredjen-nižim-adresama koristi se termin fini-interleaving (fine interleaving).

grubi interleaving fini interleaving

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

memorijskmodul

0

memorijskimodul

1

memorijskmodul

n

Adrese

.

.

.

.

.

.

.

.

.

.

.

.

memorijskimodul

0

memorijskimodul

1

memorijskimodul

2

memorijskimodul

n

Adrese

adresa modula

adresa u okviru modula

adresa u okviru modula

adresa modula

Distribucija kod grubog i finog interleving-a Slika 5.76.Izbor grubog ili finog inteleaving-a zavisi od tipa sprežne mreže. Fini-interleaving je efikasniji kod magistralno orijentisanih arhitektura kada se interleaved memorijski moduli odazivaju u sekvencu jedan za drugim. Grubi-interleaving je pogodniji kod sistema koji koriste krozbar sprežne mreže, tj. kada procesori paralelno pristupaju različitim memorijskim modulima.

Page 256: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

5-30

Ispitni zadaci januar-februar 2003 - Zadatak 4 Računarski sistem ima 8-bitnu adresnu magistralu i 8-bitnu magistralu podataka a koristi memorijsko preslikani U/I prostor. U sistem je instalirano 128 bajtova PROM-a počev od adrese 00H, realizovanog pomoću čipova kapaciteta 432 ∗ ; 96 bajtova RAM počev od adrese 80H, realizovanog od jednog čipa kapaciteta i nekoliko čipova kapaciteta ; ulazni uredjaj na adresi F0H; izlazni uredjaj na adresi F1H; i bidirekcioni ulazno/izlazni uredjaj na adresi F2H.

864 ∗832∗

Prikazati dizajn ovog sistema, uključujući sve upravljačke signale (CS, MR, MW, Enable, i dr.) Odgovor

CS

PROM32*4

A0

A1

A2A3

A4

MRCS

PROM32*4

A0

A1

A2A3

A4

MRCS

PROM32*4

A0

A1

A2A3

A4

MRCS

PROM32*4

A0

A1

A2A3

A4

MR

43210

765 A5

A6

A7

DEC3/8

ulazniuredjaj E

MRka magistrali

podataka

tro-stati~kibafer

A0A1A2A3A4

8

izlazniuredjaj E

MWsa magistrale

podataka

tro-stati~kibafer

A0A1A2A3A4

8

U/Iuredjaj

E

E

MW

MRka magistrali

podataka

sa magistralepodataka

tro-stati~kibafer

A0A1A2A3A4

8

8

CS

RAM64*8

A0A1A2A3A4

CS

RAM32*8

A0

A1A2

A3

A4

8

8 888

MR

MR MRMW MW

MRMW

tro-stati~kibafer

Page 257: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

5-31

februar 2002 - Zadatak 4 Za projektovanje memorijskog sustema koji je organizovan kao 1D-polje veličine N∗32 bita potrebno je 512 memorijskih čipova DRAM tipa kapaciteta 4M∗4 bita. a) Odrediti ukupni kapacitet memorijskog sistema. b) Ako procesor generiše sledeće adrese:

01AFB9F; FF000AD; 18B93C0; ACFFD07 odrediti kom memorijskom modulu se pristupa? Uzeti u obzir da se čip selekt linija dovodi na ulaze čipa RAS (Row Address Strobe) i (Column Address Strobe) kao na slici 1 (feb-02-4). CAS

4M*4bDRAM

A

DQ/RAS

/CAS

/WE /OE

/RAS

/CAS

CS

CS

Slika 1 (feb-02-4) Memorijski čip DRAM tipa

Odgovor

4Mx4bA DRAM/RAS DQ

/CAS/WE /OE

4Mx4bA DRAM/RAS DQ/CAS

/WE /OE

4Mx4bA DRAM/RAS DQ/CAS

/WE /OE

01

.

.

.

63

podaci

/RAS

/CAS

32

32

32

E

6

22

adresaA22-A27

~ip selekt

adresa A0-A21

dozvola upisa

. . .

Slika 2 (feb-02-4) 256∗32 bitna organizacija memorije zasnovana na DRAM čipu

kapaciteta 4M∗4 bita

Page 258: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

5-32

Veličina memorije je N∗32b, a za realizaciju je potrebno 512 čipova kapaciteta 4M∗4b, pa je kapacitet memorije

32b256M 4b)(4M 8) (64 4b4M 512 ∗=∗∗∗=∗∗ Memorijski sistem čine 64 bloka a svaki blok sadrži 8 čipova (slika 2 (feb-02-4)). Decembar 2006 - Zadatak 4 Brzina rotacije diska je 6000 obrtaja/minut. Prosečno vreme pozicioniranja glave diska na željenu pistu (seek time) iznosi 15 ms. Svaka pista ima 256 sektora, a sektor je veličine 512 B. Disk je povezan sa memorijom preko U/I magistrale. Propusnost U/I magistrale je 4 MB/s. Disk ima implementirano disk-keš, kao bafer memoriju, za privremeno smeštanje podataka. Disk keš omogućava dvostrani pristup u jednom trenutku. Prvi sa diska ka disk-kešu, a drugi sa disk-keša, preko U/I magistrale, ka memoriji računara. Oba načina prenosa su dvosmerna. a) Odrediti maksimalnu propusnost diska ne uzimajući u obzir propusnost magistrale, vreme pozicioniranja i latenciju diska. Odrediti minimalno vreme (u sekundama) potrebno za prenos 40 MB podatka sa diska. b) Koliko vremena je potrebno za prenos sekvencijalnog podatka veličine 128 kB sa diska u memoriju? Pretpostaviti da su podaci sekvencijalno memorisani na jednoj pisti. c) Koliko vremena je potrebno za prenos bloka podatka veličine 128 kB sa diska u memoriju? Pretpostaviti da su podaci locirani po sektorima koji su slučajno raspoređeni na disku. Odgovor a) Da bi se postigla maksimalna propusnost diska potebno je da se podaci sa piste čitaju sekvencijalno i da se ne uzima u obzir vreme pozicioniranja i latencija.

ms10=obrtaja6000

s60Za vreme jedne rotacije koja traje disk može da

pročita jednu pistu čija je veličina kB128B512256 =∗ . Prema tome,

propusnost diska je sMB8.12=s

kB12800=ms10kB128

.

Page 259: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

5-33

Međutim, U/I magistrala predstavlja „usko grlo" sistema i ima propusni opseg od 4 MB/s, pa je za prenos bloka podataka veličine 40 MB potrebno minimalno 10 s. b) Brzina prenosa podataka je ograničena U/I magistralom pa je

52ms 32ms 5ms 15ms sMB4

128KB s6000260 15ms t t t transferrotationseek =++=+∗

+=++

c) Kao i u prethodnim slučajevima, vreme pozicioniranja (tseek) je 15 ms. Jedna rotaciija traje 10 ms jer je rotaciona brzina 6000 obrtaja/minut, ili 100 obrtaja/sekundi. Latencija diska odgovara polovini rotacije i iznosi 5 ms. Za veličinu podatka od 128 kB potrebno je 2(17−9) 8 = 2 , odnosno 256 sektora. Vreme potrebno da se pročita jedan sektor (ttransfer) je 10ms*(1/256)=0.04ms. Vreme potrebno U/I magistrali da prenese jedan sektor iznosi 512B/4MB*1s=0.128ms. Ovo vreme je duže ali se može preklopiti sa vremenom pozicioniranja i vremenom latencije narednog sektora. Ukupno vreme pristupa disku za svaki od prvih 255 sektora je

ms04.02 0.04ms 5ms 15ms t t t transferrotationseek =++=++

Ukupno vreme pristupa disku za poslednji sektor je ms168.02 0.128ms0.04ms 5ms 15ms t t t transferrotationseek =+++=++

Ukupno vreme potrebno za prenos 128 kB slučajno smeštenog podatka sa diska u memoriju iznosi . 5130.368ms 0.168) 5 (15 255 * 20.04 =+++ decembar 2001 - Zadatak 4. Neka je u računaru instalirano 256B glavne i 8B keš memorije i to: a) asocijativni keš (LRU - Least Recently Used - politika zamene) b) direktno preslikani keš. Svaku liniju keša čine dva bajta. Pretpostavimo da su vrednosti svih podataka smeštenih u memorijskim lokacijama jednake adresama tih memorijskih lokacija (npr. u memorijskoj lokaciji sa adresom 0 nalazi se podatak 0, u memorijskoj lokaciji sa adreson 1 nalazi se podatak 1, itd.). CPU pristupa memorijskim lokacijama koje imaju sledeće adrese: 4, 9, 82, 255, 8, 2, 5, 164, 1, 3, 254, 0. Odrediti procenat keš pogodaka kao i broj bitova svakog od polja u adresi pristupa za oba slučaja.

Page 260: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

5-34

Odgovor: a) Analiziraćemo asocijativni keš, koji je inicijalno prazan i koristi LRU politiku zamene. Na slici 1 prikazani su sadržaji keša nakon pristupa svakom podatku. Kao što se vidi sa slike 1 od ukupno 12 pristupa tri je rezultiralo pogodkom, pa je stopa pogodaka h=3/12=0,25.

podaci 4 9 82 255 8 2 5 164 1 3 254 0 ke{

4 8 82 254 8 2 4 164 0 2 254 0 0 5 9 83 255 9 3 5 165 1 3 255 1 4 8 82 254 8 2 4 164 0 2 2541 5 9 83 255 9 3 5 165 1 3 255 4 8 82 254 8 2 4 164 0 2 2 5 9 83 255 9 3 5 165 1 3 4 4 82 254 8 2 4 164 1643 5 5 83 255 9 3 5 165 165

Pogodak V V V Slika 1 Aktivnost keša kod asocijativnog keša

Broj bitova u poljima adrese pristupa je: TAG bajt

7 bitova 1b

b) Rezultati direktno preslikanog keša prikazani su na slici 2. Stopa pogodaka u ovom slučaju je h=5/12=0,4167.

podaci 4 9 82 255 8 2 5 164 1 3 254 0 ke{

8 8 8 8 8 8 8 0 0 0 0 0 9 9 9 9 9 9 9 1 1 1 1 82 82 82 2 2 2 2 2 2 2 1 83 83 83 3 3 3 3 3 3 3

4 4 4 4 4 4 4 164 164 164 164 1642 5 5 5 5 5 5 5 165 165 165 165 165 254 254 254 254 254 254 254 254 2543 255 255 255 255 255 255 255 255 255

Pogodak V V V V V Slika 2 Aktivnost keša koristeći direktno preslikani keš

Page 261: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

5-35

Broj bitova u poljima adrese pristupa je: TAG linija bajt

5 bitova 2 bita 1b

bajt - broj bajtova u liniji = 2 = 21 → 1 bit adresa podatlinija - broj linija u kešu = 4 = 22 → 2 bita 00000000 0

00000001 1 TAG - preostali broj adresnih bitova = (8-1-2) = 5 bitova 00000010 2 00000011 3

Za skupno-asocijativni keš: 00000100 4 npr. dvostruko-skupno asoc. keš ↔ 2 linije u skupu 00000101 5

Januar 2006 - Zadatak 4. Neka glavnu memoriju čine blokovi veličine 4k, direktno-preslikani keš se sastoji od 128 blokova, a blok je obima 16 reči. a) prikazati kako izgleda podela glavne memorije i keša za slučaj da se koristi tehnika direktno preslikani keš b) MMU (Memory Management Unit) interpretira adresu CPU-a deleći je na tri adresna polja (vidi sliku1). Odrediti dužinu u bitovima, za svako polje sa slike 1 i pokazati kako izgleda proces adresne translacije

Tag polje Polje keš bloka Polje reči Slika 1. Adresna polja kod direktnog preslikavanja

Odgovor: a) Kao što se vidi sa slike 2. postoje ukupno 32 bloka glavne memorije koji se preslikavaju u dati keš blok. Na primer, blokovi glavne memorije 0, 128, 384, ... ,3968 se preslikavaju u keš blok 0, itd. b)

00000110 6 00000111 7 00001000 8 00001001 9

.......... ......

bajt - broj bajtova u liniji = 2 = 21 → 1 bit broj skupova = uk. br. linija / br. lin. u sk. = 4/2 = 2 sk. skup - broj skupova u kešu = 2 = 21 → 1 bita TAG - preostali broj adresnih bitova = (8-1-1) = 6 bitova

Page 262: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

5-36

Slika 2. Preslikavanje blokova glavne memorije u keš blokove

c) MMU interpretira CPU-ovu adresu deljenjem adrese na tri polja: polje _ reci = log 2 B ; gde je B obim bloka u rečima polje _ kes _ bloka = log 2 N ; gde je N obim keša u blokovima Tag _ polje = log 2 (M / N) ; gde je M obim glavne memorije Shodno prethodnom ukupni _ broj _ adresnih _ bitova _ glavne _ memorije = log2 (B × M) Zamenom odgovarajućih vrednosti dobijamo: polje _ reci = log 2 B = log 2 16 = 4 bita polje _ kes _ bloka = log N = log 2 2 128 = 7 bitova Tag _ polje = log 2 (M/N) = log 2 (22 * 210 / 27 ) = log 2 25 = 5 bitova ukupni_broj_adresnih_bitova_glavne_memorije=log2(B×M)=log2(16*4096) = 16 bitova Proces adresne translacije za parametre koje se odnose na ovaj primer prikazan je na slici 3. Koraci su sledeći: 1. koristi se polje_keš_bloka da odredi keš blok koji bi trebalo da sadrži element kome procesor treba da pristupi 2. proverava se sadržaj adresirane Tag_memorijske_lokacije sa Tag_poljem. Za slučaj da postoji uparivanje dolazi do keš pogodka, u suprotonom je keš promašaj 3. za slučaj keš pogodak ciljni element kome treba da pristupimo bira se na osnovu sadržaja polja_reči.

Page 263: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

5-37

4. za slučaj da ne dodje do uparivanja u koraku 2 javlja se keš promašaj. U tom slučaju iz glavne memorije treba dobaviti zahtevani blok i ažurirati sadržaj Tag i keš memorije.

Page 264: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

5-38

Page 265: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

6. Programabilne jedinice,

tehnike U/I prenosa

Page 266: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

6-1

Zadatak 6.8 Vreme trajanja odgovarajućih aktivnosti koje prate prihvatanje i obradu zahteva za prekid prikazani su na slici 6.23. Trajanje taktnog intervala iznosi 10 ns.

aktivnost trajanje u takt. interv.

• završetak najduže instrukcije

50 (t2)

• aktiviranje CPU-ovog ulaza INTR nakon što je spoljni uređaj aktivirao IRQ

2 (t1)

• aktiviranje INTA i prihvatanje vektor broja

16 (t3)

• smeštanje sadržaja CPU-ovih registara u magacin

60 (t4)

• obrada vektor broja od strane CPU-a i pribavljanje početne adrese prekidne rutine iz vektor tabele

52 (t5)

• vreme potrebno da CPU u prekidnoj rutini ispita status U/I uređaja kod tehnike "polling"

40 (t6)

Slika 6.23 : Aktivnosti koje prate obradu prekida Napomena: (ti) se odnosi na vreme trajanja i-tog taktnog intervala, tj. ti=n*tcp, gde je n broj taktnih intervala, tcp=10ns Ukupno je na sistem povezano osam U/I uređaja koji mogu generisati zahtev za prekid. a) Neka se svi zahtevi za prekid prihvataju preko jedinstvene linije (sl. 6.24) a nakon prihvatanja zahteva za prekid sistem koristi tehniku "polling" da bi odredio koji je uredjaj inicirao zahtev za prekid.

Page 267: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

IRQ8IRQ2

+VCC

IRQ1

CPU

INTR

Slika 6.24 : Prihvatanje zahteva za prekid preko jedinstvene

linije Odredi vreme odziva u najgorem slučaju, onog uređaja koji ima najniži prioritet opsluživanja. Usvojiti da ne postoje zahtevi za prekid koji su se javili a nisu usluženi (pending interrupts). b) Odrediti u najgorem slučaju, vreme odziva na zahtev za prekid onog uređaja čiji je prioritet opsluživanja najviši ako se zahtevi za prekid prihvataju preko kodera prioriteta (sl. 6.25). Usvojiti da ne postoje zahtevi za prekid koji su se javili a nisu usluženi. c) U kom se opsegu nalazi vreme odziva opsluživanja zahteva za prekid uređaja sa najvišim i najnižim prioritetom kod tehnike vektorskog prekida ako verovatnoća instrukcija koja se tekuće može izvršiti za 20, 10 ili 6 taktnih intervala, iznosi 20, 30 i 50 procenata respektivno.

6-2

Page 268: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

vektorbroj

INTR

INTA

koderprioriteta .

.

.

CPU

IRQ1IRQ2

IRQ8

Slika 6.25 : Predaja vektor broja preko bloka koder prioriteta

Odgovor a) Scenario događaja prihvatanja i opsluživanja zahteva za prekid kod tehnike polling može se objasniti shodno sl. 6.26. Vreme opsluživanja U/I uređaja sa najnižim prioritetom u najgorem slučaju iznosi: Tup=t1+t2+t4+7t6=(2+50+60+7*40)*10ns Tup=392*10ns=3920ns=3,92μs Najgori slučaj znači neposredno pre završetka t1 počinje izvršenje najduže instrukcije koja traja t2. b) Scenario događaja do početka opsluživanja U/I uređaja sa najvišim prioritetom koji je generisao zahtev za prekid u obliku vremenskog dijagrama prikazan je na slici 6.27.

6-3

Page 269: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

50 taktnih intervala

(t2)

mikroop.

instrukcija koja se tekuće

opslužuje

INTR 123

{ 40

taktnih intervala

(t6)

{

smeštanje CPU-ovih registara u magacin

status U/I uređaja sa najvišim

prioritetom

status U/I uređaja sa

predzadnjim prioritetom

opsluži uređaj sa najvišim prioritetom

opsluži uređaj sa predzadnjim prioritetom

opsluži uređaj sa najnižim prioritetom

izbavljanje CPU-ovih registara iz magacina

ne postoji zahtev

postoji zahtev

postoji zahtev

najniži prioritet

prihvatanje zahteva za prekid

40 taktnih

intervala (t6)

60 taktnih intervala (t4)

U/I uređaj IRQ

program koji se prekida

2 taktna intervala

(t1)

}

Slika 6.26 : Scenario događaja kod "polled" tehnike

t1 t2 t3 t4 t5

Slika 6.27 : Vremenski redosled događaja kod vektorskog prekida

Tuv=t1+t2+t3+t4+t5=2+50+16+60+52=180ns Treba istaći da je kod vektorske tehnike za slučaj kada ne postoji drugi zahtev za prekid vreme opsluživanja U/I uređaja sa najnižim i najvišim prioritetom identično, tj. Tuv=180ns.

6-4

Page 270: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

c) Već smo konstatovali da je trenutak opsluživanja U/I uređaja sa najvišim ili najnižim prioritetom, kada na postoje drugi zahtevi za prekid kod vektorske tehnike identičan. Analizirajući sliku 4 zaključujemo da se jedino može menjati interval t2. Prosečno vreme odziva biće: Tuvp=t1+t3+t4+t5+0.2*20+0.3*10+0.5*6=130+4+3+3=141ns Najkraće vreme odziva biće: Tuvmin=130+6=136ns Najduže vreme odziva Tuvmax=130+20=150ns Shodno tome, vreme odziva je u opsegu od 136ns do 150ns.

Zadatak 6.9 Od trenutka generisanja zahteva za prekid IRQ, od strane U/I uređaja, do početka izvršenja prve instrukcije prekidne rutine prođe vreme od 30μs. Prosečno, prekidna rutina se izvršava za 150μs. U suštini, čisti programski kôd za opsluživanje U/I uređaja se izvršava za 135μs a ostalih 15μs je režijsko vreme koje uključuje smeštanje sadržaja CPU-ovih registara u magacin (operacija Push) i izbavljanje sadržaja CPU-ovih registara iz magacina (operacija Pop). a) Odredi u procentima ukupno neproduktivno vreme koje se troši na opsluživanje uređaja. b) Ako se kod nekog realnog sistema prekidi javljaju 750 puta u sekundi odrediti koji se deo CPU-ovog vremena troši na opsluživanje uređaja. Odgovor a) Scenario događaja kod vektorskog prekida je sledeći:

t1 t2 t3 t4/2 tob t4/2

6-5

30μs 7.5μs 135μs 7.5μs

Page 271: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

6-6

gde su: • t1 - period od trenutka kada se aktivira IRQ do trenutka kada INTR postane takođe aktivan. • t2 - period potreban da završi izvršenje tekuće instrukcije • t3 - period od aktiviranja INTA do prihvatanja vektor broja. • t4 - režijsko vreme Push i Pop operacija • tob - vreme obrade prekida - čisti programski k d

Usvojimo da je t1+t2=t3=15μs. To znači da se CPU aktivira na obradu zahteva za prekid nakon 15μs od trenutka generisanja zahteva za prekid IRQ. Ukupno CPU je zauzet na obradu prekida: TCPU=t3+t4/2+tob+t4/2=15+7.5+135+7.5=165μs. Neproduktivno vreme je 30μs (uključuje 53+t4/2+t4/2), i iznosi u procentima : k=30/165=0.19⇒19% b) Ako se u toku 1s javi se 750 prekida tada je za opsluživanje U/I uređaja CPU ukupno zauzet TΣ=750*TCPU=123,720ms

Test pitanje 6.37 Integralno kolo 74LS244 predstavlja tro-statički bafer koji se uobičajeno koristi kao ulazni bafer kod mikroračunarskih sistema. Struktura kola prikazana je na sl. 6.28. Upravljački ulaz G1 kontroliše ulazne drajvere za bitove D0-D3, a G2 bitove D4-D7. Pokazati kako izgleda logika sistema zasnovana na 74LS244 koja se koristi za realizaciju operacije ulaz uz pomoć sledećih instrukcija: a) In AL,5Fh b) In AL,9Fh Napomena: Mikroračunarski sistem je zasnovan na centralno procesorskoj jedinici Intel 8088.

Page 272: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

74LS244

D0

D4

D3

D7

D0

D3

D4

D7

G1 G2 Slika 6.28 : Struktura kola 74LS244

Odgovor a) In AL,5Fh

74LS244

DO

D4

D3

D7A0 A1 A2 A3 A4 A5 A6 A7

IOR

sistemska adresna i upravljačka magistrala

stanje prekidača

ka linijama D0-D7 sistemske magistrale

6-7

Page 273: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

b) In AL,9Fh

A0 A1 A2

A3 A4 A5

A6

A7

IOR

74LS244

D0

D7

D0

D7

G1 G2

sistemska adresna i upravljačka magistrala

stanje prekidača

ka linijama D0-D7

sistemske magistrala

Test pitanje 6.38 Integrisano kolo 74LS373 se koristi kao izlazni 8-bitni leč čiji se izlazi mogu postaviti u stanje visoke impedanse(sl. 6.29)

D0

D7 Q7

Q0

CP

D

D

CP

Q

Q

G OE Slika 6.29 : Struktura čipa 74 LS 373

6-8

Page 274: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

Usponskom ivicom upravljačkog sitgnala Cp (takt) koji se dovodi na ulaz G pamti se informacija prisutna na ulazima D0 - D7 u D flip-flopove, a OE =0 dozvoljava rad tro-statičkim izlaznim baferima. Pokazati kako izgleda logika sistema zasnovana na kolu 74LS373 koja se koristi za realizaciju operacije izlaz kod instrukcije Out 99h,AL, za slučaj da je mikroračunarski sistem zasnovan na procesoru Intel 8088. Neka su izlazi kola 74LS373 uvek aktivirani (dozvoljeni) Odgovor

A0 A1 A2

A3 A4 A5 A6 A7

D0

D7

G

Q7

Q0

74LS373

D Q

Cp

Cp

D Q

IOW

sistemska, adresna i

upravljačka magistrala

sistemska magistrala podataka

ka izlaznom uređaju (npr.

LED)

OE

Slika 6.30: Logika izlaznog sistema za instrukciju Out 99h,AL

6-9

Page 275: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

Ispitni zadaci oktobar II 2001 - Zadatak 3

Na računarski sistem povezana su tri U/I uredjaja, štampač, disk, i RS 232 linija, čiji su prioriteti 2, 4, i 5 respektivno. Inicijalno (t=0) izvršava se program korisnika, pri t=10 štampač generiše zahtev za prekid. U trenutku t=15 linija RS 232 zahteva opsluživanje i generiše zahtev za prekid. Nešto kasnije u trenutku t=20 disk želi opsluživanje. Izvršenje svake od prekidnih rutina (štampača, RS 232 linije i diska) traje po 10 vremenskih jedinica. Skicirati scenario vremenskih dogadjaja i način opsluživanja višestrukih prekida. Numerički većoj vrednosti odgovara viši nivo prioriteta kod opsluživanja prekida. Odgovor Scenario vremenskih dogadjaja i način opsluživanja višestrukih prekida dat je na slici 1 (okt2-01-4).

0 10 15 20 25 35 40

korisnik korisnik štampač

korisnikštampač

korisnik

vreme

magacin

prekid štampača prioritet 2

RS232 prekid prioritet 5

prekid diska prioritet 4zhtev prihvaćen ali nije uslužen

završava se ISR RS232, produžava

prekid diska

završava se ISR, diska

završava se ISR štampača

korisni~ki program 2

RS 232ISR

ISR diska ISR {tampa~a

korisni~ki program 2

ISR {tampa~a

Slika 1 (okt2-01-4) Sekvenca opsluživanja većeg broja prekida Napomena: ISR (Interrupt Service Routine) - rutina za obradu

prekida 6-10

Page 276: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

oktobar II 2001 - Zadatak 4 a) Projektovati interfejs ulaznog uredjaja čija je binarna

adresa 1010 1010. Računarski sistem koristi izdvojeni U/I. b) Projektovati interfejs izlaznog uredjaja čija je binarna

adresa 0011 1001. Računarski sistem koristi izdvojeni U/I. c) Ponoviti aktivnosti pod stavkama a) i b) za slučaj da

računarski sistem koristi memorijsko preslikani U/I. Odgovor a)

b)

c) i)

6-11

Page 277: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

ii)

Jun 2002 - Zadatak 4

Zadatak CPU-a koji se sastoji u periodičnoj proveri statusnih bitova periferala sa ciljem da ustanovi da li je došlo vreme za narednu U/I operaciju naziva se polling. U suštini kod polling-a komunikacija izmedju U/I uredjaja i procesora se ostvaruje na vrlo jednostavan način. U/I uredjaj postavlja informaciju o svom stanju u Statusnom_registru a CPU pribavlja informaciju iz tog registra. To znači da je sva U/I aktivnost pod kontrolom procesora. Nedostatak polling-a je ta što CPU gubi suviše mnogo vremena na povremeno testiranje statusa (treba imati u vidu da je CPU mnogo brži od U/I uredjaja).

Da bi odredili uticaj polling-a na vreme rada CPU-a analizirajmo rad tri različita U/I uredjaja. Usvojićemo da je broj taktnih intervala potreban CPU-u da obavi operaciju polling 100, a da procesor radi na frekvenciji od 50 MHz.

6-12

Page 278: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

Odrediti deo vremena koje CPU troši za sledeća tri slučaja, usvajajući pri tome da se U/I uredjaj poll-uje dovoljno brzo da se ni jedan podatak ne izgubi (tj. propusti da prihvati od strane CPU-a): a) Miš mora da se poll-uje 30 puta u sekundi kako bi se

obezbedili da će biti prihvaćen svaki pomeraj koji je učinio korisnik. b) Flopi-disk prenosi podatke procesoru u 16-bitnim

jedinicama a karakteriše ga brzina prenosa od 50 kB/s. I u ovom slučaju ni jedan podatak u toku prenosa se ne sme izgubiti (tj. ne prihvatiti). c) Hard disk prenosi podatke kao jedinične blokove obima

32-bita, a brzina prenosa je 2 MB/s. U toku prenosa nesme biti izgubljen ni jedan podatak. Odgovor a) Za polling miša imaćemo

Broj taktnih intervala u sekundi za polling = 30∗100=3000 taktova/s

Deo CPU-ovih taktnih intervala po polling-u = 3000/(50∗106)=0.006%. Kao zaključak bi mogli da kažemo polling metoda se bez značajnih degradacija performansi CPU-a može koristiti kao strategija za opsluživanje miša. b) Kod polling-a flopi diska imaćemo da je brzina poll-ovanja

sistupapolling_pr2*25

sistupapolling_pr25k

istupupolling_prbajta2

50kB/s 10==

Ukupan broj taktnih intervala u sekundi potreban da se opsluži flopi-disk polling metodom iznosi

6-13

Page 279: 1. Ocena performansi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/mips/Materijal/Racunske vezbe_MIPS.pdfulazni interfejs (i) ulazni uredjaj (i) uobičajeno skupljeni u jedinstvenu stazu podataka

Taktni intervali u sekundi za polling = 25∗210∗100 = 25.6∗105 taktnih intervala u sekundi

Deo CPU-ovih taktnih intervala po polling-u %510*5010*6.25

6

5==

Kao zaključak: ovaj deo vremena nije za zanemarivanje ali se može tolerisati ako je na nekom računarskom sistemu povezan relativno mali broj U/I uredjaja kakav je recimo flopi-disk. c) Kod polling-a hard diska podaci se prenose kao reči, što

znači da disk treba da se poll-uje 500k puta u sekundi (2 MB/s sa po 4 bajta po transferu) Taktni intervali u sekundi za polling = 500∗210∗100 = 51.2∗106 taktnih intervala/s

Deo CPU-ovih taktnih intervala po polling-u %10010*5010*2.51

6

6==

Važan zaključak bi bio: Dobijeni rezultat ukazuje da je procesor 100% svog vremena zauzet za poll-ovanje - hard diska, što znači da je strategija polling u ovom slučaju neprihvatljiva. Izlaz se sastoji u korišćenju Interrupt_driven I/O ili DMA tehnika za prenos podataka.

6-14