Вы находитесь на странице: 1из 432

Deo 6 Upravljaka

jedinica

Poglavlje

Rad upravljake jedinice


19.1 Mikrooperacije

Ciklus donoenja
Indirektni ciklus
Ciklus prekida
Izvrni ciklus
Instrukcijski ciklus
19.2 Upravljanje procesorom

Funkcionalni zahtevi
Upravljaki signali
Primer upravljakih signala
Unutranja organizacija procesora
Intel 8085
19.3 Oiena implementacija

Ulazi upravljake jedinice


Logika upravljake jedinice
19.4 Dodatna literatura
19.5 Kljuni pojmovi, kontrolna pitanja i problemi

Kljuni pojmovi
Kontrolna pitanja
Problemi

19-1

19-2poglavlje 19 / Rad upravljake jedinice

Kljune teze
Izvravanje instrukcije obuhvata izvravanje niza potkoraka, koji se uopteno

nazivaju ciklusi. Na primer, izvravanje se moe sastojati od ciklusa donoenja,


indirektnog ciklusa, izvrnog ciklusa i ciklusa prekida. Sa druge strane, svaki od
ovih ciklusa sainjen je od niza jo osnovnijih operacija, koje se nazivaju mikrooperacije. Jedna mikrooperacija uopteno obuhvata prenos izmeu registara,
prenos izmeu registra i spoljne magistrale ili jednostavnu operaciju aritmetiko-logike jedinice.
Upravljaka jedinica procesora obavlja dva zadatka: (1) dovodi do toga da pro-

cesor izvrava mikrooperacije po pravilnom redosledu koji je odreen programom koji se izvrava i (2) generie upravljake signale koji dovode do toga da se
sve mikrooperacije izvre.
Upravljaki signali koje generie upravljaka jedinica izazivaju otvaranje i zatva-

ranje logikih kola, to za posledicu ima prenos podataka u registre i iz registara, kao i rad aritmetiko-logike jedinice.
Jedna od tehnika za implementiranje upravljake jedinice poznata je kao oi-

ena implementacija, u kojoj je upravljaka jedinica kombinatorno kolo. Njeni


ulazni signali, odreeni tekuom mainskom instrukcijom, pretvaraju se u skup
izlaznih upravljakih signala.

U poglavlju 12 istakli smo da skup mainskih instrukcija prolazi dug put prema procesoru. Ukoliko znamo skup mainskih instrukcija, to znai da razumemo ta operativni kodovi rade i razumemo reime adresiranja i ukoliko znamo skup registara
vidljivih korisniku, tada znamo koje funkcije procesor mora da izvri. To nije sve.
Moramo poznavati spoljni interfejs, to je najee magistrala, i to kako se upravlja
prekidima. Kada nam je to jasno, pojavljuje se sledei spisak elemenata neophodnih
da bi se odredilo funkcionisanje procesora:
1.
2.
3.
4.
5.
6.

operacije (operativni kodovi),


reimi adresiranja,
registri,
interfejs U/I modula,
interfejs memorijskog modula,
struktura obrade prekida.

Iako uopten, ovaj spisak je prilino potpun. Stavke od 1 do 3 definisane su skupom instrukcija. Stavke 4 i 5 obino su definisane odreivanjem sistemske magistrale.
Stavka 6 delimino je definisana sistemskom magistralom, a delimino tipom podrke
koju procesor nudi operativnom sistemu.
Ovaj spisak od est stavki mogao bi se nazvati funkcionalni zahtevi za procesor.
Oni odreuju ta procesor mora da radi. Time smo se najvie bavili u drugom i tre-

19.1 / Mikrooperacije19-3

em delu. Sada nas zanima to kako se ove funkcije izvravaju ili, jo tanije, kako se
upravlja razliitim delovima procesora da bi se te funkcije obavile. Stoga, nau panju
usmeravamo ka upravljakoj jedinici, koja upravlja radom procesora.

19.1 Mikrooperacije
Ve smo videli da se rad raunara, prilikom izvravanja programa, sastoji od niza
instrukcijskih ciklusa, sa jednom mainskom instrukcijom po ciklusu. Naravno,
moramo se podsetiti da redosled instrukcijskih ciklusa nije obavezno isti kao i redosled
pisanja instrukcija od kojih je program sainjen, zbog postojanja instrukcija grananja.
Ovde je re o izvravanju vremenskog redosleda instrukcija.
Dalje smo videli da se svaki instrukcijski ciklus sastoji od odreenog broja jednostavnijih celina. Jedna od pogodnih podela je podela na ciklus donoenja, indirektni
ciklus, izvrni ciklus i ciklus prekida, pri emu se samo ciklus donoenja i izvrni
ciklus obavezno deavaju.
Za projektovanje upravljake jedinice neophodno je da dodatno ralanimo
ovu podelu. Pri razmatranju protone obrade u poglavlju 12, uvideli smo da je dalja
dekompozicija mogua. U stvari, videemo da svi manji ciklusi obuhvataju niz koraka,
od kojih svi obuhvataju registre procesora. Ove korake nazvaemo mikrooperacije. Prefiks mikro oznaava injenicu da je svaki korak veoma jednostavan i da obavlja malo
toga. Na slici 19.1 prikazan je meusobni odnos izmeu razliitih pojmova o kojima
smo govorili. Ukratko da ponovimo, izvravanje programa sastoji se od izvravanja
instrukcija jedne za drugom. Sve instrukcije izvravaju se tokom instrukcijskog ciklusa
koji se sastoji od kraih potciklusa (npr. ciklusa donoenja, indirektnog ciklusa, izvrnog ciklusa, ciklusa prekida). Izvravanje svakog od potciklusa obuhvata jednu ili vie
kraih operacija, to jest, mikrooperacija.
Mikrooperacije su najmanje mogue, ili atomske, operacije procesora. U ovom
odeljku, istraiemo mikrooperacije kako bismo razumeli to da se dogaaji u bilo kom
instrukcijskom ciklusu mogu opisati kao niz takvih mikrooperacija. Koristie se jednostavan primer. U ostatku ovog poglavlja pokazaemo kako znanje o mikrooperacijama
slui kao smernica za projektovanje upravljake jedinice.
Izvravanje programa

Instrukcijski ciklus

Ciklus don.

OP

OP

OP

Instrukcijski ciklus

Ind. ciklus

Ciklus prekida

OP

OP

Izvrni ciklus

Instrukcijski ciklus

Ciklus don. = Ciklus donoenja


Ind. ciklus = Indirektni ciklus
OP = operacije

Slika 19.1 Elementi od kojih se sastoji izvravanje programa

19-4poglavlje 19 / Rad upravljake jedinice


Ciklus donoenja
Poeemo razmatranjem ciklusa donoenja koji se odvija na poetku svakog instrukcijskog ciklusa i dovodi do toga da se instrukcija preuzme iz memorije. Za potrebe
naeg razmatranja, pretpostaviemo organizaciju opisanu na slici 12.6. Ukljuena su
etiri registra:
memorijski adresni registar (Memory Address Register, MAR): povezan sa adresnim linijama sistemske magistrale; odreuje adresu u memoriji za operaciju
itanja ili upisivanja;
memorijski bafer registar (Memory Buffer Registar, MBR): povezan sa linijom
podataka sistemske magistrale; sadri vrednosti koje treba upisati u memoriju
ili poslednju vrednost uitanu iz memorije;
programski broja (Program Counter, PC): dri adresu sledee instrukcije koju
treba doneti;
instrukcijski registar (Instruction Registar, IR): dri poslednju donetu instrukciju.
Pogledajmo redosled dogaaja za ciklus donoenja sa take gledita registara procesora i koje posledice ima na njih. Primer je prikazan na slici 19.2. Na poetku ciklusa
donoenja, adresa sledee instrukcije koja treba da se izvri nalazi se u programskom
brojau (PC); u ovom sluaju, adresa je 1100100. Prvi korak je da se ta adresa premesti i memorijski adresni registar (MAR) poto je to jedini registar povezan sa adresnim
linijama sistemske magistrale. Drugi korak je uvoenje instrukcije. eljena adresa (u
MAR registru) smeta se na adresnu magistralu, upravljaka jedinica izdaje komandu
za uitavanje (READ) upravljakoj magistrali i rezultat se pojavljuje na magistrali
podataka i kopira se u memorijski bafer registar (MBR). Takoe, neophodno je da
poveamo vrednost PC registra za 1 da bismo bili spremni za sledeu instrukciju.
Poto ove dve akcije (uitavanje iz memorije, dodavanje 1 u PC registar) ne utiu
jedna na drugu, moemo ih obaviti istovremeno da bismo utedeli vreme. Trei korak
je premetanje sadraja MBR registra u instrukcijski registar (IR). Time se oslobaa
registar MBR za upotrebu tokom mogueg indirektnog ciklusa.
MAR

MAR

0000000001100100

MBR

MBR

0001000000100000

PC

0000000001100100

PC

0000000001100100

IR

IR

AC

AC
(c) Drugi korak

(a) Poetak
MAR

0000000001100100

MBR
PC

0000000001100100

IR

MAR

0000000001100100

MBR

0001000000100000

PC

0000000001100100

IR

0001000000100000

AC

AC
(b) Prvi korak

(d) Trei korak

Slika 19.2 Redosled dogaaja, ciklus donoenja

19.1 / Mikrooperacije19-5

Prema tome, jednostavan ciklus donoenja se, u stvari, sastoji od tri koraka i etiri
mikrooperacije. Svaka mikrooperacija obuhvata premetanje podataka u registar ili
iz njega. Sve dok ta pomeranja nemaju uticaja jedno na drugo, nekoliko njih moe
se obaviti u jednom koraku, tedei vreme. Simbolino, ovaj niz dogaaja moemo
napisati na sledei nain:
t1: MAR (PC)


t2: MAR memorija
PC (PC) + I

t3: IR (MBR)

gde je I duina instrukcije. Neophodno je da damo neka dodatna objanjenja o ovome.


Pretpostavka je da postoji generator takta koji sinhronizuje operacije i koji proizvodi
ravnomerno rasporeene vremenske impulse. Svaki impuls generatora takta odreuje
jedinicu vremena. Prema tome, sve jedinice vremena isto traju. Svaka mikrooperacija
moe se obaviti u toku jedne jedinice vremena. Oznake (t1, t2, t3) predstavljaju uzastopne jedinice vremena. Zapravo, imamo:
prvu jedinica vremena: premetanje sadraja PC registra u MAR registar;
drugu jedinica vremena: premetanje sadraja memorijske lokacije odreene
MAR registrom u MBR registar; sadraj PC poveava se za I;
treu jedinica vremena: premetanje sadraja MBR registra u IR registar.
Primeujete da se druga i trea mikrooperacija deavaju tokom druge jedinice vremena. Trea mikrooperacija mogla bi da se grupie sa etvrtom bez uticaja na operaciju donoenja:
t1: MAR (PC)


t2: MAR memorija

t3: PC (PC) + I
IR (MBR)

Grupisanje mikrooperacija mora da potuje sledea dva jednostavna pravila:


1.

2.

mora se potovati pravilan redosled dogaaja; tako da mikrooperacija (MAR


(PC)) mora prethoditi mikrooperaciji (MBRmemorija) poto operacija uitavanja memorije koristi adresu u MAR registru;
moraju se izbei preklapanja; ne treba pokuavati sa uitavanjem i upisivanjem u
isti registar u istoj jedinici vremena poto bi rezultat mogao biti nepredvidiv; na
primer, mikrooperacije (MBR memorija) i (IR MBR) ne bi trebalo da se
dese tokom iste jedinice vremena.

Konano, trebalo bi skrenuti panju na to da jedna od mikrooperacija obuhvata


sabiranje. Da bi se izbeglo udvostruavanje elektronskih kola, ovo sabiranje moglo
bi se obaviti aritmetiko-logikom jedinicom. Korienje aritmetiko-logike jedinice
moe da znai dodatne mikrooperacije, to zavisi od funkcionalnosti aritmetiko-lo-

19-6poglavlje 19 / Rad upravljake jedinice


gike jedinice i organizacije procesora. O tome emo u ovom poglavlju govoriti neto
kasnije..
Korisno je porediti dogaaje opisane u ovom i narednim pododeljcima sa slikom
3.5. Mada na toj slici mikrooperacije nisu uzete u obzir, ova rasprava pokazuje mikrooperacije neophodne za izvravanje potciklusa instrukcijskog ciklusa.

Indirektni ciklus
Poto je instrukcija doneta, sledei korak je donoenje izvornih operanda. Nastavljajui sa naim jednostavnim primerom, pretpostavimo da instrukcija ima format sa
jednom adresom, koja dozvoljava direktno i indirektno adresiranje. Ukoliko instrukcija navodi indirektnu adresu, tada izvrnom ciklusu prethodi indirektni ciklus. Tok
podataka donekle se razlikuje od onog naznaenog na slici 14.7 i obuhvata sledee
mikrooperacije:

t1: MAR (IR(adresa))

t2: MBR memorija


t3: IR(adresa) (MBR(adresa)

Polje adrese u instrukciji prenosi se u MAR registar. On se zatim koristi za donoenje adrese operanda. Konano, polje adrese IR registra se aurira iz MBR registra,
tako da sada sadri direktnu umesto indirektne adrese.
IR registar je sada u istom stanju kao da indirektno adresiranje nije ni korieno i
spreman je za izvrni ciklus. Na trenutak emo preskoiti ovaj ciklus i razmotriemo
ciklus prekida.

Ciklus prekida
Po zavretku izvrnog ciklusa, vri se provera kako bi se ustanovilo da li se dogodio
neki od dozvoljenih prekida. Ukoliko je tako, dogaa se ciklus prekida. Priroda ovog
ciklusa veoma se razlikuje od jednog do drugog procesora. Prikazujemo veoma jednostavan niz dogaaja, onako kako su prikazani na slici 14.8. Imamo:

t1: MBR (PC)

t2: MAR adresa_uvanja
PC adresa_rutine

t3: memorija (MBR)

U prvom koraku, sadraj PC registra prenosi se u MBR registar, tako da se moe


sauvati za povratak iz prekida. Zatim se u MAR registar uitava adresa na kojoj je
sauvan sadraj PC registra, a u PC registar se uitava adresa poetka rutine za obradu
prekida. Ove dve akcije mogu biti zasebne mikrooperacije. Meutim, poto veina
procesora nudi vie tipova i/ili nivoa prekida, moda e biti potrebna jedna ili vie
dodatnih mikrooperacija kako bi se dobile adresa_uvanja i adresa_rutine pre nego
to se prenesu u MAR i PC registre, respektivno. U svakom sluaju, kada se to obavi,

19.1 / Mikrooperacije19-7

poslednji korak je skladitenje u memoriju MBR registra, koji sadri staru vrednost
PC registra. Procesor je sada spreman da otpone sledei instrukcijski ciklus.

Izvrni ciklus
Ciklus donoenja, indirektni ciklus i ciklus prekida su jednostavni i predvidivi. Svi
oni obuhvataju male, nepromenljive nizove mikrooperacija i, u svim sluajevima, iste
mikrooperacije ponavljaju se svaki put ispoetka.
Ovo ne vai za izvrni ciklus. Za procesor sa N razliitih operacionih kodova,
postoji N razliitih redosleda po kojima se mikroperacije mogu odvijati. Razmotrimo
nekoliko hipotetikih primera.
Prvo, razmatramo instrukciju sabiranja:

ADD R1, X

kojom se sadraj lokacije X dodaje u registar R1. Mogue je da se desi sledei niz
mikrooperacija:


t1: MAR (IR(adresa))


t2: MBR memorija
t3: R1 (R1) + (MBR)

Poinjemo sa registrom IR koji sadri instrukciju za sabiranje, ADD. U prvom


koraku, deo IR registra sa adresom unosi se u MAR registar. Zatim se uitava memorijska lokacija na koju se ta adresa poziva. Konano, aritmetiko logika jedinica sabira
sadraje registara R1 i MBR. Ponavljamo, ovo je pojednostavljen primer. Mogue je da
budu potrebne dodatne mikrooperacije za izvlaenje reference registra iz IR i moda
za smetanje ulaza i izlaza aritmetiko logike jedinice u neke meuregistre.
Razmotrimo dva sloenija primera. Uobiajena instrukcija je poveanje vrednosti
i preskakanje ukoliko je vrednost nula:

ISZ X

Sadraj lokacije X poveava se za 1. Ukoliko je rezultat 0, preskae se sledea


instrukcija. Mogui redosled mikrooperacija je:

t1: MAR (IR(adresa))


t2: MBR memorija

t3: MBR (MBR) + 1

t4: memorija (MBR)

Ukoliko ((MBR) = 0) tada (PC (PC) + I)

Ovde je uvedeno neto novo, a to je uslovna akcija. Registar PC se poveava ukoliko je (MBR) = 0. Ova provera i akcija mogu se izvesti u jednoj mikrooperaciji. Primeujete takoe da se ova mikrooperacija moe izvriti tokom iste jedinice vremena
tokom koje se aurirana vrednost u MBR registru ponovo skladiti u memoriju.
Na kraju, razmotrimo instrukciju za pozivanje potprograma. Kao primer, razmotrimo instrukciju za grananje i uvanje adrese:

19-8poglavlje 19 / Rad upravljake jedinice


BSA X

Adresa instrukcije, koja sledi posle instrukcije BSA, uva se u lokaciji X, a izvravanje se nastavlja na lokaciji X+I. Sauvana adresa kasnije e biti iskoriena za
povratak. Ovo je jednostavna tehnika za pozivanje potprograma. Dovoljne su sledee
mikrooperacije:

t1: MAR (IR(adresa))

MBR (PC)

t2: PC (IR(adresa))
memorija (MBR)

t3: PC (PC) + I

Adresa u PC registru na poetku instrukcije je adresa sledee instrukcije u nizu.


Ona se uva u adresi naznaenoj u IR registru. Ova druga adresa se takoe poveava
da bi se obezbedila adresa instrukcije za sledei instrukcijski ciklus.

Instrukcijski ciklus
Ve smo videli da se svaka faza instrukcijskog ciklusa moe dekomponovati u niz elementarnih mikrooperacija. U naem primeru, postoji po jedan niz mikrooperacija za
ciklus donoenja, indirektni ciklus i ciklus prekida, a za izvrni ciklus postoji jedan niz
mikrooperacija za svaki operacioni kd.
Da bismo upotpunili sliku, potrebno je da poveemo niz mikrooperacija, i to je
uinjeno na slici 19.3. Uvodimo novi 2-bitni registar pod nazivom kd instrukcijskog
ciklusa (Instruction Cycle Code, ICC). Registar ICC oznaava stanje procesora u smislu u kom delu ciklusa se procesor nalazi:
00: ciklus donoenja,
01: indirektni ciklus,
10: izvrni ciklus,
11: ciklus prekida.
Na kraju svakog od ova etiri ciklusa, vrednost ICC registra postavlja se na odgovarajuu vrednost. Posle indirektnog ciklusa uvek sledi izvrni ciklus. Posle ciklusa
prekida uvek sledi ciklus donoenja (videti sliku 12.4). to se tie ciklusa donoenja i
izvrnog ciklusa, sledei ciklus zavisi od stanja sistema.
Prema tome, dijagram toka na slici 19.3 definie potpuni niz mikrooperacija, koji
zavisi samo od redosleda instrukcija i vrste i naina pojavljivanja prekida. Naravno,
ovo je pojednostavljeni primer. Dijagram toka stvarnog procesora bio bi mnogo sloeniji. U svakom sluaju, stigli smo do one take u naoj raspravi u kojoj se rad procesora definie kao obavljanje niza mikrooperacija. Razmotriemo kako upravljaka
jedinica dovodi do izvravanja tog niza.

19.2 / Upravljanje procesorom19-9

11 (prekid)

00 (donoenje)

ICC?
10 (izvravanje)

11 indirektni

Postavljanje
prekida

Operacioni
kd

Uitavanje
adrese

ICC 00

Izvravanje
instrukcije

ICC 10

Da

Prekid za
omogueni
prekid?

ICC 11

Ne

Donoenje
instrukcije

Ne

ICC 10

Indirektno
adresiranje?

Da

ICC 01

ICC 00

Slika 19.3 Dijagram toka instrukcijskog ciklusa

19.2 Upravljanje procesorom


Funkcionalni zahtevi
Rezultat nae analize u prethodnom odeljku je da smo dekomponovali ponaanje ili
funkcionisanje procesora u elementarne operacije, nazvane mikrooperacije. Svoenjem operacija procesora na njihov najosnovniji nivo, moemo tano da definiemo
ta je to to upravljaka jedinica mora izazvati da se desi. Prema tome, moemo
definisati funkcionalne zahteve za upravljaku jedinicu: one funkcije koje upravljaka
jedinica mora da obavlja. Definisanje ovih funkcionalnih zahteva je osnova za projektovanje i primenu upravljake jedinice.
Sa tim informacijama, osnovne osobine upravljake jedinice dobiemo postupkom koji podrazumeva:
1. definisanje osnovnih elemenata procesora,
2. opisivanje mikrooperacija koje procesor obavlja,
3. odreivanje funkcija koje upravljaka jedinica mora da obavi kako bi izazvala izvravanje mikrooperacija.
Ve smo sproveli korake 1 i 2. Pogledajmo ukratko ta smo dobili. Prvo, osnovni
funkcionalni elementi procesora su sledei:
aritmetiko-logika jedinica,
registri,
unutranje putanje podataka,
spoljne putanje podataka,
upravljaka jedinica.

19-10poglavlje 19 / Rad upravljake jedinice


Malo podseanja trebalo bi da vas ubedi da je ovo potpun spisak. Aritmetikologika jedinica je po funkciji sr procesora. Registri se koriste za uvanje podataka
unutar procesora. Neki procesori sadre informacije stanja, neophodne za upravljanje
redosledom instrukcija (npr. re stanja programa). Drugi sadre podatke koji odlaze
do ili stiu iz aritmetiko logike jedinice, memorije i izlazno / ulaznih modula. Unutranje putanje podataka koriste se za premetanje podataka izmeu registara i izmeu
registra i aritmetiko-logike jedinice. Spoljne putanje podataka povezuju registre sa
memorijom i U/I modulima, obino preko sistemske magistrale. Upravljaka jedinica
pokree dogaanje operacija unutar procesora.
Izvravanje programa sastoji se od operacija koje obuhvataju ove elemente procesora. Kao to smo ve videli, ove operacije sastoje se od niza mikrooperacija. Poto
proui odeljak 19.1, italac bi trebalo da uvidi da sve mikrooperacije spadaju u jednu
od sledeih kategorija:



prenoenje podataka iz jednog registra u drugi,


prenoenje podataka iz registra u spoljni interfejs (npr. sistemsku magistralu),
prenoenje podataka iz spoljanjeg interfejsa u registre,
izvravanje aritmetike ili logike operacije, korienjem registra za ulaz i izlaz.

Sve mikrooperacije neophodne za obavljanje jednog instrukcijskog ciklusa, ukljuujui sve mikrooperacije za izvravanje svih instrukcija iz skupa instrukcija, spadaju
u jednu od ovih kategorija.
Sada moemo biti malo odreeniji kada govorimo o nainu na koji upravljaka
jedinica funkcionie. Upravljaka jedinica obavlja dva osnovna zadatka:
sekvenciranje: upravljaka jedinica dovodi do toga da procesor prolazi kroz
niz mikrooperacija po pravilnom redosledu koji zavisi od programa koji se
izvrava;
izvravanje: upravljaka jedinica pokree obavljanje svih mikrooperacija.
Ovo je funkcionalni opis onog ta upravljaka jedinica radi. Klju kako upravljaka jedinica radi je u korienju upravljakih signala.

Upravljaki signali
Ve smo definisali elemente od kojih se procesor sastoji (aritmetiko-logika jedinica,
registri, putanje podataka) i mikrooperacije koje se obavljaju. Da bi upravljaka jedinica obavljala svoju funkciju, ona mora da ima ulaze koji joj omoguavaju da odredi
stanje sistema i izlaze koji joj omoguavaju da upravlja ponaanjem sistema. Njima se
spolja opisuje upravljaka jedinica. Iznutra, upravljaka jedinica mora da ima logika
kola neophodna da bi obavila svoje funkcije sekvenciranja i izvravanja. Raspravu o
tome kako upravljaka jedinica radi iznutra ostavljamo za odeljak 19.3 i poglavlje 20.
U preostalom delu ovog odeljka govoriemo o meusobnom delovanju izmeu upravljake jedinice i ostalih elemenata procesora.
Na slici 19.4 dat je opti model upravljake jedinice, na kome su prikazani svi
ulazi i izlazi. Ulazi su sledei:

19.2 / Upravljanje procesorom19-11

Upravljaki signali
unutar procesora
Markeri

Upravljaka
jedinica
Generator
takta

Upravljaki signali sa
upravljake magistrale

Upravljaka magistrala

Instrukcijski registar

Upravljaki signali ka
upravljakoj magistrali

Slika 19.4 Blok dijagram upravljake jedinice

Generator takta: pomou njega upravljaka jedinica vodi rauna o vremenu;


upravljaka jedinica izaziva izvravanje jedne mikrooperacije (ili skup istovremenih mikrooperacija) za svaki impuls generatora takta; ovo se ponekad
naziva vreme ciklusa procesora ili vreme ciklusa generatora takta;
instrukcijski registar: operacioni kd tekue instrukcije koristi se za odreivanje koje mikrooperacije se obavljaju tokom izvrnog ciklusa;
markeri: neophodni su upravljakoj jedinici da bi odredila status procesora i
izlaz prethodnih operacija aritmetiko-logike jedinice; na primer, za instrukciju poveanja i preskoka ukoliko je vrednost nula (ISZ) upravljaka jedinica
e poveati PC registar ako je postavljen nulti marker;
upravljaki signali sa upravljake magistrale: upravljaki deo sistemske magistrale
obezbeuje signale za upravljaku jedinicu, kao to su signali prekida ili potvrda.
Izlazi su:
upravljaki signali unutar procesora: postoje dva tipa oni koji izazivaju premetanje podataka iz jednog registra u drugi i oni koji aktiviraju odreene
funkcije aritmetiko-logike jedinice;
upravljaki signali ka upravljakoj magistrali: takoe postoje dva tipa upravljaki signali ka memoriji i upravljaki signali ka U/I modulima.
Novi element koji je uveden na ovoj slici je upravljaki signal. Koriste se tri tipa
upravljakih signala: oni koji aktiviraju neku funkciju aritmetiko-logike jedinice, oni
koji aktiviraju putanju podataka i oni koji su signali na spoljnoj sistemskoj magistrali
ili drugim spoljnim interfejsima. Svi ovi signali se u krajnjoj liniji primenjuju neposredno kao binarni ulazi na pojedinana logika kola.
Razmotrimo jo jednom ciklus donoenja da bismo videli kako upravljaka jedinica odrava upravljanje. Upravljaka jedinica vodi rauna o tome gde se nalazi u
instrukcijskom ciklusu. U datoj taki, ona zna da e posle toga biti izvren ciklus
donoenja. Prvi korak je prenoenje sadraja PC registra u MAR registar. Upravljaka
jedinica to radi aktiviranjem upravljakog signala koji otvara logika kola izmeu
bitova registara PC i MAR. Sledei korak je uitavanje rei iz memorije u MBR regi-

19-12poglavlje 19 / Rad upravljake jedinice


star i poveanje PC registra. Upravljaka jedinica to radi slanjem sledeih upravljakih
signala istovremeno:
upravljaki signal koji otvara logika kola, omoguavajui da se sadraj MAR
registra smesti na magistralu adresa;
upravljaki signal uitavanja memorije na upravljakoj magistrali;
upravljaki signal koji otvara logika kola, omoguavajui da se sadraj magistrale podataka sauva u MBR registru;
upravljaki signal u logiko kolo koje dodaje 1 sadraju PC registra i rezultat
ponovo unosi u PC registar.
Posle toga, upravljaka jedinica alje upravljaki signal koji otvara logika kola
izmeu registara MBR i IR.
Time se okonava ciklus donoenja, osim u jednoj stvari: upravljaka jedinica
mora da odlui da li da posle toga izvri indirektni ciklus ili izvrni ciklus. Da bi to
odluila, ona ispituje IR registar kako bi videla da li je napravljena indirektna referenca na memoriju.
Indirektni ciklus i ciklus prekida rade na slian nain. Za izvrni ciklus, upravljaka jedinica poinje ispitivanjem operacionog koda i, na osnovu toga, odluuje
kojim redosledom e biti izvrene mikrooperacije izvrnog ciklusa.

Primer upravljakih signala


Da bismo ilustrovali funkcionisanje upravljake jedinice, razmotrimo jednostavan primer (slika 19.5). To je jednostavan procesor sa jednim akumulatorom. Naznaene
su putanje podataka izmeu elemenata. Upravljake putanje za signale koji potiu iz
upravljake jedinice nisu prikazane, ali zavreci upravljakih signala obeleeni su kao
Ci i naznaeni kruiem. Upravljaka jedinica prima ulaze iz generatora takta, instrukcijskog registra i markera. Sa svakim ciklusom generatora takta, upravljaka jedinica
C5
C11

M
B
R

C10
C3

C12
C8

C4

AC

C1
IR

PC

C7

C9

C6
C0

C2
M
A
R

C13

Upravljaka
jedinica
Generator
takta

ALU

Upravljaki
signali

Slika 16.5 Putanje podataka i upravljaki signali

Upravljaki
signali

19.2 / Upravljanje procesorom19-13

oitava sve svoje ulaze i emituje skup upravljakih signala. Upravljaki signali odlaze
do tri razliita odredita:
putanje podataka: upravljaka jedinica kontrolie unutranji tok podataka; na
primer, prilikom donoenja instrukcije, sadraj memorijskog bafer registra prenosi se u instrukcijski registar; za sve putanje koje se kontroliu postoji logiko
kolo (naznaeno kruiem na slici); upravljaki signal iz upravljake jedinice
privremeno otvara logiko kolo da dozvoli prolazak podataka;
aritmetiko-logika jedinica: upravljaka jedinica kontrolie rad aritmetikologike jedinice pomou skupa upravljakih signala; ovi signali aktiviraju razliite logike ureaje i kola unutar aritmetiko-logike jedinice;
sistemska magistrala: upravljaka jedinica alje upravljake signale na upravljake linije sistemske magistrale (npr. uitavanje memorije).
Upravljaka jedinica mora uvek da zna gde se nalazi u instrukcijskom ciklusu.
Koristei to znanje, i itajui svoje ulaze, upravljaka jedinica emituje niz upravljakih
signala koji izazivaju deavanje mikrooperacija. Ona koristi impulse generatora takta
da bi odredila vremenski redosled dogaaja, ostavljajui vreme izmeu dogaaja da
bi se nivoi signala stabilizovali. U tabeli 19.1 navedeni su upravljaki signali koji su
potrebni za neke od nizova mikrooperacija opisanih ranije. Zbog jednostavnosti putanje podataka i kontrole za poveanje PC registra i za uitavanje nepromenljivih adresa
u registre PC i MAR nisu prikazane.
Tabela 19.1 Mikrooperacije i upravljaki signali

Mikrooperacije

Redosled dogaanja
t1: MAR (PC)

Ciklus donoenja:

t2: MBR memorija

Aktivni upravljaki
signali
C2
C5, CR

PC (PC) + 1

Indirektni ciklus:

Ciklus prekida:

t3: IR (MBR)

C4

t1: MAR (IR(adresa))

C8

t2: MBR memorija

C5, CR

t3: IR(adresa) (MBR(adresa))

C4

t1: MBR (PC)

C1

t2: MAR adresa-uvanja


PC adresa-rutine
t3: memorija (MBR)

C12, Cw

CR = upravljaki signal za itanje sa sistemske magistrale


CW = upravljaki signal za upisivanje na sistemsku magistralu

Vredi podrobnije prouiti osnovnu prirodu upravljake jedinice. Upravljaka jedinica je mehanizam koji pokree itav raunar. Ona to radi samo na osnovu znanja o
tome koje se instrukcije izvravaju i prirodi rezultata aritemtikih i logikih operacija
(npr. pozitivno, prekoraenje itd.). Ona nikada ne vidi podatke koji se obrauju ili

19-14poglavlje 19 / Rad upravljake jedinice


stvarno dobijene rezultate. Uz to, ona kontrolie sve sa samo nekoliko upravljakih
signala ka odreenim takama u procesoru i nekoliko upravljakih signala ka sistemskoj magistrali.

Unutranja organizacija procesora


Na slici 19.5 naznaena je upotreba razliitih putanja podataka. Potrebno je razjasniti
sloenost ovog tipa organizacije. Za to e se obino koristiti neka vrsta unutranjeg
rasporeda magistrala, kakva je predloena na slici 14.2.
Korienjem unutranje magistrale procesora, slika 19.5 moe se preurediti onako
kako je prikazano na slici 19.6. Jedna unutranja magistrala povezuje aritmetiko-logiku jedinicu i sve registre procesora.
Upravljaka
jedinica

IR

Adresne
linije

MAR

Linije
podataka

MBR

AC

Unutranja magistrala procesora

PC

Upravljaka
jedinica

Z
Slika 19.6 Procesor sa unutranjom magistralom

19.2 / Upravljanje procesorom19-15

Za premetanje podataka iz svakog registra na magistralu i sa magistrale obezbeena su logika kola i upravljaki signali. Dodatni upravljaki signali kontroliu prenos podataka na i sa sistemske (spoljne) magistrale i rad aritmetiko-logike jedinice.
Dva nova registra, obeleena Y i Z, dodata su u organizaciju. Oni su neophodni
za ispravan rad aritmetiko-logike jedinice. Kada se izvrava operacija koja obuhvata
dva operanda, jedna se moe dobiti iz unutranje magistrale, ali se drugi mora dobiti
iz nekog drugog izvora. Registar AC bi se mogao koristiti u tu svrhu, ali se time ograniava fleksibilnost sistema i verovatno ne bi funkcionisalo sa procesorom sa viestrukim registrima opte namene. Registar Y obezbeuje privremeno mesto za uvanje
ostalih ulaza. Aritmetiko-logika jedinica je kombinatorno kolo (pogledajte poglavlje 11) bez unutranjeg skladita. Stoga, im upravljaki signal aktivira neku funkciju
aritmetiko-logike jedinice, ulaz u aritmetiko-logiku jedinicu pretvara se u izlaz.
Prema tome, izlaz aritmetiko-logike jedinice ne moe se direktno povezati sa magistralom poto bi taj izlaz trebalo ponovo vratiti u ulaz. Registar Z obezbeuje privremeno izlazno skladite. Takvim reenjem, operacija dodavanja vrednosti iz memorije
u AC registar trebalo bi da ima sledee faze:
t1: MAR (IR(adresa))
t2: MBR memorija
t3: Y (MBR)
t4: Z (AC) + (Y)
t5: AC (Z)

Mogue su i drugaije organizacije, ali se, uopteno, koristi neka vrsta unutranje
magistrale ili skupa unutranjih magistrala. Korienje zajednikih putanja podataka
pojednostavljuje emu meusobnih veza i upravljanje procesorom. Drugi praktini
razlog za korienje unutranje magistrale jeste uteda prostora. Posebno u sluaju
mikroprocesora, koji zauzima samo kvadratnog ina pareta silikona, kada se prostor koji zauzimaju veze izmeu registara mora to vie smanjiti.

Intel 8085
Da bismo ilustrovali neke od koncepata koje smo do sada analizirali u ovom poglavlju,
razmotriemo procesor Intel 8085. Njegova organizacija prikazana je na slici 19.7.
Postoji nekoliko kljunih komponenata koje nisu jasne same po sebi:
elektronski prekida za poveanje / smanjenje adrese: logiko kolo koje moe
dodati 1 na ili oduzeti 1 od sadraja pokazivaa steka ili programskog brojaa;
time se tedi vreme poto se izbegava upotreba aritmetiko-logike jedinice u tu
svrhu;
upravljanje prekidima: ovaj modul upravlja viestrukim nivoima signala prekida;
upravljanje serijskim U/I: ovaj modul predstavlja interfejs prema ureaju koji
razmenjuje podatke 1 bit odjednom.
U tabeli 19.2 opisani su spoljni ulazni i izlazni signali procesora 8085. Oni su
povezani sa spoljnom sistemskom magistralom. Ovi signali predstavljaju interfejs
izmeu procesora 8085 i ostatka sistema (slika 19.8).

Napajanje

5V
GND
X1
X2

Dekoder
instrukcija i
kodovanje
ciklusa
procesora

Dekoder
instrukcija i
kodovanje
ciklusa
procesora

S0 S1 IO/M

Status

Hold

Reset out
Reset in

HLDA

DMA

Reset

(8)
Instrukcijski
registar

(8)
Marker
el. prekidaa

8-bitna unutranja magistrala podataka

SID

SOD

(8)
E reg.
(8)
L reg.

(8)
D reg.
(8)
H reg.

A15 A8
Magistrala adresa

(8)
Adresni bafer

Elektronski (16)
prekida za poveanje/
smanjenje adrese

(16)
programski broja

(16)
pokaziva steka

(8)
C reg.

(8)
B reg.

Upravljanje
serijskim U/I
modulom

Slika 19.7 Blok dijagram procesora Intel 8085

RD WR ALE

Control

TRAP

RST 7.5

Vremensko usklaivanje i upravljanje

(8)
Privr. registar

Ready

ClkOut

Clk
Gen

(8)
Akumulator

RST 5.5

RST 6.5

Upravljanje prekidima

INTR

INTA

AD7 AD0
Magistrala
adresa/podataka

(8)
Adresni bafer

Niz
registara

19-16poglavlje 19 / Rad upravljake jedinice

19.2 / Upravljanje procesorom19-17


Tabela 19.2 Spoljni signali procesora Intel 8085

Signali adresa i podataka


Gornja adresa (A15-A8)
Gornjih 8 bitova 16-bitne adrese.
Adresa/podaci (AD7-AD0)
Donjih 8 bitova 16-bitne adrese ili 8 bitova podataka. Ovim multipleksiranjem smanjuje se broj pinova.
Serijski ulaz podataka (Serial Input Data, SID)
Jednobitni ulaz prilagoen ureajima koji podatke prenose serijski (jedan po jedan bit).
Serijski izlaz podataka (Serial Output Data, SOD)
Jednobitni izlaz prilagoen ureajima koji podatke primaju serijski.

Vremenski i upravljaki signali


CLK (OUT)
Sistemski generator takta. Svaki ciklus predstavlja jedno T stanje. CLK signal odlazi do periferijskih
ipova i sinhronizuje njihovo vreme.
X1, X2
Ovi signali stiu iz spoljanjeg kristala ili drugog ureaja za upravljanje unutranjim generatorom takta.
Ukljuivanje elektronskog prekidaa adresa (Address Latch Enabled, ALE)
Javlja se tokom prvog dela impulsa sistemskog generatora takta u ciklusu procesora i na osnovu njega
periferijski ipovi uvaju linije adresa. Njime se omoguava da moduli adresa (npr. memorija, U/I) prepoznaju
da su adresirani.
Status (S0, S1)
Upravljaki signali koji se koriste da bi se naznailo da li se odvija operacija itanja ili upisivanja.
IO/M
Koristi se da bi se U/I modulima i memoriji omoguile operacije itanja i upisivanja.
Kontrola itanja (RD)
Ukazuje na to da li se izabrana memorija ili U/I modul ita i da li je magistrala podataka raspoloiva za
prenos podataka.
Kontrola upisivanja (WR)
Ukazuje na to da li se podaci na magistrali podataka upisuju u izabranu memorijsku lokaciju ili U/I
modul.

Simboli koje pokreu memorija i U/I moduli


Hold
Zahteva od procesora da prepusti kontrolu i da koristi spoljnu sistemsku magistralu. Procesor e okonati
izvravanje instrukcija prisutnih u IR registru i zatim ui u stanje mirovanja, tokom koga procesor ne unosi
signale u upravljaku magistralu ili magistralu adresa i podataka. Tokom stanja mirovanja, magistrala se moe
koristiti za operacije za direktno pristupanje memoriji.
Hold Acknowledge (HOLDA)
Ovaj izlazni signal upravljake jedinice potvruje prijem signala HOLD i pokazuje da je magistrala
postala dostupna.
READY
Koristi se za sinhronizaciju procesora sa sporijim memorijskim i U/I ureajima. Kada adresirani
ureaj potvrdi da je spreman (READY), procesor moe da nastavi sa ulaznom (DBIN) ili izlaznom (WR)
operacijom. Inae, procesor prelazi u stanje ekanja dok odreeni ureaj ne bude spreman.

(nastavlja se)

19-18poglavlje 19 / Rad upravljake jedinice


Tabela 16.2 Nastavak

Signali koji se odnose na prekide


TRAP
Ponovo pokree prekide (RST 7.5, 6.5, 5.5).
Zahtev za prekid (INTR)
Spoljni ureaj koristi ovih pet linija da bi procesoru poslao zahtev za prekid. Procesor nee ispotovati
ovaj zahtev ukoliko je u stanju mirovanja ili su prekidi onemogueni. Prekid se potuje samo po okonanju
instrukcije. Prekidi su poreani po opadajuem prioritetu.
Potvrda prijema zahteva za prekid (INTA)
Potvruje prijem zahteva za prekid.

Inicijalizacija procesora
RESET IN
Dovodi do toga da se sadraj PC registra postavi na nulu. Procesor nastavlja izvravanje od lokacije nula.
RESET OUT
Potvrda da je procesor vraen na poetno stanje. Ovaj signal se moe iskoristiti za vraanje u poetno
stanje ostatka sistema.

Napajanje i uzemljenje
VCC
Napajanje +5 volti.
VSS
Elektrino uzemljenje.

Upravljaka jedinica se prepoznaje po tome to ima dve komponente obeleene


(1) dekoder instrukcija i kodovanje mainskog ciklusa i (2) vremensko usklaivanje
i upravljanje. Raspravu o prvoj komponenti odlaemo za sledei odeljak. Sutina
upravljake jedinice je modul za vremensko usklaivanje i upravljanje. Ovaj modul
obuhvata generator takta i za svoje ulaze prihvata tekue instrukcije i neke spoljanje
upravljake signale. Njegov izlaz se sastoji od upravljakih signala za ostale komponente procesora i upravljakih signala spoljanjoj sistemskoj magistrali.
Vremensko usklaivanje operacija procesora sinhronizuje generator takta, a kontrolie ih upravljaka jedinica upravljakim signalima. Svaki instrukcijski ciklus podeljen je
na jedan do pet mainskih ciklusa; a svaki mainski ciklus je podeljen na tri do pet stanja.
Svako stanje traje jedan ciklus generatora takta. Tokom jednog stanja procesor izvrava
jednu ili skup istovremenih mikrooperacija odreenih upravljakim signalima.
Broj mainskih ciklusa je za istu instrukciju nepromenjiv, ali se razlikuje od jedne
do druge instrukcije. Mainski ciklusi se definiu da budu jednaki broju pristupanja
magistrali. Prema tome, broj mainskih ciklusa za neku instrukciju zavisi od toga
koliko puta procesor mora da komunicira sa spoljanjim ureajima. Na primer, ako se
neka instrukcija sastoji od dva 8-bitna dela, tada su potrebna dva mainska ciklusa za
donoenje te instrukcije. Ako instrukcija obuhvata jednobajtnu operaciju sa memorijom ili U/I ureajima, tada je za izvravanje potreban trei mainski ciklus.
Na slici 19.9 dat je primer vremenskog usklaivanja procesora 8085, pri emu
je prikazana vrednost spoljanjih upravljakih signala. Naravno, u isto vreme, uprav-

19.2 / Upravljanje procesorom19-19

ljaki signal generie interne upravljake signale koji upravljaju internim prenosima
podataka. Na dijagramu je prikazan instrukcijski ciklus za instrukciju OUT. Neophodna su tri mainska ciklusa (M1, M2, M3). Tokom prvog, donosi se OUT instrukcija.
Tokom drugog mainskog ciklusa donosi se druga polovina instrukcije, koja sadri
broj U/I ureaja izabranog za izlaz. Tokom treeg ciklusa, sadraj AC registra upisuje
se u izabrani ureaj preko magistrale podataka.

X1
X2
Reset out
SOD
SID
Trap
RST 7.5
RST 6.5
RST 5.5
INTR
INTA
AD0
AD1
AD2
AD3
AD4
AD5
AD6
AD7
Vss

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

40
39
38
37
36
35
34
33
32
31
30
29
28
27
26
25
24
23
22
21

Vcc
HOLD
HLDA
CLK (out)
Reset in
Ready
IO/M
S1
Vpp
RD
WR
S0
A15
A14
A13
A12
A11
A10
A9
A8

Slika 19.8 Konfiguracija pinova procesora Intel 8085

Impulsni signal ukljuivanja elektronskog prekidaa adresa (ALE) iz upravljake


jedinice pokree sve mainske cikluse. Impuls ALE pobuuje spoljna kola. Tokom
stanja vremenskog usklaivanja T1 mainskog ciklusa M1, upravljaka jedinica postavlja IO/M signal kojim naznaava da je to memorijska operacija. Takoe, upravljaka
jedinica izaziva da se sadraj PC registra smesti na adresnu magistralu (A15 do A8)
i magistralu adresa/podataka (AD7 do AD0). Na zadnjoj ivici impulsa ALE, ostali
moduli na magistrali pamte adresu.

IO/M

WR

RD

ALE

AD7 AD0

A15 A8

3 MHz CLK

PC Out

PCL

T1

PC Instr

INSTR

PCH

T3

IR

T4

PC Out

PC 1

INSTR

PC byte

PCH

T2

M2

itanje memorije

INSTR

T1

OUT byte

Z, W

T3

WZ Out

INSTR

T1

Slika 19.9 Dijagram vremenskog usklaivanja OUT instrukcije za procesor Intel 8085

Donoenje instrukcije

PC 1

T2

M1

Upisivanje izlaza

ACCUM

IO PORT

T2

M3

Port

T3

19-20poglavlje 19 / Rad upravljake jedinice

19.3 / Oiena implementacija19-21

Tokom stanja vremenskog usklaivanja T2, adresirani memorijski modul smeta


sadraj adresirane memorijske lokacije na magistralu adresa/podataka. Upravljaka
jedinica postavlja RD signal da bi naznaio uitavanje, ali eka do T3 da iskopira
podatke sa magistrale. Time se memorijskom modulu daje vreme da podatke smesti
na magistralu i da se stabilizuju nivoi signala. Zavrno stanje, T4, je stanje mirovanja
magistrale tokom koga procesor dekoduje instrukciju. Preostali mainski ciklusi odvijaju se na slian nain.

19.3 Oiena implementacija


Razmotrili smo upravljaku jedinicu to se tie njenih ulaza, izlaza i funkcija. Posvetiemo se temi implementacije upravljake jedinice. Za to se koriste razne tehnike.
Veina od njih spada u jednu od dve kategorije:
oiena implementacija,
mikroprogramirana implementacija.
Oiena implementacija upravljake jedinice znai da je ona, u sutini, kombinatorno kolo. Njeni ulazni logiki signali pretvaraju se u skup izlaznih logikih signala,
koji predstavljaju upravljake signale. Taj pristup istraujemo u ovom odeljku. Mikroprogramirana implementacija je predmet poglavlja 17.

Ulazi upravljake jedinice


Na slici 19.4 upravljaka jedinica je predstavljena onako kako smo do sada o njoj govorili. Kljuni ulazi su instrukcijski registar, generator takta, markeri i signali upravljake
magistrale. U sluaju markera i signala upravljake magistrale, svaki pojedinani bit
obino ima neko znaenje (npr. prekoraenje). Druga dva ulaza, meutim, nisu direktno korisni za upravljaku jedinicu.
Prvo emo razmotriti instrukcijski registar. Upravljaka jedinica, koristei operacioni kd, izvrava razliite akcije (izdavanje razliitih kombinacija upravljakih
signala) za razliite instrukcije. Da bismo pojednostavili logiku upravljake jedinice,
potreban nam je jedinstven logiki ulaz za svaki operacioni kd. Ovaj zadatak moe
da obavi dekoder, koji za svaki kodovani ulaz proizvodi poseban izlaz. U optem sluaju, dekoder e imati n binarnih ulaza i 2n binarnih izlaza. Svaki od 2n razliitih
oblika izlaza aktivira poseban jedinstven izlaz. Primer je dat u tabeli 19.3. Dekoder
za upravljaku jedinicu bie obino mnogo sloeniji od ovoga da bi se uzeli u obzir
operacioni kodovi promenljive duine. Primer digitalne logike koja se koristi za implementaciju dekodera prikazan je u poglavlju 11.
Deo upravljake jedinice sa generatorom takta izdaje neprekidne nizove impulsa
koji se ravnomerno ponavljaju. Ovo je korisno za merenje trajanja mikrooperacija. U
sutini, perioda impulsa generatora takta mora biti dovoljno duga da bi se omoguilo
prostiranje signala du putanja podataka i kroz elektronska kola procesora. Meutim, kao to smo ve videli, upravljaka jedinica emituje razliite upravljake signale
u razliitim vremenskim trenucima unutar istog instrukcijskog ciklusa. Prema tome,
potreban nam je i broja kao ulaz u upravljaku jedinicu, sa razliitim upravljakim
signalima koji se koriste za T1, T2 i tako dalje. Na kraju instrukcijskog ciklusa, upravljaka jedinica mora da pobudi broja tako da ga ponovo inicijalizuje na T1.

I1

I2

I3

I4

O1

O2

O3

O4

Tabela 19.3 Dekoder sa etiri ulaza (I) i esnaest izlaza (O)

O5

O6

O7

O8

O9

O10

O11

O12

O13

O14

O15

O16

19-22poglavlje 19 / Rad upravljake jedinice

19.3 / Oiena implementacija19-23


Instruskcijski registar

Dekoder
I0

I1

Ik

T1

Generator
takta

Generator
vremenskih
impulsa

T2

Tn

Upravljaka
jedinica

C0 C1

Markeri

Cm

Slika 19.10 Upravljaka jedinica sa dekodovanim ulazima

Uz ova dva objanjenja, upravljaka jedinica moe se predstaviti onako kako je


dato na slici 19.10.

Logika upravljake jedinice


Da bismo definisali oienu implementaciju upravljake jedinice, ostaje nam jo da
razmotrimo unutranju logiku upravljake jedinice koja proizvodi izlazne upravljake
signale u zavisnosti od svojih ulaznih signala.
U sutini, za svaki upravljaki signal mora da se razvije Bulov izraz za taj signal
u funkciji odreenog ulaza. Ovo je najbolje objasniti pomou primera. Razmotrimo
ponovo na jednostavan primer prikazan na slici 19.5. U tabeli 19.1 smo videli redosled mikrooperacija i upravljake signale koji su nam neophodni za kontrolu tri od
etiri faze instrukcijskog ciklusa.
Razmotrimo samo jedan upravljaki signal, C5. Ovaj signal izaziva uitavanje
podataka sa spoljne magistrale podataka u MBR registar. U tabeli 19.1 vidimo da se
koristi dva puta. Definiimo dva nova upravljaka signala, P i Q, koji imaju sledea
tumaenja:



PQ = 00
PQ = 01
PQ = 10
PQ = 11

ciklus donoenja
indirektni ciklus
izvrni ciklus
ciklus prekida

Tada sledei Bulov izraz definie C5:

C5 = P Q T2 + P Q T2
Drugim reima, upravljaki signal C5 pojavie se tokom druge jedinice vremena za
ciklus donoenja i indirektni ciklus.

19-24poglavlje 19 / Rad upravljake jedinice


Ovaj izraz nije potpun. Upravljaki signal C5 takoe je potreban tokom izvrnog
ciklusa. Za na jednostavan primer, pretpostaviemo da postoje samo tri instrukcije
koje itaju iz memorije: LDA, ADD i AND. Sada C5 moemo definisati kao:

C5 =P Q T2 +P Q T2 +P Q (LDA+ADD+AND) T2
Ovaj postupak moe se ponoviti za sve upravljake signale koje procesor generie.
Rezultat bi bio skup Bulovih jednaina koje definiu ponaanje upravljake jedinice, a
samim tim i procesora.
Da bi sve povezala, upravljaka jedinica mora da kontrolie status instrukcijskog
ciklusa. Kao to je ve napomenuto, na kraju svakog potciklusa (donoenja, indirektnog, izvrnog, prekida), upravljaka jedinica izdaje signal koji dovodi do toga da se
generator impulsa ponovno inicijalizuje i izda T1. Upravljaka jedinica mora takoe da
postavi odgovarajue vrednosti registara P i Q, ime definie sledei ciklus koji treba
da se izvri.
italac treba da bude svestan injenice da je u savremenim sloenim procesorima
broj Bulovih jednaina potrebnih za definisanje upravljake jedinice veoma veliki.
Zadatak implementiranja kombinatornog kola koje zadovoljava sve ove jednaine
postaje izuzetno teak. Posledica je da se obino koristi jednostavnije reenje, poznato
kao mikroprogramiranje. Ono je predmet sledeeg poglavlja.

19.4 Dodatna literatura


U velikom broju udbenika obrauju se osnovni principi na kojima upravljaka jedinica funkcionie; u sledea dva je to posebno detaljno objanjeno.
FARH04Farhat, H. Digital Design and Computer Organization. Boca Raton, FL: CRC Press, 2004.
MANO04Mano, M. Logic and Computer Design Fundamentals. Upper Saddle River, NJ; Prentice Hall,
2004.

19.5 Kljuni pojmovi, kontrolna pitanja


i problemi
Kljuni pojmovi
upravljaka magistrala
upravljaka putanja

upravljaki signal
upravljaka jedinica

oiena implementacija
mikrooperacije

Kontrolna pitanja
19.1 Objasnite razliku izmeu redosleda po kome se pie i redosleda po kome se neka instrukcija
izvrava.

19.2 Kakav je odnos izmeu instrukcija i mikrooperacija?


19.3 Koju ukupnu funkciju obavlja upravljaka jedinica procesora?
19.4 Navedite tri koraka koji nas dovode do dobijanja optih osobina upravljake jedinice.

19.5 / Kljuni pojmovi, kontrolna pitanja i problemi19-25

19.5
19.6
19.7
19.8

Koje osnovne zadatke obavlja upravljaka jedinica?


Napravite spisak sainjen od tipinih ulaza u upravljaku jedinicu i izlaza iz nje.
Navedite tri tipa upravljakih signala.
Ukratko objasnite ta znai oiena implementacija upravljake jedinice.

Problemi
19.1 Imate aritmetiko-logiku jedinicu koja moe da sabira svoja dva ulazna registra i moe lo-

19.2

19.3

19.4

19.5

giki da komplementira bitove bilo kojeg ulaznog registra, ali ne moe da oduzima. Brojevi
se skladite predstavljeni komplementom dvojke. Navedite koje mikrooperacije upravljaka
jedinica mora da izvri da bi sprovela oduzimanje.
Prikaite mikrooperacije i upravljake signale na isti nain kao u tabeli 19.1 za procesor na
slici 19.5 za sledee instrukcije:
uitavanje u akumulator,
skladitenje vrednosti u akumulator,
sabiranje sa sadrajem u akumulatoru,
logiko AND sa sadrajem akumulatora,
skok,
skok ukoliko je sadraj AC = 0,
komplementiranje sadraja akumulatora.
Pretpostavimo da kanjenje prostiranja du magistrale i kroz aritmetiko-logiku jedinicu sa
slike 19.6 iznosi 20 i 100 ns, respektivno. Vreme potrebno registru da prekopira podatke sa
magistrale je 10 ns. Koliko vreme treba ostaviti za:
a. Prenoenje podataka iz jednog registra u drugi?
b. Poveanje vrednosti programskog brojaa?
Napiite niz mikrooperacija potrebnih za strukturu magistrale prema slici 19.6 za dodavanje
broja u AC registar kada je taj broj:
a. neposredni operand,
b. operand sa direktnom adresom,
c. operand sa indirektnom adresom.
Stek se primenjuje onako kako je prikazano na slici 19.11 (pogledajte dodatak O u kome se
govori o stekovima. Pokaite redosled mikrooperacija za:
a. uklanjanje poslednjeg elementa steka,
b. dodavanje novog elementa u stek.

Poglavlje

Mikroprogramiranje
20.1 Osnovni koncepti

Mikroinstrukcije
Mikroprogramirana upravljaka jedinica
Wilkesovo upravljanje
Prednosti i mane
20.2 Sekvenciranje mikroinstrukcija

Razmatranje dizajna
Tehnike sekvenciranja
Generisanje adrese
Sekvenciranje mikroinstrukcija LSI-11
20.3 Izvravanje mikroinstrukcija

Razvrstavanje mikroinstrukcija
Kodovanje mikroinstrukcija
LSI-11 izvravanje mikroinstrukcija
Izvravanje mikroinstrukcija IBM 3033
20.4 TI 8800

Format mikroinstrukcija
Mikrosekvencer
Registri aritmetiko-logike jedinice
20.5 Dodatna literatura
20.6 Kljuni pojmovi, kontrolna pitanja i problemi

Kljuni pojmovi
Kontrolna pitanja
Problemi

20-1

20-2poglavlje 20 / mikropragramiranje

Kljune teze
Alternativa oienoj upravljakoj jedinici je mikroprogramirana upravljaka jedi-

nica, u kojoj je logika koja upravlja upravljakom jedinicom odreena mikroprogramom. Mikroprogram se sastoji od niza instrukcija u mikroprogramskom jeziku.
Radi se o veoma jednostavnim instrukcijama koje odreuju mikrooperacije.
Mikroprogramirana upravljaka jedinica je relativno jednostavno logiko kolo koje

moe (1) sekvencijalno da prolazi kroz mikroinstukcije i (2) generie upravljake


signale za izvravanje svih mikroinstrukcija.
Kao i u oienoj upravljakoj jedinici, ovi upravljaki signali koje generiu mikroin-

strukcije koriste se za pokretanje prenosa izmeu registara i operacije aritmetiko-logike jedinice.


Izraz mikroprogram prvi je smislio M. V. Wilkes ranih 50-ih godina prolog veka
[WILK51]. Wilkes je predloio reenje za izradu upravljake jedinice kojim se organizaciono i sistemski izbegavala sloenost oiene implementacije. Ta ideja zaintigrirala
je mnoge istraivae, ali tada je izgledalo da nikad nee biti praktino primenjena
poto je zahtevala brzu, relativno jeftinu upravljaku memoriju.
Prikaz razvoja mikroprogramiranja dat je u asopisu Datamation u njegovom
izdanju iz februara 1964. U to vreme nije bilo mikroprogramiranih sistema u irokoj upotrebi, a u jednom od lanaka [HILL64] u najkraim crtama navedeno je tada
popularno miljenje da je budunost mikroprogramiranja pomalo maglovita. Nijedan
od vodeih proizvoaa nije pokazao oigledno zanimanje za ovu tehniku mada su je
verovatno svi istraivali.
Situacija se dramatino promenila za samo nekoliko meseci. IBM-ov System/360
pojavio se u aprilu, a svi osim najveih modela bili su mikroprogramirani. Mada je
serija 360 poranila u odnosu na pojavu poluprovodnike ROM memorije, prednosti mikroprogramiranja bile su dovoljno velike da nateraju IBM da napravi taj potez.
Mikroprogramiranje je postalo popularna tehnika za primenu upravljake jedinice
CISC procesora. Poslednjih godina mikroprogramiranje se manje koristi, ali je i dalje
alat dostupan projektantima raunara. Na primer, kao to smo ve videli, na procesoru
Pentium 4, mainske instrukcije se pretvaraju u format nalik RISC instrukcijama, od
kojih se veina izvrava bez korienja mikroprogramiranja. Meutim, neke instrukcije se izvravaju koristei mikroprogramiranje.

20.1 Osnovni koncepti


Mikroinstrukcije

ini se da je upravljaka jedinica relativno jednostavan ureaj. Ipak, implementacija upravljake jedinice kao ureaja za meusobno povezivanje osnovnih logikih elemenata nije
lak zadatak. Prilikom projektovanja mora se voditi rauna o logici za sekvencijalno prolaenje kroz mikrooperacije, za izvravanje mikrooperacija, za interpretiranje operacionih
kodova i za donoenje odluka na osnovu markera aritmetiko-logike jedinice. Teko je
projektovati i testirati takav deo hardvera. tavie, dizajn je relativno krut. Na primer, konstrukcija se teko menja ukoliko neko zaeli da doda novu mainsku instrukciju.

17.1 / Origin20-3

Drugu mogunost, koja se ve koristi u mnogim CISC procesorima, predstavlja implementacija mikroprogramirane upravljake jedinice.
Razmotrimo jo jednom tabelu 20.1. Pored toga to koriste upravljake signale, sve
mikrooperacije opisane su simbolikom notacijom. Ova notacija previe podsea na neki
programski jezik. U stvari, to i jeste jezik, poznat kao mikroprogramski jezik. Svaka linija
opisuje skup mikrooperacija koje se deavaju istovremeno i poznata je kao mikroinstrukcija. Sekvenca instrukcija poznata je kao mikroprogram ili firmver. Ovaj poslednji izraz
ukazuje na injenicu da je mikroprogram negde na sredini izmeu hardvera i softvera.
Mnogo je lake projektovati firmver nego hardver, ali je mnogo tee napisati firmverski
mikroprogram nego softverski program.
Na koji nain moemo iskoristiti koncept mikroprogramiranja za implementaciju
upravljake jedinice? Poite od toga da sve to upravljaka jedinica treba da uradi, za
sve mikrooperacije, jeste da generie skup upravljakih signala. Prema tome, za bilo koju
mikrooperaciju, svi upravljaki signali koji potiu iz upravljake jedinice su ili ukljueni ili
iskljueni. Ovo se moe, naravno, predstaviti binarnim ciframa za svaku upravljaku liniju.
Stoga, mogli bismo napraviti upravljaku re u kojoj svaki bit predstavlja jednu upravljaku
liniju. Tako bi svaka mikrooperacija mogla biti predstavljena razliitim rasporedom jedinica i nula u upravljakoj rei.
Pretpostavimo da poreamo niz upravljakih rei koje predstavljaju niz mikrooperacija koje izvrava upravljaka jedinica. Moramo znati da ova sekvenca mikrooperacija nije
nepromenljiva. Ponekad imamo indirektni ciklus, ponekad ne. Stoga, smestimo nae upravljake rei u memoriju, pri emu svaka re ima svoju jedinstvenu adresu. Sada dodajmo
polje adrese svakoj upravljakoj rei, naznaavajui poloaj sledee upravljake rei koja e
biti izvrena ukoliko su ispunjeni odreeni uslovi (npr. indirektni bit u instrukciji pozivanja
memorije je 1). Takoe, dodajemo nekoliko bitova kojima uspostavljamo taj uslov.
Rezultat je poznat kao horizontalna mikroinstrukcija, iji je primer prikazan na slici
20.1a. Format mikroinstrukcije ili upravljake rei je sledei. Postoji jedan bit za svaku
upravljaku liniju unutar procesora i jedan bit za svaku upravljaku liniju sistemske magistrale. Postoji polje uslova koje naznaava uslov pod kojim se vri grananje i postoji polje
sa adresom mikroinstrukcije koja se vri ukoliko doe do grananja. Takva mikroinstrukcija
interpretira se na sledei nain:
1.

2.
3.

Za izvravanje ove mikroinstrukcije, ukljui sve upravljake linije naznaene


bitom 1; ostavi sve upravljake linije naznaene bitom 0. Dobijeni upravljaki
signali dovee do toga da se izvre jedna ili vie mikrooperacija.
Ukoliko uslov koji navode uslovni bitovi nije taan, izvri sledeu mikroinstrukciju
u nizu.
Ukoliko je uslov koji navode uslovni bitovi taan, izvrava se sledea mikroinstrukcija navedena u polju adrese.

Na slici 20.2 prikazano je kako se ove upravljake rei ili mikroinstrukcije mogu poreati u upravljakoj memoriji. Mikroinstrukcije u svakoj rutini izvravaju se sekvencijalno.
Svaka rutina zavrava se grananjem ili instrukcijom skoka koja oznaava gde se ide posle
nje. Postoji posebna rutina izvrnog ciklusa ija je jedina svrha da naznae da se posle toga
izvrava neka od mainskih instrukcijskih rutina (AND, ADD i tako dalje), zavisno od
aktuelnog operacionog koda.

20-4poglavlje 20 / mikropragramiranje

Adresa mikroinstrukcije
Uslov skoka
bezuslovni
nulti
prekoraenje
indirektni bit
Upravljaki signali sistemske magistrale
Upravljaki signali unutar procesora
(a) Horizontalna mikroinstrukcija

Adresa mikroinstrukcije
Uslov skoka
Kodovi funkcije
(b) Vertikalna mikroinstrukcija

Slika 20.1 Tipini formati mikroinstrukcija

Skok do indirektnog ili izvrnog ciklusa

Skok do izvrnog ciklusa

Skok do ciklusa donoenja


Skok do rutine operacionog koda

Rutina
ciklusa
donoenja
Rutina
indirektnog
ciklusa
Rutina
ciklusa
prekida
Poetak izvrnog ciklusa

AND rutina
Skok do ciklusa donoenja ili prekida

ADD rutina
Skok do ciklusa donoenja ili prekida

IOF rutina
Skok do ciklusa donoenja ili prekida

Slika 20.2 Organizacija upravljake memorije

17.1 / Origin20-5

Upravljaka memorija sa slike 20.2 predstavlja skraeni opis potpunog naina


rada upravljake jedinice. Njime se definie niz mikrooperacija koji se izvrava tokom
svakog ciklusa (donoenja, indirektnog, izvrnog, prekida) i utvruje redosled izvravanja tih ciklusa. Ako nita drugo, ovakvo obeleavanje moe biti korisno sredstvo za
dokumentovanje funkcionisanja upravljake jedinice za odreeni raunar. Ali vie je
od toga. To je nain na koji se implementira upravljaka jedinica.

Mikroprogramirana upravljaka jedinica


Upravljaka jedinica na slici 20.2 sadri program koji opisuje ponaanje upravljake
jedinice. Iz toga sledi da bismo mogli da implemetiramo upravljaku jedinicu jednostavnim izvravanjem tog programa.
Na slici 20.3 prikazani su kljuni elementi takve implementacije. Skup mikroinstrukcija uva se u upravljakoj memoriji. Upravljaki registar adresa sadri adresu sledee instrukcije koju treba proitati. Kada se mikroinstrukcija uita iz upravljake
memorije, prenosi se u upravljaki bafer registar. Levi deo ovog registra (videti sliku
20.1a) povezan je sa upravljakim linijama koje proistiu iz upravljake jedinice.
Prema tome, uitavanje mikroinstrukcije iz upravljake jedinice je isto to i izvravanje
te mikroinstrukcije. Trei element prikazan na slici je sekvencijalni ureaj koji puni
upravljaki registar adresa i izdaje komandu za uitavanje.
Istraimo ovu strukturu malo podrobnije, onako kako je prikazana na slici 20.4.
U poreenju sa slikom 20.3, vidimo da upravljaka jedinica i dalje ima iste ulaze
(instrukcijski registar, markeri aritmetiko-logike jedinice, generator takta) i izlaze
(upravljaki signali). Upravljaka jedinica funkcionie na sledei nain:
Sekvencijalno
logiko kolo

Upravljaki registar adresa

Uitavanje

Upravljaka
memorija

Upravljaki bafer registar

Slika 20.3 Mikroarhitektura upravljake jedinice

20-6poglavlje 20 / mikropragramiranje
Instrukcijski registar

Upravljaka
jedinica
Markeri
aritmetikologike
jedinice
Generator
takta

Dekoder

Upravljaki registar adresa

Sekvencijalna
logika
jedinica

Uitavanje
Upravljaka
memorija

Upravljaki bafer registar


Adresa sledeeg
upravljakog signala

Dekoder

Upravljaki signali
unutar procesora

Upravljaki signali ka
sistemskoj magistrali

Slika 20.4 Funkcionisanje mikroprogramirane upravljake jedinice

Da bi se neka instrukcije izvrila, sekvencijalna logika jedinica izdaje komandu


READ upravljakoj memoriji.
2. Re ija je adresa odreena u upravljakom registru adresa uitava se u upravljaki bafer registar.
3. Sadraj upravljakog bafer registra generie upravljake signale i informaciju o
sledeoj adresi za sekvencijalnu logiku jedinicu.
4. Sekvencijalna logika jedinica uitava novu adresu u upravljaki registar adresa
na osnovu informacija o sledeoj adresi iz upravljakog bafer registra i markera
aritmetiko-logike jedinice.
Sve ovo se deava tokom jednog impulsa generatora takta.
Poslednji od upravo navedenih koraka zahteva dodatno objanjenje. Po zavretku
svake mikroinstrukcije, sekvencijalna logika jedinica uitava novu adresu u upravljaki registar adresa. Zavisno od vrednosti markera aritmetiko-logike jedinice i
upravljakog bafer registra, donosi se jedna od tri odluke:
1.

17.1 / Origin20-7

doneti sledeu instrukciju: dodavanje 1 u upravljaki registar adresa;


skoiti do nove rutine na osnovu mikroinstrukcije skoka: uitavanje polja adrese
upravljakog bafer registra u upravljaki registar adresa;
skoiti do rutine mainske instrukcije: uitavanje upravljakog registra adresa
na osnovu operacionog koda u instrukcijskom registru.
Na slici 20.4 prikazana su dva modula obeleena kao dekoder. Gornji dekoder
prevodi operacioni kd instrukcijskog registra u adresu upravljake memorije. Donji
dekoder se ne koristi za horizontalne mikroinstrukcije, ve za vertikalne mikroinstrukcije (slika 20.1b). Kao to je ve napomenuto, u horizontalnoj mikroinstrukciji svaki
bit u upravljakom polju povezan je sa nekom upravljakom linijom. U vertikalnoj
mikroinstrukciji, za svaku akciju koja se obavlja koristi se odreeni kd [npr. MAR
(PC)] i dekoder prevodi ovaj kd u pojedinane upravljake signale. Prednost vertikalnih mikroinstrukcija je da su mnogo kompaktnije (manje bitova) u odnosu na horizontalne mikroinstrukcije, pri emu je za njih potrebno neto malo dodatnih logikih
kola i neto su sporije.

Wilkesovo upravljanje
Kao to je ve spomenuto, Wilkes je prvi predloio upotrebu mikroprogramirane
upravljake jedinice jo 1951. [WILK51]. Ovaj predlog je posle toga dodatno objanjen u mnogo detaljnijem projektu [WILK53]. Mnogo toga moe se saznati prouavanjem ovog predloga koji je imao dalekosene posledice.
Konfiguracija koju je Wilkes predloio prikazana je na slici 20.5. Srce ovog
sistema je matrica delimino ispunjena diodama. Tokom mainskog ciklusa, jedan red
matrice aktivira se pomou impulsa. Time se generie signal na onim mestima gde
Iz
instrukcijskog
registra
Registar II
Generator takta
Registar I

Dekoder
adresa

Upravljaki
signali

Upravljaki signali

Signali
uslova

Slika 20.5 Wilkesova mikroprogramirana upravljaka jedinica

20-8poglavlje 20 / mikropragramiranje
postoji dioda (naznaeno kruiima na crteu). Prvi deo reda generie upravljake
signale koji upravljaju radom procesora. Drugi deo generie adresu reda u koji e biti
poslat impuls u sledeem mainskom ciklusu. Prema tome, svaki red matrice je jedna
mikroinstrukcija, a raspored dioda unutar matrice je upravljaka memorija.
Na poetku ciklusa, adresa reda u koji e impuls biti poslat nalazi se u registru I.
Ova adresa je ulaz za dekoder koji, kada ga aktivira generator takta, aktivira jedan red
matrice. Zavisno od upravljakog signala, tokom ciklusa se u registar II prenosi ili operacioni kd u instrukcijskom registru ili drugi deo reda u koji je signal poslat. Registar
II se zatim prespaja impulsom generatora takta u registar I. Ovakvo korienje dva
registra je neophodno poto je dekoder prosto kombinatorno kolo; sa samo jednim
registrom, izlaz bi postao ulaz tokom ciklusa, to bi znailo nestabilan rad.
Ova ema je veoma slina reenju sa horizontalnim mikroprogramiranjem opisanim ranije (slika 20.1a). Osnovna razlika je u tome to se u prethodnom opisu
upravljaki adresni registar mogao poveati za jedan kako bi dobio sledeu adresu.
U Wilkesovoj emi, sledea adresa nalazi se u mikroinstrukciji. Da bi omoguio grananje, red mora da sadri dvodelnu adresu, koju upravlja uslovnim signalom (npr.
marker), kao to je prikazano na slici.
Predloivi ovakvu emu, Wilkes je ponudio i primer kako bi se ona mogla iskoristiti za primenu upravljake jedinice u jednostavnom raunaru. Ovaj primer, prvi
poznati projekat mikroprogramiranog procesora, vredi ovde ponoviti poto se njime
ilustruje veina savremenih naela na kojima se zasniva mikroprogramiranje.
Procesor hipotetikog raunara obuhvata sledee registre:
A mnoenik,
B akumulator (manje znaajna polovina),
C akumulator (znaajnija polovina),
D pomeraki registar.
Pored njih, postoje tri registra i dva 1-bitna markera dostupna samo upravljakoj jedinici. Ti registri su:

E slui istovremeno kao memorijski adresni registar (MAR) i za


privremeno uvanje,
F programski broja,
G drugi privremeni registar; koristi se za odbrojavanje.

U tabeli 20.1 naveden je skup mainskih instrukcija za ovaj primer. U tabeli 20.2
dat je potpuni skup mikroinstrukcija, izraenih u simbolikom obliku, koje primenjuje
upravljaka jedinica. Prema tome, ukupno 38 mikroinstrukcija je sve to je potrebno
da bi sistem bio potpuno definisan.
Prva puna kolona daje adrese (broj reda) svih mikronistrukcija. Obeleene su one
adrese koje odgovaraju operacionim kodovima. Prema tome, kada se naie na operacioni kd za instrukciju sabiranja (A), izvrava se mikroinstrukcija na lokaciji 5. Kolone 2
i 3 izraavaju akcije koje preduzimaju aritmetiko-logika jedinica i upravljaka jedinica,
respektivno. Svi simboliki izrazi moraju se prevesti u skup upravljakih signala (bitove
mikroinstrukcije). Kolone 4 i 5 to obavljaju postavljanjem i koristei dva markera (bistabilni multivibratori, tj. kola koja naizmenino ulaze u jedno od dva mogua stanja).

17.1 / Origin20-9

Kolona 4 odreuje signal koji postavlja marker. Na primer, (1)Cs znai da se marker broj
1 postavlja bitom predznaka broja u registru C. Ukoliko kolona 5 sadri identifikator
markera, tada kolone 6 i 7 sadre dve alternativne adrese mikroinstrukcije koje treba
koristiti. Inae, kolona 6 odreuje adresu sledee mikroinstrukcije koju treba doneti.
Tabela 20.1 Skup mainskih instrukcija koje je Wilkes dao kao primer

Naredba

Posledica naredbe

An

C(Acc) + C(n) u Acc1

Sn

C(Acc) C(n) u Acc1

Hn

C(n) u Acc2

Vn

C(Acc2) x C(n) u Acc, gde je C(n) 0

Tn

C(Acc1) u n, 0 u Acc

Un

C(Acc1) u n

Rn

C(Acc) 2(n+1) u Acc

Ln

C(Acc) 2(n+1) u Acc

Gn

Ukoliko C(Acc) < 0, preneti upravljanje u n; ukoliko C(Acc) 0, zanemariti (tj. nastaviti
dalje).

In

Uitati sledei znak na ulaznom mehanizmu u n.

On

Poslati C(n) u izlazni mehanizam.

Oznake:



Acc = akumulator
Acc1 = znaajnija polovina akumulatora
Acc2 = manje znaajna polovina akumulatora
n = lokacija za uvanje n
C(X) = sadraj od X (X = registar ili lokacija za uvanje)

Instrukcije od 0 do 4 sainjavaju ciklus donoenja. Mikroinstrukcija 4 predstavlja


operacioni kd za dekoder, koji generie adresu mikroinstrukcije saglasno mainskoj
instrukciji koju treba uzeti. italac bi trebalo da paljivim prouavanjem tabele 20.2
samostalno doe do zakljuka o tome kako upravljaka jedinica funkcionie.

Prednosti i nedostaci
Osnovna prednost korienja mikroprogramiranja u primeni upravljake jedinice je
da se time pojednostavljuje njena izrada. A to znai da je to jeftniji nain za implementaciju i istovremeno manje podloan grekama. Oiena upravljaka jedinica
mora da sadri sloena logika kola za sekvencijalno prolaenje kroz brojne mikrooperacije instrukcijskog ciklusa. Sa druge strane, dekoder i sekvencijalna logika jedinica
mikroprogramirane upravljake jedinice veoma su jednostavna logika kola.
Osnovni nedostatak mikroprogramirane upravljake jedinice je u tome da e ona
u izvesnoj meri biti sporija u odnosu na oienu jedinicu sline izrade. I pored toga,
mikroprogramiranje je preovlaujui nain za implementaciju upravljakih jedinica u
istim CISC arhitekturama, pre svega zbog lakoe primene. RISC procesori, sa svojim jednostavnijim formatom instrukcija, obino koriste oiene upravljake jedinice.
Podrobnije emo razmotriti pristup u kome se koriste mikroprogramirane upravljake
jedinice.

20-10poglavlje 20 / mikropragramiranje
Tabela 20.2 Mikroinstrukcije za Wilkesov primer
Oznaavanje: A, B, C... oznaavaju razne registre u aritmetikoj i upravljakoj jedinici. C u D naznaava prebacivanje elektronskih spojeva izlaza registra C na ulaz registra D; (D + A) u C naznaava da je izlaz registra
A povezan sa jednim izlazom ureaja za sabiranje (izlaz registra D je stalno povezan sa drugim ulazom) i izlaz
ureaja za sabiranje sa registrom C. Brojani simbol n pod navodnicima (npr. n) oznaava izvor iji je izlaz broj
n u jedinici cifre najmanjeg znaaja.

Aritmetika
jedinica

Uslovni bistabilni
multivibrator

Upravljaka
registarska jedinica Postavljanje Upotreba

Sledea
mikroinstrukcija
0

FuGiE

(G u 1) u F

Skladitenje u G

GuE

4
A

S
H
V

E u dekoder

CuD

16

CuD

17

memorija u B

memorija u A

27

C u memoriju

25

10

C u memoriju

11

BuD

EuG

19

12

CuD

EuG

22

13

14

EuG

18

(1)C5

ulaz u memoriju

15

memorija u izlaz

16

(D + memorija) u C

17

(D memorija) u C

18

19

D u B (R)*

20

CuD

21

D u C (R)

22

D u C (L)

(G 1) u E

0
21

11
(G 1) u E

11
24

BuD
D u B (L)

(1)E5

25

0 u B

26

26

BuC

27

0 u C

18 u E

BuD

EuG
(G 1) u E

29

D u B (R)
C u B (R)

31

DuC

23

24

28

20
(1)E5

23

30

12

28
29

(1)B1

30
(2)E5

1
2

31

32

28

33

(nastavlja se)

17.1 / Origin20-11
Tabela 20.2 Nastavak

Aritmetika
jedinica
32

(D + A) u C

33

BuD

34

D u B (R)

35

C u D (R)

Uslovni bistabilni
multivibrator

Upravljaka
registarska jedinica Postavljanje Upotreba
2
(1)B1

Sledea
mikroinstrukcija
0

28

33

34
35
1

36

36

DuC

37

(D A) u C

37

* Desni pomeraj. Komutatorska kola u aritmetikoj jedinici prepakuju se tako da se najmanje znaajna cifra u registru C smesti na najznaajnije mesto u registru B tokom mikrooperacije desnog pomeraja, a najznaajnija cifra u
registru C (cifra predznaka) se ponovi (na taj nain vrei ispravku za negativne brojeve).

Levi pomeraj. Komutatorska kola se prepakuju na slian nain tako da propuste najznaajniju cifru registra B do
najmanje znaajnog mesta u registru C tokom mikrooperacije levog pomeraja.

20.2 Sekvenciranje mikroinstrukcija


Dva osnovna zadatka koja obavlja mikroprogramirana upravljaka jedinica su:
sekvenciranje mikroinstrukcija: uzimanje sledee mirkoinstrukcije iz upravljake memorije;
izvravanje mikroinstrukcija: generisanje upravljakih signala neophodnih za
izvravanje mikroinstrukcija.
Prilikom projektovanja upravljake jedinice mora se voditi rauna o oba zadatka
poto oba utiu na format mikroinstrukcije i usklaivanje vremena upravljake jedinice. U ovom odeljku, svoju panju usmeravamo na sekvenciranje i govoriemo to je
manje mogue o pitanjima koja se tiu formata i usklaivanju vremena. Njih istraujemo mnogo podrobnije u narednom odeljku.

Razmatranje dizajna
Prilikom projektovanja tehnike sekvenciranja mikroinstrukcija, potrebno je voditi
rauna o dve stvari: veliini mikroinstrukcija i vremenu generisanja adrese. Prva stvar
je oigledna; smanjivanje veliine upravljake memorije sniava njenu cenu. Druga
stvar je jednostavna elja da se mikroinstrukcije izvravaju to je mogue bre.
Pri izvravanju mikroprograma, adresa naredne mikroinstrukcije koju treba izvriti pripada jednoj od sledeih kategorija:
odreena instrukcijskim registrom,
sledea sekvencijalna adresa,
grananje.
Prva kategorija javlja se samo jednom po instrukcijskom ciklusu, neposredno
posle donoenja instrukcije. Druga kategorija je najea u veini sluajeva. Meu-

20-12poglavlje 20 / mikropragramiranje
tim, izrada se ne moe optimizovati samo za sekvencijalni pristup. Grananja, kako
uslovna, tako i bezuslovna, neizostavan su deo mikroprograma. tavie, sekvence
mikroinstrukcija obino su kratke; jedna od tri ili etiri mikroinstrukcije je grananje
[SIEW82]. Prema tome, vano je projektovati kompaktne, vremenski efikasne tehnike
za grananje mikroinstrukcija.

Tehnike sekvenciranja
Adresa upravljake memorije za sledeu mikroinstrukciju mora se generisati na
osnovu tekue mikroinstrukcije, markera uslova i sadraja instrukcijskog registra. Za
to se koristi vie razliitih tehnika. Moemo ih grupisati u tri opte vrste, kao to je
prikazano na slikama 20.6 do 20.8. Te tehnike su zasnovane na formatu informacije o
adresi u mikroinstrukciji:
Upravljaki
adresni registar

Dekoder
adresa

Upravljaka
memorija

Upravljanje

Adresa
1

Adresa
2

Upravljaki
bafer
registar

Markeri

Logika
grananja

Biranje
adrese

Multiplekser

Instrukcijski
registar

Slika 20.6 Upravljaka logika grananja: dva polja za adrese

17.1 / Origin20-13

dva polja za adrese,


jedno polje za adresu,
promenljiv format.
Najjednostavniji pristup je obezbediti dva polja za adrese u svakoj mikroinstrukciji. Slika 20.6 upuuje na to kako se ova informacija koristi. Postoji multiplekser koji
slui kao odredite za oba adresna polja i za instrukcijski registar. Na osnovu ulaza
za biranje adrese, multiplekser prenosi ili operacioni kd ili jednu od dve adrese do
upravljakog adresnog registra (CAR). Registar CAR se posle toga dekodira da bi se
dobila adresa sledee mikroinstrukcije. Signal za biranje adrese obezbeuje modul
logike grananja iji se ulaz sastoji od markera upravljake jedinice i bitova iz upravljakog dela mikroinstrukcije.
Mada je reenje sa dve adrese jednostavno, za njega je potrebno vie bitova u
mikroinstrukciji nego za druga reenja. Uz neto malo dodatnih logikih kola, mogue
je na tome utedeti. Uobiajeni pristup je koristiti jedno adresno polje (slika 20.7). Sa
ovakvim pristupom, opcije za sledeu adresu su:
Dekoder
adresa

Upravljaka
memorija

Upravljaki
bafer
Upravljanje
registar

Adresa

Upravljaki
adresni registar

Markeri

Logika
grananja

Multiplekser
Biranje
adrese

Instrukcijski
registar

Slika 20.7 Upravljaka logika grananja: jedno polje za adresu

20-14poglavlje 20 / mikropragramiranje
polje adrese,
kd instrukcijskog registra,
sledea sekvencijalna adresa.
Signal za biranje adrese odreuje koja od ovih opcija se bira. Ovakvo reenje smanjuje
broj polja adrese na jedan. Primeujete, meutim, da se ovo polje adrese nee uvek
koristiti. Prema tome, u ovom sluaju postoji izvesna neefikasnost u kodiranju mikroinstrukcija.
Drugaiji pristup je obezbediti dva potpuno razliita formata mikroinstrukcija
(slika 20.8). Jedan bit naznaava koji format se koristi. U jednom formatu, preostali
bitovi se koriste za aktiviranje upravljakih signala. U drugom formatu, neki bitovi
upravljaju modulom logike grananja, a preostali bitovi obezbeuju adresu. Kada se
koristi prvi format, sledea adresa je ili sledea sekvencijalna adresa ili adresa izvedena iz instrukcijskog registra. Kada se koristi drugi format, utvruje se uslovno ili
Dekoder
adresa

Upravljaka
memorija

Upravljaki
bafer
registar

Upravljako Celo
polje
polje
grananja

Upravljaki
adresni registar

Polje
adrese

Logika
kola

Markeri

Logika
grananja

Multiplekser
Biranje
adrese

Instrukcijski
registar

Slika 20.8 Upravljaka logika grananja: promenljiv format

17.1 / Origin20-15

bezuslovno grananje. Jedan od nedostataka ovakvog reenja je da se za svaku mikroinstrukciju grananja potroi po itav ciklus. U drugim reenjima, generisanje adrese
deava se u toku istog ciklusa u kome se generie upravljaki signal, ime se smanjuje
pristupanje upravljakoj memoriji.
Upravo opisana reenja su opta. Svaka posebna implementacija obino obuhvata
varijaciju ili kombinaciju ovih tehnika.

Generisanje adrese
Razmotrili smo problem sekvenciranja mikroinstrukcija sa stanovita u kome se vodi
rauna o njihovom formatu i optim zahtevima za logika kola. Druga taka gledita
je razmotriti razliite naine na koje se sledea adresa moe izvesti ili izraunati.
U tabeli 20.3 navedene su razliite tehnike za generisanje adresa. One se mogu
podeliti u eksplicitne tehnike, u kojima je odreena adresa eksplicitno dostupna u
samoj mikroinstrukciji, i implicitne tehnike, koje zahtevaju dodatna logika kola za
generisanje adresa.
Tabela 20.3 Tehnike generisanja adrese mikroinstrukcije

Eksplicitne

Implicitne

Dva polja

Preslikavanje

Bezuslovno grananje

Sabiranje

Uslovno grananje

Rezidualno upravljanje

Do sada smo u sutini imali posla sa eksplicitnim tehnikama. U reenju sa poljem


sa dva polja za adrese, u svakoj mikroinstrukciji postoje dve alternativne adrese. Koristei jedno polje za adrese ili promenljiv format, mogue je implementirati razliite
instrukcije grananja. Instrukcija uslovnog grananja zavisi od informacija koje dobija
iz sledeih izvora:



markeri aritmetiko-logike jedinice,


deo operacionog koda ili adresnih polja mainske instrukcije,
delovi izabranog registra, kao to je bit predznaka,
bit stanja unutar upravljake jedinice.

Nekoliko implicitnih tehnika takoe se esto koristi. Jedna od njih, preslikavanje,


zahteva se praktino za sva reenja. Deo sa operacionim kodom mainske instrukcije mora da se preslika u adresu mikroinstrukcije. Ovo se dogaa samo jednom po
instrukcijskom ciklusu.
Uobiajena implicitna tehnika je ona koja obuhvata kombinovanje ili sabiranje
dva dela adrese da bi se formirala potpuna adresa. Ovakvo reenje je preduzeto za
IBM S/360 familiju procesora [TUCK67] i korieno je na veini S/370 modela. Mi
emo koristiti IBM 3033 kao primer.
Upravljaki adresni registar na IBM 3033 je 13 bitova dug i prikazan je na slici
20.9. Mogue je jasno izdvojiti dva dela adrese. Vodeih 8 bitova (00-07) normalno
se ne menja od jednog do drugog ciklusa mikroinstrukcije. Tokom izvravanja mikroinstrukcije, ovih 8 bitova kopira se direktno iz 8-bitnog polja mikroinstrukcije (polje

20-16poglavlje 20 / mikropragramiranje
BA) u vodeih 8 bitova upravljakog adresnog registra. Oni definiu celinu od 32
mikroinstrukcije u upravljakoj memoriji. Preostalih 5 bitova upravljakog adresnog
registra postavljeni su tako da odreuju adresu sledee mikroinstrukcije koju treba
doneti. Svaki od tih bitova odreen je 4-bitnim poljem (osim jednog koji je 7-bitno
polje) u aktuelnoj mikroinstrukciji; ovo polje utvruje uslov za postavljanje odgovarajueg bita. Na primer, bit u upravljakom adresnom registru moe biti postavljen na 1
ili 0 zavisno od toga da li je prilikom poslednje operacije aritmetiko-logike jedinice
bilo prenoenja.
00

07

08

09

10

BC(4)
BA(8)

BB(4)

11

12

BE(4)
BD(4)

BF(7)

Slika 20.9 Upravljaki adresni registar procesora IBM 3033

Poslednji pristup naveden u tabeli 20.3 nazvan je rezidualno upravljanje. Ovaj pristup obuhvata korienje adrese mikroinstrukcije koja je prethodno sauvana u privremenom skladitu unutar upravljake jedinice. Na primer, neki skup mikroinstrukcija
prilikom svog izvravanja koristi potprograme. Interni registar ili stek registara koristi
se za dranje adrese povratka. Primer ovakvog pristupa korien je na LSI-11, koji
sada istraujemo.

Sekvenciranje mikroinstrukcija LSI-11


LSI-11 je mikroraunarska verzija raunara PDP-11, u kome su glavne komponente
sistema smetene na jednoj ploi. LSI-11 je izveden korienjem mikroprogramirane
upravljake jedinice [SEBE76].
LSI-11 koristi 22-bitne mikroinstrukcije i upravljaku memoriju od 2K 22-bitnih
rei. Adresa sledee mikroinstrukcije odreuje se na jedan od pet naina:
sledea sekvencijalna adresa: ako nema drugih instrukcija, upravljaki adresni
registar upravljake jedinice poveava se za 1;
preslikavanje operacionog koda: na poetku svakog instrukcijskog ciklusa, operacioni kd odreuje adresu sledee mikroinstrukcije;
korienje potprograma: uskoro e biti objanjeno;
ispitivanje prekida: izvesne mikroinstrukcije utvruju testiranje u sluaju prekida; ukoliko se prekid desi, time se odreuje adresa sledee mikroinstrukcije;
grananje: koriste se mikroinstrukcije za uslovno i bezuslovno grananje.
Obezbeeno je izvravanje potprograma u jednom nivou. Za to je rezervisan
po jedan bit u svim mikroinstrukcijama. Kada se taj bit postavi, uitava se 11-bitni
povratni registar sa auriranim sadrajem upravljakog adresnog registra. Naredna

17.1 / Origin20-17

instrukcija, koja utvruje povratak, dovodi do toga da se upravljaki adresni registar


uita iz povratnog registra.
Povratak je jedan od oblika bezuslovne instrukcije grananja. Drugi oblik bezuslovnog grananja dovodi do toga da se bitovi upravljakog adresnog registra uitaju iz 11
bitova mikroinstrukcije. Instrukcija uslovnog grananja koristi 4-bitni test kd unutar
mikroinstrukcije. Ovaj kd utvruje ispitivanje razliitih uslovnih kodova aritmetiko-logike jedinice kako bi se donela odluka o grananju. Ukoliko uslov nije taan,
bira se sledea sekvencijalna adresa. Ukoliko je taan, 8 bitova manje vanosti upravljakog adresnog registra uitava se iz 8 bitova mikroinstrukcije. Time je omogueno
grananje unutar stranice memorije od 256 rei.
Kao to se vidi, procesor LSI-11 ima izuzetne mogunosti za sekvenciranje adresa
unutar upravljake jedinice. To mikroprogramerima doputa prilinu slobodu i moe
olakati posao mikroprogramiranja. Sa druge strane, ovaj pristup zahteva vie logikih
kola unutar upravljake jedinice u odnosu na one sa jednostavnijim mogunostima.

20.3 Izvravanje mikroinstrukcija


Ciklus mikroinstrukcije je osnovni dogaaj u mikroprogramiranom procesoru. Svaki
ciklus sastavljen je od dva dela: donoenja i izvravanja. Donoenje je odreeno generisanjem adrese mikroinstrukcije i to je obraeno u prethodnom odeljku. U ovom
odeljku bavimo se izvravanjem mikroinstrukcija.
Seate se da je posledica izvravanja mikroinstrukcije generisanje upravljakog
signala. Neki od tih signala upravljaju takama unutar procesora. Preostali signali
odlaze do spoljne upravljake magistrale ili do drugih spoljnih interfejsa. Uzgredna
funkcija je odreivanje adrese sledee mikroinstrukcije.
Prethodni opis navodi nas na organizaciju upravljake jedinice prikazane na slici
20.10. Na ovoj neznatno izmenjenoj verziji slike 20.4, posebna panja posveena je
temi ovog odeljka. Osnovni moduli na ovom crteu sada bi trebalo da budu jasni.
Sekvencijalni logiki modul sadri logika kola za obavljanje funkcija razmatranih u
prethodnom odeljku. On generie adresu sledee mikroinstrukcije, kao ulaze koristei
instrukcijski registar, markere aritmetiko-logike jedinice, upravljaki adresni registar
(za poveavanje) i upravljaki bafer registar. Poslednji od njih moe da obezbedi aktuelnu adresu, upravljake bitove ili oboje. Modulom upravlja generator takta kojim se
odreuje vremenska usklaenost ciklusa mikroinstrukcije.
Upravljaki logiki modul generie upravljake signale u funkciji nekih od bitova
u mikroinstrukciji. Sasvim je oigledno da format i sadraj mikroinstrukcije odreuje
sloenost upravljakog logikog modula.

Razvrstavanje mikroinstrukcija
Mikroinstrukcije se mogu razvrstati na vie naina. Razlike koje se izmeu njih najee prave u literaturi obuhvataju sledee:



vertikalne / horizontalne,
pakovane / nezapakovane,
hardversko / softversko mikroprogramiranje,
direktno / indirektno kodovanje.

20-18poglavlje 20 / mikropragramiranje
Instrukcijski
registar
Markeri
aritmetiko-logike
jedinice
Generator
takta

Sekevencijalno
logiko kolo

Upravljaki adresni registar

Upravljaka
memorija

Upravljaki bafer registar

Upravljaka
logika

Interni
upravljaki
signali

Eksterni
upravljaki
signali

Slika 20.10 Organizacija upravljake jedinice

Njihove osobine povezane su sa formatom mikroinstrukcija. Nijedan od ovih termina u literaturi se ne koristi na dosledan, precizan nain. Meutim, istraivanje ovih
parova slui da bi se objasnila razlika izmeu razliitih mogunosti dizajna mikroinstrukcija. U narednim pasusima prvo emo razmotriti kljuna pitanja dizajna koja ine
osnovu ovih parova karakteristika, a zatim emo razmotriti principe na kojima poivaju.
U prvobitnom Wilkesovom predlogu [WILK51], svaki bit mikroinstrukcije direktno je proizvodio ili upravljaki signal ili jedan bit sledee adrese. Videli smo, u prethodnom odeljku, da su mogue sloenije eme sekvenciranja adresa u kojima se koristi
manje bitova mikroinstrukcije. Slina vrsta nagodbe postoji i za deo mikroinstrukcije
koji se tie upravljakih signala. Kodiranjem upravljakih informacija, a zatim njihovim dekodiranjem da bi se proizveli upravljaki signali, mogue je utedeti na bitovima
upravljake rei.
Kako se ovo kodiranje moe uraditi? Da bismo odgovorili na to, uzmimo da postoji
K razliitih unutranjih i spoljnih upravljakih signala kojima upravlja upravljaka jedinica. U Wilkesovoj emi, u tu svrhu potrebno je rezervisati K bitova mikroinstrukcije.
Time je mogue dobiti svih 2K moguih kombinacija upravljakih signala koji se generiu

17.1 / Origin20-19

tokom bilo kog instrukcijskog ciklusa. Meutim, to moemo bolje da uradimo ukoliko
bismo zapazili da se nee koristiti sve mogue kombinacije. Primeri za to su:
dva izvora ne mogu biti elektronski prespojena na isto odredite (npr. C2 i C8
na slici 20.5);
jedan registar ne moe istovremeno da bude i izvor i odredite (npr. C5 i C12 na
slici 20.5);
aritmetiko-logikoj jedinici mogue je istovremeno preneti samo jedan oblik
upravljakih signala;
spoljnoj upravljakoj magistrali mogue je istovremeno preneti samo jedan
oblik upravljakih signala.
Stoga, za dati procesor, mogue je pobrojati sve mogue doputene kombinacije
upravljakih signala, ime se dobija neki broj Q mogunosti manji od 2K. One bi se
mogle kodirati sa log2 Q bitova, pri emu je (log2 Q) < K. Ovim bi se dobio najmanji broj moguih kodova kojim bi se ouvale sve doputene kombinacije upravljakih
signala. U praksi se ovakav nain kodiranja ne koristi, iz dva razloga:
teko je tako programirati, kao to je i nemogua ista kodirana (Wilkesova)
ema; ovo emo uskoro dodatno objasniti;
za to su potrebi sloeni, pa prema tome i spori, moduli upravljake logike.
Umesto toga, pravi se kompromis. Postoje dva naina da se to izvede:
za kodiranje moguih kombinacija koristi se vie bitova nego to je ba tano
neophodno;
nije mogue kodirati neke kombinacije koje su fiziki mogue.
Ovaj drugi kompromis utie na smanjivanje broja bitova. Konani rezultat je, meutim, da se ipak koristi vie od log2 Q bitova.
U sledeem pododeljku razmotriemo odreene tehnike za kodiranje. Preostali
deo ovog pododeljka posveen je posledicama kodiranja i razliitim terminima koji se
koriste da bi se ono opisalo.
Na osnovu reenog vidimo da deo mikroinstrukcije koji se koristi za upravljaki
signal pripada odreenom spektru. Sa jedne krajnje take postoji jedan bit za svaki
upravljaki signal, a sa druge krajnje take koristi se visokokodirani format. U tabeli
20.4 prikazano je da se i ostale karakteristike mikroprogramirane upravljake jedinice
takoe ire du odreenih spektara koji su, najveim delom, odreeni spektrom stepena kodiranja.
Drugi par u ovoj tabeli je manje oigledan. ista Wilkesova ema e zahtevati
najvie bitova. Takoe je oigledno da ovaj krajnji sluaj predstavlja najdetaljniji uvid u
hardver. Mikroprogramer moe da upravlja svim upravljakim signalima pojedinano.
Kodiranje se obavlja udruivanjem funkcija ili resursa, tako da mikroprogramer
posmatra procesor na viem nivou sa manje detalja. tavie, kodiranje je zamiljeno
tako da olaka mikroprogramiranje. Ponovimo jo jednom: jasno je da zadatak razumevanja i usklaivanja korienja svih upravljakih signala nije nimalo lak. Kao to
je napomenuto, jedna od posledica kodiranja je da se time onemoguava upotreba
izvesnih inae doputenih kombinacija.

20-20poglavlje 20 / mikropragramiranje
Tabela 20.4 Spektar mikroinstrukcija

Karakteristike
Nekodirane

Visokokodirane

Puno bitova

Malo bitova

Detaljni uvid u hardver

Opti uvid u hardver

Teke za programiranje

Lake za programiranje

Uporedo izvravanje potpuno iskorieno

Uporedo izvravanje nije potpuno iskorieno

Malo ili bez upravljake logike

Sloena upravljaka logika

Brzo izvravanje

Sporo izvravanje

Optimizovane performanse

Optimizovano programiranje

Terminologija
Nezapakovane

Pakovane

Horizontalne

Vertikalne

Hardverske

Softverske

U prethodnom pasusu razmatrana je izrada mikroinstrukcija sa take stanovita


mikroprogramera. Ali stepen do koga se kodiranje vri moe se takoe posmatrati sa njegovog uticaja na hardver. Sa istim nekodiranim formatom, potrebno je malo ili nimalo
logikih kola za dekoder; svaki bit generie poseban upravljaki signal. to se kompaktnije i optije eme kodiranja koriste, neophodna su sloenija logika kola za dekodiranje. To, sa druge stane, moe da utie na performanse. Potrebno je vie vremena za
prostiranje signala kroz elektronska kola sloenijih logikih upravljakih modula. Zato
izvravanje kodiranih mikroinstrukcija traje due od izvravanja nekodiranih.
Prema tome, sve karakteristike navedene u tabeli 20.4 pripadaju spektru strategija
za izradu mikroinstrukcija. Uopteno, izrada mikroinstrukcija blia levom kraju ovog
spektra namenjena je optimizovanju performansi upravljake jedinice. Izrade blie
desnom kraju vie su okrenute optimizovanju procesa mikroprogramiranja. I zaista,
skup mikroinstrukcija blizu desnog kraja spektra veoma lii na skup mainskih instrukcija. Dobar primer za ovo je dizajn procesora LSI-11, opisan kasnije u ovom odeljku.
Obino, kada je cilj pojednostaviti upotrebu upravljake jedinice, izrada mikroinstrukcija e biti blie levom kraju spektra. Dizajn procesora IBM 3033, o kome emo uskoro
govoriti, pripada toj vrsti. Kao to emo kasnije o tome priati, neki sistemi doputaju
razliitim korisnicima da prave razliite mikroprograme koristei iste mogunosti za
mikroprogramiranje. U ovom drugom sluaju, izrada mikroinstrukcija obino je blie
desnog kraja spektra.
Pozabaviemo se terminologijom koju smo ve uveli. U tabeli 20.4 naznaeno je
kakav je odnos tri od ovih parova termina u odnosu na spektar mikroinstrukcija. U
sutini, svi ovi parovi opisuju istu stvar, ali istiu razliite karakteristike izrade.
Stepen pakovanja odnosi se na stepen identifikacije izmeu datog zadatka upravljanja i tano odreenog bita mikroinstrukcije. to su bitovi pakovaniji, isti broj bitova
sadri vie informacija. Prema tome, pakovanje posredno znai kodiranje. Termini
horizontalno i vertikalno odnose se na relativnu irinu mikroinstrukcija. [SIEW82]
navodi nepisano pravilo po kome vertikalne mikroinstrukcije imaju duinu u opsegu

17.1 / Origin20-21

od 16 do 40 bitova, a da horizontalne mikroinstrukcije imaju duinu u opsegu od 40 do


100 bitova. Termini hardversko i softversko mikroprogramiranje koriste se kao naznaka
mere do koje su osnovni upravljaki signali i hardver bliski. Hardverski mikroprogrami
su obino nepromenljivi i namenjeni su ROM memoriji. Softverski mikroprogrami
lake se menjaju i pristupaniji su korisniku mikroprograma.
Preostali par termina, spomenut na poetku ovog pododeljka, odnosi se na direktno nasuprot indirektnom kodiranju, temi kojoj se sada vraamo.

Kodiranje mikroinstrukcija
U praksi se mikroprogramirane upravljake jedinice ne projektuju korienjem istih
nekodiranih ili horizontalnih mikroinstrukcija. Koristi se kodiranje, bar u nekoj meri,
kako bi se umanjila irina upravljake memorije i pojednostavio zadatak mikroprogramiranja.
Osnovna tehnika za kodiranje prikazana je na slici 20.11a. Mikroinstrukcije su
organizovane kao skup polja. Svako polje sadri kd koji, posle dekodiranja, aktivira
jedan ili vie upravljakih signala.

Polje

Polje

Polje

Logiko kolo
za dekodiranje

Logiko kolo
za dekodiranje

Logiko kolo
za dekodiranje

Upravljaki signali
(a) Direktno kodiranje

Polje

Polje

Polje

Logiko kolo
za dekodiranje

Logiko kolo
za dekodiranje

Logiko kolo
za dekodiranje

Logiko kolo
za dekodiranje

Upravljaki signali

(b) Indirektno kodiranje

Slika 20.11 Kodiranje mikroinstrukcija

20-22poglavlje 20 / mikropragramiranje
Razmotrimo ta moemo zakljuiti iz ove eme. Prilikom izvravanja odreene
mikroinstrukcije, sva polja se dekodiraju i generiu upravljake signale. Prema tome,
sa N polja odreeno je N istovremenih akcija. Posledica svake akcije je aktiviranje
jednog ili vie upravljakih signala. Uopteno, ali ne uvek, elja nam je da postignemo
da se jedan upravljaki signal aktivira najvie jednim poljem. Jasno je, meutim, da se
mora omoguiti aktiviranje bilo kog upravljakog signala bar jednim poljem.
Sada razmotrimo pojedina polja. Polje koje se sastoji od L bitova moe sadrati jedan
od 2L kodova, od kojih svaki moe biti kodiran u razliiti oblik upravljakog signala. Poto
se u jednom trenutku u jednom polju moe pojaviti samo jedan kd, ovi kodovi meusobno su iskljuivi i, prema tome, akcije koje oni izazivaju meusobno su iskljuive.
Projektovanje formata kodiranih mikroinstrukcija moe se sada izraziti jednostavnije:
organizovati ovaj format u nezavisna polja; to jest, svako polje opisuje skup
akcija (oblik upravljakih signala) tako da se akcije iz razliitih polja mogu
odvijati istovremeno;
definisati sva polja tako da ostale akcije koje odreeno polje utvruje budu
meusobno iskljuive; to jest, u istom trenutku mogua je samo jedna od
akcija utvrenih za dato polje.
Mogua su dva pristupa za organizovanje kodiranih mikroinstrukcija u polja:
funkcionalni i resursni. Metodom funkcionalnog kodiranja utvruju se funkcije unutar
procesora i poljima se namenjuju odreene funkcije. Na primer, ukoliko se vie izvora
moe koristiti za prenos podataka do akumulatora, u tu svrhu se namenjuje jedno
polje, pri emu svaki kd utvruje drugi izvor. Resursno kodovanje procesor posmatra
kao da se sastoji od skupa nezavisnih resursa i svakom od njih (npr. U/I modulu,
memoriji, aritmetiko-logikoj jedinici) posveuje po jedno polje.
Jo jedno razvrstavanje kodiranja je po tome da li je ono direktno ili indirektno
(slika 20.11b). Sa indirektnim kodiranjem, jedno polje se koristi za interpretaciju drugog polja. Na primer, uzmimo aritmetiko-logiku jedinicu koja moe da obavlja osam
razliitih aritmetikih operacija i osam razliitih operacija pomeraja. Jedan bit polja
mogao bi se koristiti kao naznaka da li se koristi aritmetika ili operacija pomeraja; tri
bita polja naznaavalo bi tu operaciju. Ova tehnika uopteno znai dva nivoa dekodiranja, ime se poveava kanjenje prostiranja.
Na slici 20.12 predstavljen je jednostavan primer ovih principa. Pretpostavimo
da imamo procesor sa jednim akumulatorom i nekoliko internih registara, kao to su
programski broja i privremeni registar za ulaz aritmetiko-logike jedinice. Na slici
20.12a prikazan je veoma vertikalan format. Prva 3 bita naznaavaju tip operacije,
sledea 3 kodiraju operaciju, a preostala 2 biraju interni registar. Na slici 20.12b dato
je reenje u kome se vie koristi horizontalni pristup mada se kodiranje i dalje koristi.
U ovom sluaju, razliite funkcije pojavljuju se u razliitim poljima.

LSI-11 izvravanje mikroinstrukcija


Procesor LSI-11 [SEBE76] je dobar primer reenja sa vertikalnim mikroinstrukcijama. Prvo emo razmotriti organizaciju upravljake jedinice, a zatim format mikroinstrukcija.

17.1 / Origin20-23
Jednostavan prenos registra
0 0 0 0 0 0

MDR

0 0 0 0 0 1

registar

0 0 0 0 1 0

MAR

Memorijske operacije

registar
MDR
registar

Biranje
registra

0 0 1 0 0 0

Uitavanje

0 0 1 0 0 1

Upisivanje

Specijalne sekvencijalne operacije


0 1 0 0 0 0

CSAR

dekodirani MDR

0 1 0 0 0 1

CSAR

konstanta (u sledeem bajtu)

0 1 0 0 1 0

Preskok

Operacije aritmetiko-logike jedinice


0 1 1 0 0 0

ACC

ACC registar

0 1 1 0 0 1

ACC

ACC registar

0 1 1 0 1 0

ACC

registar

0 1 1 0 1 1

registar

0 1 1 1 0 0

ACC

ACC
registar 1

Biranje
registra
(a) Format vertikalne mikroinstrukcije
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

Polje

Definicije polja
1 - prenos registra
2 - memorijske operacije
3 - sekvencijalne operacije

4 - operacije aritmetiko-logike jedinice


5 - biranje registra
6 - konstanta

(b) Format horizontalne mikroinstrukcije

Slika 20.12 Razliiti formati mikroinstrukcija za jednostavan procesor

20-24poglavlje 20 / mikropragramiranje
Organizacija upravljake jedinice procesora LSI-11 Procesor LSI-11 je prvi lan porodice PDP-11, koji je nuen, izveden na jednoj ploi. Ploa je sadrala tri LSI ipa,
internu magistralu poznatu kao mikroinstrukcijska magistrala (microinstruction bus,
MIB) i neto dodatnih logikih kola za meusobnu vezu.
Na slici 20.13 prikazana je, u pojednostavljenom obliku, organizacija procesora
LSI-11. Tri ipa su ipovi podataka, upravljanja i upravljake memorije. ip podataka
sadri 8-bitnu aritmetiko-logiku jedinicu, dvadeset est 8bitnih registara i skladite
za nekoliko uslovnih kodova. esnaest registara koriste se za implementiranje osam
16bitnih registara opte namene procesora PDP-11. Ostali obuhvataju re stanja programa, memorijski adresni registar (MAR) i memorijski bufer registar. Poto aritmetiko-logika jedinica radi samo sa 8 bitova istovremeno, neophodna su dva prolaza
kroz aritmetiko-logiku jedinicu da bi se implementirale 16-bitne aritmetike operacije procesora PDP-11. Time upravlja mikroprogram.
ip ili ipovi za upravljake memorije sadre 22-bita iroku upravljaku memoriju. Upravljaki ip sadri logika kola za sekvenciranje i izvravanje mikroinstrukcija. On obuhvata upravljaki adresni registar, upravljaki registar podataka i kopiju
mainskog instrukcijskog registra.

Upravljaka
memorija
11
22
22
18

Upravljaki
ip

16

Mikroinstrukcijska
magistrala

ip
podataka

16

Upravljanje
magistralom i
ostala logika
kola na ploi

Logika kola magistrale


LSI-11 sistemska
magistrala

Bez naznaenog broja, putanja


sa vie signala

Slika 20.13 Pojednostavljeni blok dijagram procesora LSI-11

17.1 / Origin20-25
Upravljaki registar podataka

Upravljaka
memorija

Upravljaki adresni registar

Upravljanje
sekvenciranjem
mikroprograma
Povratni registar

Translatorni
niz

Instrukcijski registar

INT

Slika 20.14 Organizacija upravljake jedinice procesora LSI-11

MIB povezuje sve komponente. Tokom donoenja mikroinstrukcije, upravljaki


ip generie 11-bitnu adresu na MIB. Pristupa se upravljakoj memoriji, ime se proizvodi 22-bitna mikroinstrukcija, koja se postavlja na MIB. esnaest bitova nieg reda
odlazi na ip podataka, dok 18 bitova vieg reda odlazi do upravljakog ipa. etiri
bita upravljaju specijalnim funkcijama ploe procesora.
Na slici 20.14 dat je i dalje uproen, ali mnogo detaljniji prikaz upravljake jedinice
procesora LSI-11: na ovoj slici nisu uzete u obzir granice pojedinanih ipova. ema
sekvenciranja adresa, opisana u odeljku 20.2, primenjuje se u dva modula. Sveukupno
upravljanje sekvencama obezbeuje upravljaki modul sekvenciranja mikroinstrukcija,
koji moe da povea adresni registar mikroinstrukcije i izvri bezuslovno grananje.
Drugi oblik izraunavanja adrese vri se pomou zasebnog translatornog niza. To je
kombinatorno elektronsko kolo koje generie adrese na osnovu mikroinstrukcija, mainskih instrukcija, programskog brojaa mikroinstrukcija i registra prekida.
Translatorni niz ulazi u igru pod sledeim okolnostima:

20-26poglavlje 20 / mikropragramiranje
za odreivanje poetka mikrorutine koristi se operacioni kd;
u odgovarajuim trenucima, testiraju se bitovi naina adresiranja mikroinstrukcije da bi se izvrilo odgovarajue adresiranje;
uslovi prekida periodino se testiraju;
procenjuju se uslovi grananja mikroinstrukcija.
Format mikroinstrukcija LSI-11 Upravljaka jedinica procesora LSI-11 koristi ekstremno vertikalan format mikroinstrukcija, irok samo 22 bita. Skup mikroinstrukcija
izuzetno lii na skup mainskih instrukcija koje implementira PDP-11. Ovakva izrada
predviena je za optimizovanje performansi upravljake jedinice unutar ogranienja
koja postavlja vertikalni format mikroinstrukcija, jednostavan za programiranje. U
tabeli 20.5 navedene su neke od mikroinstrukcija LSI-11.
Na slici 20.15 prikazan je format 22-bitne LSI-11 mikroinstrukcije. etiri bita
vieg reda upravljaju specijalnim funkcijama na procesorskoj ploi. Translatorni bit
omoguava translatornom nizu da proveri nereene prekide. Bit registra povratnog
uitavanja koristi se na kraju mikrorutine kako bi se adresa sledee mikroinstrukcije
uitala iz povratnog registra.
Tabela 20.5 Neke LSI-11 mikroinstrukcije

Aritmetike operacije

Opte operacije

Sabiranje rei (bajta, literala)

MOV re (bajt)

Testiranje rei (bajta, literala)

Skok

Poveanje rei (bajta) za 1

Povratak

Poveanje rei (bajta) za 2

Uslovni skok

Negacija rei (bajta)

Markeri postavljanja (resetovanja)

Uslovno poveanje (smanjenje) bajta

Uitavanje G nisko

Uslovno dodavanje rei (bajta) sa prenosom

Uslovna MOV re (bajt)

Uslovno sabiranje brojeva

Ulazno/izlazne operacije

Oduzimanje rei (bajta)

Ulaz rei (bajta)

Poreenje rei (bajta, literala)

Ulazna re (bajt) stanja

Smanjenje rei (bajta) za 1

Uitavanje
Upisivanje
Uitavanje (upisivanje) i poveanje rei (bajta) za 1

Logike operacije

Uitavanje (upisivanje) i poveanje rei (bajta) za 2

Logiko I rei (bajta, literala)

Potvrda uitavanja (upisivanja)

Testiranje rei (bajta)

Izlaz rei (bajta, statusa)

Logiko ILI rei (bajta)


Logiko iskljuivo ILI rei (bajta)
Bit brisanja rei (bajta)
Pomeraj rei (bajta) udesno (ulevo) sa (bez) prenosa
Komplementarna re (bajt)

17.1 / Origin20-27
4

16

Specijalne
funkcije

Kodirane mikrooperacije

Uitavanje povratnog registra


Translacija
(a) Format pune LSI-11 mikroinstrukcije
5

11

Operacioni kd

Adresa skoka

Format mikroinstrukcije bezuslovnog skoka


4

Operacioni
kd

Kd za
testiranje

Adresa skoka

Conditional jump microinstruction format


4

Operacioni
kd

Vrednost literala

A registar

Literal microinstruction format


8

Operacioni kd

B registar

A registar

Format mikroinstrukcije preskoka registra


(b) Format kodiranog dela LSI-11 mikroinstrukcije

Slika 20.15 Format mikroinstrukcija upravljake jedinice procesora LSI-11

Preostalih 16 bitova koristi se za visokokodirane mikrooperacije. Format veoma


lii na mainske instrukcije, sa operacionim kodom promenljive duine i jednim ili
vie operanda.

IBM 3033 izvravanje mikroinstrukcija


Standardna IBM 3033 upravljaka memorija sastoji se od 4K rei. Prva polovina njih
(0000-07FF) sadri 108bitne mikroinstrukcije, dok se ostatak (0800-0FFF) koristi za
skladitenje 126-bitnih mikroinstrukcija. Ovaj format opisan je na slici 20.16. Mada je
to najveim delom horizontalni format, kodiranje se koristi u prilinoj meri. Kljuna
polja ovog formata navedena su u tabeli 20.6.
Aritmetiko-logika jedinica radi na ulazima iz posebnih registara, nevidljivih
korisniku, A, B, C i D. Format mikroinstrukcije sadri polja za uitavanje tih registara
iz registara vidljivih korisniku, izvravanje funkcija aritmetiko-logike jedinice i odreivanje registara vidljivih korisniku za skladitenje rezultata. Takoe, postoje polja za
uitavanje i skladitenje podataka izmeu registara i memorije.
Sekvencijalni mehanizam procesora IBM 3033 razmatran je u odeljku 20.2.

BH

108

DA

BA

CA

DB

Adresa skladitenja

72

36

CC

BB

CD

125

CE

BD

AF

CF

Razno upravljanje

BE

Aritemtiki registri

AG

BF

AH

Slika 20.16 Format mikroinstrukcija upravljake jedinice procesora IBM 3033

DE

Sledea adresa

BC

AE

Lokalno
skladitenje

DD

AD

Kd za testiranje i proveru uslova

DC

Upravljanje pomerajem

CB

Registri A, B, C, D

AC

CG

AK

71

CH

107

Adresa skladitenja

BH

Registri pomeraja

AJ

AL

AB

AA

35

20-28poglavlje 20 / mikropragramiranje

17.1 / Origin20-29
Tabela 20.6 Polja za upravljanje mikroinstrukcijama IBM 3033

Polja za upravljanje aritmetiko-logikom jedinicom


AA(3)

Uitava A registar iz jednog od registara podataka.

AB(3)

Uitava B registar iz jednog od registara podataka.

AC(3)

Uitava C registar iz jednog od registara podataka.

AD(3)

Uitava D registar iz jednog od registara podataka.

AE(4)

Usmerava odreene bitove A registra u aritmetiko-logiku jedinicu.

AF(4)

Usmerava odreene bitove B registra u aritmetiko-logiku jedinicu.

AG(5)

Utvruje aritmetiku operaciju aritmetiko-logike jedinice na A izlazu.

AH(4)

Utvruje aritmetiku operaciju aritmetiko-logike jedinice na B izlazu.

AJ(1)

Utvruje D ili B izlaz za aritmetiko-logiku jedinicu na B strani.

AK(4)

Usmerava aritmetiki izlaz na registar pomeraja.

CA(3)

Uitava F registar.

CB(1)

Aktivira registar pomeraja.

CC(5)

Utvruje logike i funkciju prenosa.

CE(7)

Utvruje vrednost pomeraja.

Polja za sekvenciranje i grananje


AL(1)

Zavrava operaciju i izvrava grananje.

BA(8)

Postavlja bitove vieg reda (00-07) upravljakog adresnog registra.

BB(4)

Utvruje uslove za postavljanje bita 8 upravljakog adresnog registra.

BC(4)

Utvruje uslove za postavljanje bita 9 upravljakog adresnog registra.

BD(4)

Utvruje uslove za postavljanje bita 10 upravljakog adresnog registra.

BE(4)

Utvruje uslove za postavljanje bita 11 upravljakog adresnog registra.

BF(7)

Utvruje uslove za postavljanje bita 12 upravljakog adresnog registra.

20.4 TI 8800
Texas Instruments 8800 SDB (Software Development Board) je 32-bitna raunarska
kartica koja se moe mikroprogramirati. Ovaj sistem ima upravljaku memoriju u
koju je mogue upisivati, implementiranu korienjem RAM memorije umesto ROM
memorije. Takav sistem ne postie brzinu ili gustinu mikroinstrukcija kakvu imaju
sistemi sa mikroprogramiranom ROM memorijom. Meutim, veoma je koristan za
razvoj prototipova i obuku.
TI 8800 SDB sastoji se od sledeih komponenti (slika 20.17):
memorije mikrokoda,
mikrosekvencera,
32-bitne aritmetiko-logike jedinice,
procesora za rad sa celobrojnim vrednostima i vrednostima u pokretnom
zarezu,
lokalne memorije za podatke.
Dve magistrale povezuju unutranje komponente sistema. Magistrala DA obezbeuje podatke iz mikroinstrukcijskog polja podataka za aritmetiko-logiku jedinicu,

20-30poglavlje 20 / mikropragramiranje
procesor za obradu vrednosti u pokretnom zarezu ili mikrosekvencer. U poslednjem
sluaju, podaci se sastoje od adrese koja se koristi za instrukciju grananja. Ova magistrala takoe se moe koristiti da bi aritmetiko-logika jedinica ili mikrosekvencer
pruili podatke ostalim komponentama. Sistemska Y magistrala povezuje aritmetiko-logiku jedinicu i procesor za vrednosti u pokretnom zarezu sa lokalnom memorijom i spoljanjim modulima preko PC interfejsa.
15

Sledea adresa mikrokoda

Memorija mikrokoda
32K 128 bitova
128 Mikroinstrukcija

Upravljanje i
mikroinstrukcije

Mikroinstrukcijski
registar protone obrade
96

DA31-DA00
32

ACT8847 procesor za
celobrojne i vrednosti u
pokretnom zarezu

ACT8832
aritmetiko-logika
jedinica

ACT8818
mikrosekvencer

32
Sistemska Y magistrala
Lokalna memorija
za podatke
32K 32 bita

PC/AT
interfejs

16

Slika 20.17 Blok dijagram TI 8800

Karticu je mogue prikljuiti na PC kompatibilni raunar. Na matinom raunaru


vri se prevoenje i otklanjanje greaka u mikroprogramu.

Format mikroinstrukcija
Format mikroinstrukcija za TI 8800 sastoji se od 128 bitova podeljenih u 30 funkcionalnih polja, navedenih u tabeli 20.7. Svako polje sastoji se od jednog ili vie bitova, a
polja su grupisana u pet osnovnih kategorija:
upravljanje ploom,
8847 procesorski ip za celobrojne i vrednosti u pokretnom zarezu,

17.1 / Origin20-31
Tabela 20.7 Format mikroinstrukcija TI 8800

Broj
polja

Broj
bitova

Biranje ulaza uslovnog koda

Omoguavanje/onemoguavanje spoljanjeg U/I signala zahteva

Omoguavanje/onemoguavanje operacije itanja/upisivanja lokalne memorije podataka

Uitavati stanje / ne uitati stanje

Odreivanje jedinice koja pokree Y magistralu

Odreivanje jedinice koja pokree Y magistralu

Opis
Upravljanje ploom

8847 procesorski ip za celobrojne i vrednosti u pokretnom zarezu


7

Upravljanje C registrom: generisanjem takta, bez generisanja takta

Biranje najznaajnijih ili manje znaajnih bitova za Y magistralu

Izvor podatka C registra: aritmetiko-logika jedinica, multiplekser

10

Biranje IEEE ili FAST reima rada za aritmetiko-logiku jedinicu i multiplekser

11

Biranje izvora za operande podataka: RA registri, RB registri, P registar, 5 registar,


Cregistar

12

Upravljanje RB registrom: generisanje takta, bez generisanja takta

13

Upravljanje RA registrom: generisanje takta, bez generisanja takta

14

Potvrivanje izvora podataka

15

Omoguavanje/onemoguavanje registara protone obrade

16

11

8847 funkcije aritmetiko-logike jedinice

17

Omoguavanje/onemoguavanje upisivanja izlaza podataka u izabrani registar: znaajnija


polovina, manje znaajna polovina

18

Biranje izvora podataka datoteke registara: DA magistrala, DB magistrala, izlaz


aritmetiko-logike jedinice Y MUX, sistemska Y magistrala

8832 registarska aritmetiko-logika jedinica

19

Modifikator instrukcijskog pomeraja

20

Unoenje prenosa: prinudno, bez prinude

21

Postavljanje reima aritmetiko-logike jedinice: 32, 16 ili 8 bita

22

Biranje ulaza za multiplekser S: datoteka registra, DB magistrala, MQ registar

23

Biranje ulaza za multiplekser R: datoteka registra, DA magistrala

24

Biranje registra u datoteci C za upisivanje

25

Biranje registra u datoteci B za itanje

26

Biranje registra u datoteci A za upisivanje

27

Funkcije aritmetiko-logike jedinice

28

12

Upravljaki ulazni signali u 8818

8818 mikrosekvencer
Upisivo polje upravljanja skladitem podataka
29

16

Najznaajniji bitovi polja za podatke upisive upravljake memorije

30

16

Manje znaajniji bitovi polja za podatke upisive upravljake memorije

20-32poglavlje 20 / mikropragramiranje
8832 aritmetiko-logika jedinica,
8818 mikrosekvencer,
upisivo polje upravljanja skladitem podataka
Kao to je naznaeno na slici 20.17, 32 bita polja za podatke upisive upravljake
memorije unose se na DA magistralu kako bi se ponudili kao podaci za aritmetiko-logiku jedinicu, procesor za rad u pokretnom zarezu ili mikrosekvencer. Ostalih 96
bitova (polja 1 27) mikroinstrukcije su upravljaki signali koji se direktno unose u
odgovarajui modul. Zbog jednostavnosti, te veze nisu prikazane na slici 20.17.
Prvih est polja tiu se operacija koje se odnose na upravljanje itavom ploom, a
ne upravljanje pojedinim komponentama. Operacije upravljanja obuhvataju:
biranje uslovnih kodova za upravljanje sekvencerom; prvi bit polja 1 naznaava da li se marker uslova postavlja na 1 ili na 0, a preostalih 4 bitova naznaava koji se marker postavlja;
slanje U/I zahteva na PC/AT interfejs;
omoguavanje operacija itanja/upisivanja podataka lokalne memorije;
odreivanje jedinice koja pokree sistemsku Y magistralu; bira se jedan od
etiri ureaja prikljuenih na magistralu (slika 20.17).
Poslednjih 32 bita su polje podataka; ono sadri odreene informacije koje se
odnose na pojedine mikroinstrukcije.
Preostala polja mikroinstrukcije najbolje je razmotriti u kontekstu ureaja kojim
upravljaju. U preostalom delu ovog odeljka, pozabaviemo se mikrosekvencerom i
aritmetiko-logikom jedinicom. U radu jedinice za rad u pokretnom zarezu nema
novina, pa se stoga preskae.

Mikrosekvencer
Osnovna funkcija 8818 mikrosekvencera je generisanje adrese sledee mikroinstrukcije za mikroprogram. Ova 15bitna adresa dostavlja se memoriji mikrokoda (slika
20.17).
Sledea adresa moe se izabrati iz jednog od pet izvora:
1.
2.
3.

4.
5.

registar brojaa mikroprograma (MPC), koristi se za ponavljanje (ponovnu upotrebu iste adrese) i nastavak (poveanje adrese za 1) instrukcija;
stek, koji podrava pozivanje potprograma iz mikroprograma, a takoe i petlje sa
ponavljanjem i povratak iz prekida;
DRA i DRB portove, koji obezbeuju dve dodatne putanje iz spoljanjeg hardvera koji moe da generie adrese mikroprograma; ova dva porta povezana su
sa 16 najznaajnijih i manje znaajnih bitova DA magistrale, respektivno; oni
omoguavaju da mikrosekvencer dobije adresu sledee mikroinstrukcije iz polja
za podatke upisive upravljake memorije tekue instrukcije ili iz rezultata koji je
izraunala aritmetiko-logika jedinica;
brojaa registra RCA i RCB, koji se mogu koristiti za dodatno skladitenje adresa;
spoljanji ulaz u dvosmerni Y port za podrku spoljanjim prekidima.

17.1 / Origin20-33
DA31-DA16
(DRA)

DA15-DA00
(DRA)

MUX

Dvostruki
registri/brojai

Stek

B3-B0

Mikroprogramski
broja/
inkrementer

Povratni
registar
prekida

Izlaz Y
multipleksera

Adresa sledeeg
mikrokoda

Slika 20.18 TI 8818 mikrosekvencer

Na slici 20.18 dat je logiki blok dijagram mikrosekvencera 8818. Ureaj se sastoji
od sledeih osnovnih grupa:
16-bitni mikroprogramski broja (MPC) koji se sastoji od registra i inkrementera;
dva registarska brojaa, RCA i RCB, za brojanje petlji i iteracija, skladitenje
adrese grananja ili pokretanje spoljanjih ureaja;
65 rei u 16-bitnom steku, koje omoguavaju pozivanje potprograma iz mikroprograma i prekide;
povratni registar prekida i Y izlaz omoguavaju obradu prekida na nivou mikroinstrukcije;

20-34poglavlje 20 / mikropragramiranje
izlaz Y multipleksera pomou koga se sledea adresa moe izabrati iz MPC, RCA,
RCB, spoljanih magistrala DRA i DRB ili steka.
Registri/brojai Vrednosti u registrima RCA i RCB mogu se uitati sa DA magistrale,
ili iz aktuelne mikroinstrukcije ili iz izlaza aritmetiko-logike jedinice. Ove vrednosti
mogu se iskoristiti kao brojai za upravljanje tokom izvravanja i mogu se automatski
umanjivati kada im se pristupi. Ove vrednosti mogu se takoe koristiti kao adrese
mikroinstrukcija koje se dostavljaju Y izlazu multipleksera. Nezavisno upravljanje oba
registra tokom istog ciklusa mikroinstrukcije podrano je, sa izuzetkom da je nemogue istovremeno smanjiti vrednost oba registra.
Stek Stek omoguava vie nivoa ugneenih poziva ili prekida i moe se koristiti
kao podrka grananju ili prolasku kroz petlju. Upamtite da se ove operacije odnose
na upravljaku jedinicu, ne na celokupni procesor, i da se to odnosi na adrese onih
mikroinstrukcija koje se nalaze u upravljakoj memoriji.
Mogue je izvesti est operacija sa stekom:
1.
2.
3.
4.
5.
6.

ienje, koje postavlja pokaziva steka na nulu, praznei stek;


uklanjanje, koje smanjuje pokaziva steka;
stavljanje, kojim se sadraj MPC registra, povratnog registra prekida ili DRA magistrale stavlja u stek i poveava pokaziva steka;
itanje, koje adresu naznaenu pokazivaem itanja ini dostupnom izlazu Y
multipleksera;
dranje, kojim adresa pokazivaa steka ostaje nepromenjena;
uitavanje pokazivaa steka, koje unosi sedam manje znaajnih bitova DRA magistrale u pokaziva steka.

Upravljanje mikrosekvencerom Mikrosekvencerom se upravlja prvenstveno 12-bitnim


poljem aktuelne mikroinstrukcije, poljem 28 (tabela 20.7). Ovo polje sastoji se od
sledeih delova:
OSEL (1 bit): biranje izlaza; odreuje koja e vrednost biti postavljena na izlaz
multipleksera kojim se napaja DRA magistrala (gornji levi ugao na slici 20.18);
bira se izlaz koji dolazi iz ili steka ili iz RCA registra; DRA magistrala tada
slui kao ulaz bilo izlazu Y multipleksera, bilo RCA registru.
SELDR (1 bit): biranje DR magistrale; ukoliko je postavljeno na 1, taj bit bira
spoljanju DA sabirnicu kao izlaz za DRA/DRB magistrale; ukoliko je postavljeno na 0, bira izlaz DRA multipleksera za DRA magistralu (kojom upravlja
OSEL) i sadraj RCB registra za DRB magistralu.
ZEROIN (1 bit): koristi se da naznai uslovno grananje; ponaanje mikrosekvencera zavisie tada od uslovnog koda izabranog u polju 1 (tabela 20.7).
RC2-RC0 (3 bita): upravljanje registrom; ovi bitovi odreuju promenu sadraja
registara RCA i RCB. Sadraj svakog registra moe ostati isti, smanjiti se ili
uitati iz DRA/DRB magistrala.
S2-S0 (3 bita): upravljanje stekom; ovi bitovi odreuju koja se operacija sa
stekom izvrava.

17.1 / Origin20-35

MUX2-MUX0: upravljanje izlazom; ovi bitovi, zajedno sa uslovnim kodom


ukoliko se koristi, upravljaju izlazom Y multipleksera i prema tome odreuju
adresu sledee mikroinstrukcije; multiplekser moe svoj izlaz da bira iz steka,
DRA, DRB ili MPC.
Programer moe postaviti ove bitove pojedinano. Meutim, ovo se obino ne
radi. Umesto toga, programer koristi mnemonike koji su jednaki obliku bitova koji
je inae potreban. U tabeli 20.8 navedeno je 15 mnemonika za polje 28. Asembler
mikrokoda pretvara ih u odgovarajui oblik bitova.
Na primer, instrukcija INC88181 koristi se za biranje sledee mikroinstrukcije u
nizu ukoliko je trenutno izabrani uslovni kd jednak 1. Iz tabele 20.8 imamo:
INC88181 = 000000111110
to se direktno dekodira u:
OSEL = 0: bira RCA kao izlaz iz DRA izlaza multipleksera, u ovom sluaju
izbor je nebitan.
SELDR = 0: kao to je prethodno definisano; ponovo je nebitno za ovu instrukciju.
ZEROIN = 0: kombinovano sa vrednou za multiplekser, naznaava da ne
treba vriti grananje.
R = 000: zadrava trenutnu vrednost RA i RC.
S = 111: zadrava trenutno stanje steka.
MUX = 110: bira MPC kada je uslovni kd = 1, DRA kada je uslovni kd = 0.
Tabela 20.8 Bitovi mikroinstrukcije mikrosekvencera TI 8818

Mnemonik

Vrednost

Opis

RST8818

000000001100

Instrukcija za resetovanje

BRA88181

011000111000

Instrukcija za grananje na DRA

BRA88180

010000111110

Instrukcija za grananje na DRA

INC88181

000000111110

Instrukcija nastavka

INC88180

001000001000

Instrukcija nastavka

CAL88181

010000110000

Skok na potprogram na adresi odreenoj u DRA

CAL88180

010000101110

Skok na potprogram na adresi odreenoj u DRA

RET8818

000000011010

Povratak iz potprograma

PUSH8818

000000110111

Stavljanje povratne adrese prekida na stek

POP8818

100000010000

Povratak iz prekida

LOADDRA

000010111110

Uitavanje DRA brojaa sa DA magistrale

LOADDRB

000110111110

Uitavanje DRB brojaa sa DA magistrale

LOADDRAB

000110111100

Uitavanje DRA/DRB

DECRDRA

010001111100

Smanjivanje vrednosti DRA brojaa i grananje ukoliko nije nula

DECRDRB

010101111100

Smanjivanje vrednosti DRB brojaa i grananje ukoliko nije nula

20-36poglavlje 20 / mikropragramiranje
Aritmetiko-logika jedinica sa registrima
8832 je 32-bitna aritmetiko-logika jedinica sa 64 registra koji se mogu konfigurisati
tako da rade kao etiri 8-bitne aritmetiko-logike jedinice, dve 16-bitne aritmetiko-logike jedinice ili jedna 32-bitna aritmetiko-logika jedinica.
Aritmetiko-logikom jedinicom 8832 upravlja se pomou 39 bita koji sainjavaju
polja od 17 do 27 u mikroinstrukciji (tabela 20.7); oni se aritmetiko-logikoj jedinici
dostavljaju kao upravljaki signali. Pored toga, kao to je naznaeno na slici 20.7, aritmetiko-logika jedinica 8832 ima spoljne veze sa 32-bitnom DA magistralom i 32-bitnom sistemskom Y sabirnicom. Ulazi iz DA mogu se obezbediti istovremeno kao ulazni
podaci za datoteku registara od 64 rei i za modul aritmetiko-logike jedinice. Ulaz iz
sistemske Y magistrale obezbeen je modulu aritmetiko-logike jedinice. Rezultati aritmetiko-logike jedinice i operacija pomeraja su izlazi na DA magistralu ili sistemsku Y
magistralu. Rezultati se takoe mogu vratiti ponovo u internu datoteku registara.
Tri 6-bitna adresna porta omoguavaju da se istovremeno izvri donoenje dva
operanda i upisivanje operanda unutar datoteke registara. Registar pomeraja MQ
i registar MQ mogu se takoe konfigurisati tako da funkcioniu nezavisno kako bi
implementirale 8-bitne, 16-bitne i 32-bitne operacije pomeraja.
Polja 17 do 26 svih mikroinstrukcija upravljaju nainom na koji podaci teku unutar 8832 i izmeu 8832 i okoline. Polja su sledea:
20. omogueno upisivanje, ova dva bita utvruju da li se 32 bita, ili 16 najznaajnijih
bitova, ili 16 manje znaajnih bitova, upisuju ili ne u datoteku registara; odredini registar definisan je poljem 24;
18. biranje izvora podataka datoteke registara, ukoliko se deava upisivanje u datoteku registara, ova dva bita odreuju izvor: DA magistrala, DB magistrala, izlaz
aritmetiko-logike jedinice ili sistemska Y magistrala;
19. modifikator instrukcijskog pomeraja, utvruje opcije koje se odnose na dostavljanje krajnjih bitova za ispunu ili itanje bitova koji su pomereni tokom instrukcije
pomeraja;
20. unoenje, ovaj bit naznaava da li se bit unosi u aritmetiko-logiku jedinicu za
ovu operaciju;
21. postavljanje reima aritmetiko-logike jedinice, 8832 moe se konfigurisati da
radi kao jedna 32-bitna aritmetiko-logika jedinica, dve 16-bitne aritmetiko-logike jedinice ili etiri 8-bitne aritmetiko-logike jedinice;
22. S ulaz, ulazi modula aritmetiko-logike jedinice opremljeni su sa dva interna
multipleksera, obeleena kao S i R multiplekseri; ovo polje bira ulaz koji se
obezbeuje za S multiplekser: datoteka registra, DB magistrala ili MQ registar;
izvorni registar definisan je poljem 25;
23. R ulaz, biranje ulaza koji se obezbeuje R multiplekseru: datoteka registra ili
DA sabirnica;
24. odredini registar, adresa registar u datoteci registara koja se koristi za odredini
operand;
25. izvorni registar, adresa registra u datoteci registara koja se koristi za izvorni operand, obezbeen S multiplekserom;
26. izvorni registar, adresa registra u datoteci registara koja se koristi za izvorni operand, obezbeen R multiplekserom.

17.1 / Origin20-37

Konano, polje 27 je 8-bitni operacioni kd koji utvruje koju e aritmetiku ili


logiku funkciju izvriti aritmetiko-logika jedinica. U tabeli 20.9 navedene su razliite operacije koje mogu biti izvrene.
Tabela 20.9 Polje instrukcija (polje 27) aritmetiko-logike jedinice TI 8832

Grupa 1

Funkcija

ADD

H#01

R + S + Cn

SUBR

H#02

(NOT R) + S + Cn

SUBC

H#03

R = (NOT S) + Cn

INSC

H#04

S + Cn

INCNS

H#05

(NOT S) + Cn

INCR

H#06

R + Cn

INCNR

H#07

(NOT R) + Cn

XOR

H#09

R XOR S

AND

H#0A

A AND S

OR

H#0B

R OR S

NAND

H#0C

R NAND S

NOR

H#0D

R NOR S

H#0E

(NOT R) AND S

ANDNR

Grupa 2

Funkcija

SRA

H#00

Aritmetiki desni pomeraj jednostruke tanosti

SRAD

H#10

Aritmetiki desni pomeraj dvostruke tanosti

SRL

H#20

Logiki desni pomeraj jednostruke tanosti

SRLD

H#30

Logiki desni pomeraj dvostruke tanosti

SLA

H#40

Aritmetiki levi pomeraj jednostruke tanosti

SLAD

H#50

Aritmetiki levi pomeraj dvostruke tanosti

SLC

H#60

Kruni levi pomeraj jednostruke tanosti

SLCD

H#70

Kruni levi pomeraj dvostruke tanosti

SRC

H#80

Kruni desni pomeraj jednostruke tanosti

SRCD

H#90

Kruni desni pomeraj dvostruke tanosti

MQSRA

H#A0

Aritmetiki desni pomeraj MQ registra

MQSRL

H#B0

Logiki desni pomeraj MQ registra

MQSLL

H#C0

Logiki levi pomeraj MQ registra

MQSLC

H#D0

Kruni levi pomeraj MQ registra

LOADMQ

H#E0

Uitavanje MQ registra

PASS

H#F0

Prenoenje aritmetiko-logike jedinice na Y (bez pomeraja)

Grupa 3

Funkcija

SET1

H#08

Postavljanje bita 1

SET0

H#18

Postavljanje bita 0

TB1

H#28

Testiranje bita 1

TB0

H#38

Testiranje bita 0

20-38poglavlje 20 / mikropragramiranje
Tabela 20.9 Nastavak
ABS

H#48

Apsolutna vrednost

SMTC

H#58

Veliina predznaka / komplement dvojke

ADDI

H#68

Direktno sabiranje

SUBI

H#78

Direktno oduzimanje

BADD

H#88

Dodavanje R na S u bajtovima

BSUBS

H#98

Oduzimanje S od R u bajtovima

BSUBR

H#A8

Oduzimanje R od S u bajtovima

BINCS

H#B8

Poveanje S u bajtovima

BINCNS

H#C8

Poveanje negativnog S u bajtovima

BXOR

H#D8

Logiko iskljuivo ILI za R i S u bajtima

BAND

H#E8

Logiko I za R i S u bajtovima

BOR

H#F8

Logiko ILI za R i S u bajtovima

Grupa 4

Funkcija

CRC

H#00

Ciklina redundantnost znaka akumulatora

SEL

H#10

Izaberi S ili R

SNORM

H#20

Normalizacija jednostruke duine

DNORM

H#30

Normalizacija dvostruke duine

DIVRF

H#40

Deljenje sa fiksnim ostatkom

SDIVQF

H#50

Deljenje sa fiksnim kolinikom

SMULI

H#60

Iteracija mnoenja sa znakom

SMULT

H#70

Zavretak mnoenja sa znakom

SDIVIN

H#80

Inicijalizacija deljenja sa znakom

SDIVIS

H#90

Start deljenja sa znakom

SDIVI

H#A0

Iteracija deljenja sa znakom

UDIVIS

H#B0

Start deljenja bez znaka

UDIVI

H#C0

Iteracija deljenja bez znaka

UMULI

H#D0

Iteracija mnoenja bez znaka

SDIVIT

H#E0

Zavretak deljenja sa znakom

UDIVIT

H#F0

Zavretak deljenja bez znaka

Grupa 5

Funkcija

LOADFF

H#0F

Deljenje uitavanja / BCD multivibratori

CLR

H#1F

ienje

DUMPFF

H#5F

Deljenje izlaza / BCD multivibratori

BCDBIN

H#7F

BCD u binarnu vrednost

EX2BC

H#8F

Korekcija bajta viak 3

EX3C

H#9F

Korekcija rei viak 3

SDIVO

H#AF

Test prekoraenja deljenja sa znakom

BINEX3

H#DF

Binarno na viak 3

NOP32

H#FF

Bez operacije

17.1 / Origin20-39

Kao primer kodovanja kojim se utvruju polja 17 do 27, uzmimo instrukciju za dodavanje
sadraja registra 1 u registar 2 i smetanje rezultata u registar 3. Simbolika instrukcija je:
CONT11[17], WELH, SELRYFYMX, [24], R3, R2, R1, PASS + ADD
Asembler e ovo prevesti u odgovarajui raspored bitova. Pojedine komponente
instrukcije mogu se opisati na sledei nain:
CONT11 je osnovna NOP instrukcija;
polje [17] menja se u WELH (write enable, low and high omogueno upisivanje, nisko i visoko), tako da se 32-bitni registar upisuje u njega;
polje [18] menja se u SELRFYMX kako bi se izabrao povratni signal iz aritmetikog izlaza Y MUX aritmetiko-logike jedinice;
polje [24] menja se tako da registar R3 oznai za odredini registar;
polje [25] menja se tako da registar R2 oznai kao jedan od izvornih registara;
polje [26] menja se tako da registar R1 oznai kao jedan od izvornih registara;
polje [27] menja se tako da odredi korienje ADD operacije aritmetiko-logike jedinice; instrukcija pomeraja aritmetiko-logike jedinice je PASS, prema
tome, izlaz aritmetiko-logike jedinice se ne pomera registrom pomeraja.
Potrebno je ukazati na nekoliko stvari oko ove simbolike notacije. Nije neophodno dati brojeve polja za uzastopna polja. Drugim reima
CONT11[17], WELH, [18], SELRYFYMX
moe se napisati kao
CONT11[17], WELH, SELRYFYMX
poto se SELRFYMX nalazi u polju 18.
Instrukcije aritmetiko-logike jedinice iz grupe 1 u tabeli 20.9 moraju se uvek
koristiti zajedno sa onima iz grupe 2. Instrukcije aritmetiko-logike jedinice iz grupa
3 5 ne smeju se koristiti sa onima iz grupe 2.

20.5 Dodatna literatura


Postoji veliki broj knjiga posveenih mikroprogramiranju. Najsveobuhvatnija je,
moda, [LYNC93]. [SEGE91] upoznaje vas sa osnovama mikroprogramiranja i dizajna mikrokodovanih sistema projektovanjem 16-bitnog procesora od poetka do kraja.
[CART96] takoe vas upoznaje sa osnovnim konceptima koristei jednostavan procesor. [PARK89] i [TI90] nude detaljan opis TI 8800 raunarske kartice.
U [VASS03] razmatra se evolucija upotrebe mikroprogramiranja u dizajniranju
raunara i njegov trenutni status.
CART96 Carter, J. Microprocessor Architecture and Micropragramming, Upper Saddle River, NJ: Prentice
Hall, 1996.
LYNC93 Lynch, M. Microprogrammed State Machine Design. Boca Raton, FL: CRC Pres, 1993.
PARK89 Parker, A. , And Hamblen, J. An Introduction to Microprogramming with Excercises Designed for
the Texas Instruments SN74ACT8800 Software Development Board. Dallas, TX: Texas Instruments,
1989.

20-40poglavlje 20 / mikropragramiranje
SEGE91 Segee, B., and Field, J. Microprogramming and Computer Architecture. New York: Wiley, 1991.
TI90 Texas Instruments Inc. SN74ACT880 Family Data Manual. SCSS006, 1990.
VASS03 Vassiliadis, S.; Wong, S.; and Cotofana, S. Microcode Processing: Positioning and Directions.
IEEE Micro, July-August 2003.

Novija literatura
HILL64 Hill, R. Stored Logic Programming and Applications. Datamation, February 1964.
SEBE76 Sebern, M. A Minicomputer-compatible Microcomputer System: The DEC LSI-11. Proceedings
of the IEEE, June 1976.
SIEW82 Siewiorek, D.; Bell, C.; and Newell, A. Computer Structures: Principles and Examples. New
York: McGraw-Hill, 1982.
TUCK67 Tucker, S. Microprogram Control for System/360. IBM Systems Journal, No. 4, 1967.
WILK51 Wilkes, M. The Best Way to Design an Automatic Calculating Machine. Proceedings,
Manchester University Computer Inaugural Conference, July 1951.
WILK53 Wilkes, M., and Stringer, J. Microprogramming and the Design of the Control Circuits in an
Electronic Digital Computer. Proceedings of the Cambridge Philosophical Society, April 1953.
Reprinted in [SIEW82].

20.6 Kljuni pojmovi, kontrolna pitanja


i problemi
Kljuni pojmovi
upravljaka memorija
upravljaka re
firmver
hardversko mikroprogramiranje
horizontalna mikroinstrukcija

kodovanje mikroinstrukcije
izvrenje mikroinstrukcije
sekvenciranje mikroinstrukcije
mikroinstrukcije
mikroprogram

mikroprogramirana upravljaka
jedinica
softversko mikroprogramiranje
nezapakovana mikroinstrukcija
vertikalna mikroinstrukcija

Kontrolna pitanja
20.1 U emu je razlika izmeu oiene implementacije i mikroprogramirane implementacije
20.2
20.3
20.4
20.5
20.6
20.7
20.8
20.9
20.10

upravljake jedinice?
Kako se interpretira horizontalna mikroinstrukcija?
emu slui upravljaka memorija?
Koja je tipina sekvenca izvravanja horizontalne mikroinstrukcije?
U emu je razlika izmeu horizontalne i vertikalne mikroinstrukcije?
Koje osnovne zadatke obavlja mikroprogramirana upravljaka jedinica?
U emu je razlika izmeu zapakovanih i nezapakovanih mikroinstrukcija?
U emu je razlika izmeu hardverskog i softverskog mikroprogramiranja?
U emu je razlika izmeu funkcionalnog i resursnog kodovanja?
Navedite neke od uobiajenih primena mikroprogramiranja.

Problemi
20.1 Opiite implementaciju instrukcije mnoenja u hipotetikoj maini koju je napravio Wilkes.
Opiite je reima i koristei dijagram toka.

20.2 Pretpostavimo da neki skup mikroinstrukcija obuhvata mikroinstrukciju sa sledeim simbolikim oblikom:

17.1 / Origin20-41

IF (AC0 = 1) THEN CAR (C0-6) ELSE CAR (CAR) + 1

gde je AC0 bit predznaka akumulatora, a C0-6 su prvih sedam bitova mikroinstrukcije. Koristei ovu mikroinstrukciju, napiite mikroprogram koji implementira BRM (Branch Register
Minus) mainsku instrukciju koja vri grananje ukoliko je sadraj akumulatora AC negativan.
Pretpostavimo da bitovi C1 do Cn mikroinstrukcije odreuju paralelan skup mikrooperacija.
Izrazite program simboliki.

20.3 Jednostavan procesor ima etiri osnovne faze u svom instrukcijskom ciklusu: donoenje, in-

20.4

20.5
20.6
20.7
20.8

direktnu, izvrnu i prekida. Dva 1-bitna markera naznaavaju aktuelnu fazu u oienoj implementaciji.
a. Zato su ti markeri neophodni?
b. Zato oni nisu neophodni u mikroprogramiranoj upravljakoj jedinici?
Uzmimo, na primer, upravljaku jedinicu na slici 20.7. Pretpostavimo da je upravljaka memorija 24 bita irine. Upravljaki deo formata mikroinstrukcije podeljen je u dva polja. Polje
mikrooperacije od 13 bitova utvruje koja se mikrooperacija izvrava. Polje za biranje adrese
odreuje uslove, na osnovu markera, koji dovode do grananja. Postoji osam markera.
a. Koliko bitova postoji u polju za biranje adrese?
b. Koliko bitova postoji u polju adrese?
c. Koje je veliine upravljaka memorija?
Na koji nain se moe obaviti bezuslovno grananje u okolnostima opisanim u prethodnom
problemu? Na koji nain se grananje moe izbei, to jest, opiite mikroinstrukciju koja nee
odreivati bilo kakvo grananje, svejedno da li uslovno ili bezuslovno.
elimo da obezbedimo 8 upravljakih rei svim rutinama mainske instrukcije. Operacioni kd mainske instrukcije ima 5 bitova, a upravljaka memorija ima 1024 rei. Predloite
nain za preslikavanje iz instrukcijskog registra u upravljaki adresni registar.
Koristi se kodovani format mikroinstrukcija. Pokaite nain na koji se polje mikrooperacije
od 9 bitova moe podeliti na potpolja kojima se utvruje 46 razliitih akcija.
Procesor ima 16 registara, aritmetiko-logiku jedinicu sa 16 logikih i 16 aritmetikih funkcija i registar pomeraja sa 8 operacija, pri emu su svi meusobno povezani internom magistralom procesora. Projektujte format mikroinstrukcije tako da utvruje razliite mikrooperacije
ovog procesora.

Dodatak C
Ha tabele

William Stallings

Dopuna knjige
Organizacija i arhitektura raunara
Prevod devetog izdanja
CET 2012. god.
ISBN: 978-86-7991-361-6

Prevod sa engleskog: Dr Radomir Jankovi

CET

C - 2Dodatak C / Ha tabele
Razmotrite sledei problem. Skup N stavki is treba da se smesti u tabelu.
Svaka stavka se sastoji od oznake i neke dodatne informacije, koju moemo
da nazovemo vrednost stavke. eleli bismo da moemo da izvedemo izvestan broj jednostavnih operacija nad tabelom, kao to su umetanje, brisanje
i pronalaenje date stavke po oznaci.
Ako su oznake stavki numerike, u opsegu od 0 do M 1, onda bi jednostavno reenje bilo da se upotrebi tabela duine M. Stavka sa oznakom i
bi se ubacila u nabelu na lokaciji i. Sve dok su stavke fiksne duine, pretraivanje tabele je jednostavno i obuhvata indeksiranje u tabeli zasnovano na
stavci u tabeli, zato to je podrazumevano poloajem stavke. Takva tabela
se zove tabela sa direktnim pristupom.
Ako oznake nisu numerike, jo uvek se moe koristiti tabela sa direktnim pristupom. Neka su stavke A[1],A[N]. Svaka stavka A[i] sastoji se
od oznake, ili kljua, ki, i vrednosti vi. Definiimo funkciju preslikavanja
I(k) tako da I(k) uzima vrednost izmeu 1 i M za sve kljueve i I(ki) I(kj)
za svako i i j. U tom sluaju, tabela sa direktnim pristupom takoe moe da
se upotrebi, sa duinom tabele jednakom M.
Tekoa koja kod ovakvih ema javlja se ako je M mnogo vee od N. U
tom sluaju, proporcija neiskorienih ulaza u tabelu je velika, to predstavlja neefikasno iskorienje memorije. Alternativa bi bila da se koristi tabela
duine N i da se stavi N stavki (oznaka i vrednost) u N ulaza u tabelu. U
takvoj emi, koliina memorije je svedena na najmanju meru, ali dolazi do
preterane obrade prilikom pretraivanja tabele. Neke od mogunosti su:

Sekvencijalno pretraivanje: To je pristup sirovom snagom, koji


uzima dosta vremena za velike tabele.

Dodatak C / Ha tabeleC

-3

Tabela C.1 Prosena duina pretraivanja za jednu od N stavki u tabeli


duine M
Tehnika

Duina pretraivanja

Direktna

Sekvencijalna

M +1
2

Binarna

log2M

Linearno hairanje

2 N
M
2
N
2
M

Hairanje (prekoraenje sa
ulanavanjem)

1+

N 1
2M

Asocijativno pretraivanje: Sa odgovarajuim hardverom, svi elementi


u tabeli mogu da se pretrae istovremeno. Taj pristup nije opte
namene i ne moe da se primeni na sve tabele od interesa.
Binarno pretraivanje: Ako su oznake ili njihova numerika preslikavanja ureene po rastuem redosledu u tabeli, onda je binarno pretraivanje mnogo bre od sekvencijalnog (Tabela C.1) i ne zahteva
nikakav poseban hardver.
Binarno pretraivanje izgleda kao da mnogo obeava za traenje stavke
u tabeli. Glavni nedostatak tog metoda je to dodavanje novih stavki obino
nije jednostavan proces i zahteva preureivanje postojeih unosa. Zato se
binarno pretraivanje koristi samo za razumno statike tabele, iji se sadraj retko menja.
eleli bismo da izbegnemo kanjavanje u pogledu memorije kod jednostavnog direktnog pristupa, kao i kanjavanje u pogledu duine obrade
prethodno navedenih alternativa. Hairanje (engl. hashing) je najee korieni metod za postizanje takvog kompromisa. Hairanje, prvi put razvijeno 1950-ih godina, jednostavno je za implementaciju i ima dve prednosti.
Pre svega, ono e veinu stavki pronai u jednom pretraivanju, a pored
toga, ubacivanja i brisanja mogu da se obave bez dodatne sloenosti.

C - 4Dodatak C / Ha tabele
Funkcija hairanja moe da se definie kao to sledi. Pretpostavite da
do N stavki treba da se smesti u ha tabelu duine M, gde je M N, ali ne
mnogo vee od N. Da biste stavili stavku u tabelu:
I1. Pretvorite oznaku stavke u priblino sluajan broj n izmeu 0 i M 1.
Na primer, ako je oznaka numerika, omiljena funkcija preslikavanja je
da se oznaka podeli sa M i ostatak uzme za vrednost n.
I2. Upotrebite n kao indeks u ha tabeli.
a. Ako je odgovarajui ulaz u tabeli prazan, stavite stavku (oznaku i
vrednost) u taj ulaz.
b. Ako je ulaz ve zauzet, onda stavite stavku u podruje za prekoraenje, to e se objasniti dalje u tekstu.
Da biste u tabeli pronali stavku ija oznaka je poznata,
L1. Pretvorite oznaku stavke u priblino sluajan broj izmeu 0 i M 1,
koristei istu funkciju preslikavanja kao za umetanje.
L2. Upotrebite n kao indeks u ha tabeli.
a. Ako je odgovarajui ulaz u tabeli prazan, tada stavka nije bila prethodno smetena u tabeli.
b. Ako je ulaz ve zauzet i oznake se podudaraju, tada vrednost moe
da se uzme.
c. Ako je ulaz ve zauzet i oznake se ne podudaraju, tada se pretraivanje nastavalja u podruju za prekoraenje.
eme za hairanje se meusobno razlikuju po nainu na koji se radi sa
prekoraenjem. Tehnika koja se esto koristi u raunarima zove se linearno
hairanje. U tom pristupu, pravilo I2.b postaje
I2.b. A
ko je ulaz ve zauzet, postavite n = n + 1 (mod M) vratite se na korak
I2.a.
Pravilo L2.c se menja na odgovarajui nain.
Primer je dat na slici C.1a. U tom sluaju, oznake stavki koje treba da
se smetaju su numerike, a ha tabela ima osam pozicija (M = 8). Funkcija
preslikavanja je da se uzme ostatak posle deljenja sa 8. Na slici se pretpostavlja da su stavke smetene po rastuem numerikom redosledu, mada to

Dodatak C / Ha tabeleC

-5

Nije ba jednostavno da se odredi prosena duina pretraivanja u otvorenoj


nije neophodno. Prema tome, stavke 50 i 51 preslikavaju se na pozicije 2 i
3, respektivno,
kako su
iste grupisanja.
bile prazne,Do
onepribline
se tamo formule
umeu. Stavka
se i
ha tabeli,
zato to seajavlja
efekat
doli su74Schay
takoe preslikava na poziciju 2, ali kako ista nije prazna, proba se pozicija
3.[SCHA62]:
Ona je takoe zauzeta, pa se tako na kraju koristi pozicija 4.
Spruth

Nije ba jednostavno da se odredi prosena duina pretraivanja u otvo2r


=
renoj ha tabeli, Prosena
zato to seduina
javlja pretraivanja
efekat grupisanja.
Do pribline formule
2 2r
doli su Schay i Spruth [SCHA62]:
gde je r = N/M. Zapazite da je rezultat nezavisan od veliine
i da zavisi samo
2 tabele
r
Prosena duina pretraivanja =
2 2r
od toga koliko je ona popunjena. Rezultat koji iznenauje je da, ako je tabela 80%

gde je r = N/M. Zapazite da je rezultat nezavisan od veliine tabele i da


puna, prosena duina pretraivanja je i dalje oko 3.
zavisi samo od toga koliko je ona popunjena. Rezultat koji iznenauje je
da, ako je tabela 80% puna, prosena duina pretraivanja je i dalje oko 3.
vrednost (119)
vrednost (50)
vrednost (51)
vrednost (74)
vrednost (83)
vrednost (95)

(a) Linearno rehairanje


Ha tabela
Tabela prekoraenja
vrednost (50)

vrednost (74)
vrednost (83)
vrednost (119)
vrednost (139)

vrednost (51)

vrednost (94)
vrednost (95)

(b) Prekoraenje sa ulanavanjem

Slika C.1
C.1 Hairanje
Slika
Hairanje

C-6

C - 6Dodatak C / Ha tabele
ak i tako, duina pretraivanja od 3 moe da se smatra prevelikom.
Pored toga, linearna ha tabela ima i problem da nije lako brisati stavke.
Prekoraenje sa ulanavanje je privlaniji pristup koji obezbeuje kraa
pretraivanja (Tabela C.1) i doputa brisanja kao i dodavanja. Ta tehnika
je prikazana na slici C1b. U tom sluaju, postoji posebna tabela u koju
se unose ulazi prekoraenja. Ta tabela ukljuuje pokazivae koji prolaze
niz lanac ulaza pridruenih svakoj poziciji u ha tabeli. U tom sluaju,
prosena duina pretraivanja, pod pretpostavkom sluajno raspodeljenih
podataka, iznosi
Prosena duina pretraivanja = 1 +

N 1
2M

Za velike vrednosti N i M, ta vrednost se probliava 1,5 za N = M. Prema


tome, ta tehnika obezbeuje kompaktno skladite sa brzim pretraivanjem.

Referenca
SCHA62 Schay, G., and Spruth, W. Analysis of a File Addressing Method.
Communications of the ACM, August 1962.

Dodatak D
Strategije kea za rtvovane podatke

William Stallings
D.1 KE ZA RTVOVANE PODATKE . . . . . . . . . . . . . . . . . . . . . 2
D.2 SELEKTIVNI KE ZA RTVOVANE PODATKE . . . . . . . . . . . . 6
Dolazei blokovi iz memorije . . . . . . . . . . . . . . . . . . . . . . . . .7
Razmena izmeu direktno preslikanog kea i kea za rtvovane podatke . 7

Dopuna knjige
Organizacija i arhitektura raunara
Prevod devetog izdanja
CET 2012. god.
ISBN: 978-86-7991-361-6

Prevod sa engleskog: Dr Radomir Jankovi

CET

D - 2Dodatak D / Strategije kea za rtvovane podatke


U ovom dodatku razmatraju se dve strategije spomenute u poglavlju 4:
ke za rtvovane podatke i selektivni ke za rtvovane podatke.

D.1KE ZA RTVOVANE PODATKE


Setite se iz poglavlja 4 da je prednost tehnike direktnog preslikavanja u
tome to je ona jednostavna i jeftina za implementaciju. Njen glavni nedostatak je to postoji fiksirana lokacija u keu za svaki blok. Prema tome, ako
se dogodi da se program uzastopno poziva na rei iz dva razliita bloka koji
se preslikavaju u isti red, onda e se blokovi stalno razmenjivati u keu, a
verovatnoa pogotka e biti mala (pojava koja se u argonu naziva brbljanje, engl. trashing). Sa druge strane, kod potpuno asocijativnog preslikavanja, postoji fleksibilnost u tome koji blok da se zameni kada se novi blok
uitava u ke. Algoritmi zamene su projektovani tako da se maksimizira
verovatnoa pogotka. Glavni nedostatak asocijativnog preslikavanja su sloena elektronska kola koja su potrebna da bi se paralelno ispitivali tagovi
svih redova kea.
Pristup kea za rtvovane podatke, koji je predloio Jouppi [JOUP90],
jeste strategija smiljena da kombinuje kratko vreme za pogodak direktnog
preslikavanja, a da se ipak izbegne brbljanje. Da bi se taj cilj postigao, uz
direktno preslikani ke dodaje se mali asocijativni ke za rtvovane podatke.
Red koji se ukloni iz direktno preslikanog kea, privremeno se smeta u ke
za rtvovane podatke, u kome se dri mali broj redova koristei FIFO strategiju zamene (prvi unutra prvi napolje).
Jouppi je otkrio da 4-redni ke za rtvovane podatke otklanja 20% do
95% svih promaaja u direktno preslikanom keu.

promaaja u direktno preslikanom keu.


Dodatak D / Strategije kea za rtvovane podatkeD

-3

Sistem kea nivoa L1


Direktno
preslikani
ke

Procesor

Ke za
rtvovane
podatke

Ke
nivoa L2
(opcija)

Glavna
memorija

Adresa

Slika D.1 Pozicija kea za rtvovane podatke


Na slici D.1 prikazan je jednostavan blok dijagram koji ilustruje gde se
nalazi ke
za rtvovane
podatkekea
u ukupnoj
memorijskoj
hijerarhiji. Ke za
Slika
D.1 Pozicija
za rtvovane
podatke
rtvovane podatke moe da se smatra delom ke sistema nivoa L1. Sledei
nii nivo memorijske hijerarhije moe da bude ke memorija nivoa L2, ili
glavna memorija.
Na slici D.1 prikazan je jednostavan blok dijagram koji ilustruje gde se nalazi ke
Podaci ka
procesoru

za rtvovane
podatke u ukupnoj memorijskoj hijerarhiji. Ke za rtvovane podatke
Adresa iz
Ke nivoa L1

procesora

preslikan)
moe da se smatra delom (direktno
ke sistema
nivoa L1. Sledei nii nivo memorijske

hijerarhije moe da bude ke memorija nivoa L2, ili glavna memorija.


tagovi

tag
tag
tag
tag

podaci

Adresa ka
sledeem Podaci iz kea slekeu
deeg nieg nivoa
komparator
jedan red kea za podatke
komparator
jedan red kea za podatke
jedan red kea za podatke
komparator
jedan red kea za podatke
komparator

D3

LRU ulaz
Potpuno asocijativan
ke za rtvovane podatke
MRU ulaz

Ke za rtvovane podatke
(potpuno asocijativan)

Slika D.2 Organizacija kea za rtvovane podatke

Slika D.2 Organizacija kea za rtvovane podatke


Na slici D.2 daje se neto detaljniji uvid u organizaciju ke memorije za rtvovane

D - 4Dodatak D / Strategije kea za rtvovane podatke


Na slici D.2 daje se neto detaljniji uvid u organizaciju ke memorije
za rtvovane podatke. U Jouppijevom predlogu, ke za rtvovane podatke
sadri etiri reda podataka. Ke memorija nivoa L1 je direktno preslikana,
tako da se svaki red kea sastoji od bloka podataka iz memorije i uz to
malog taga (pogledajte slike 4.9 i 4.10 u knjizi). Ke za rtvovane podatke
je asocijativan, tako da svaki red sadri jedan blok podataka iz memorije i
uz to veliki tag (pogledajte slike 4.11 i 4.12). Da bi bilo jasnije, tag u keu za
rtvovane podatke prikazan je da se sastoji od taga duine jednake direktno preslikanom keu i komparatora. U stvari, ako pogledamo slike
dolazni
blok iz
memorije

Zamenjen
kompablok u
tag rator
memoriju

podaci

tagovi

podaci

Ke za rtvovane podatke
(potpuno asocijativan)

Ke nivoa L1
(direktno preslikan)

kea za
za rtvovane
podatke
SlikaSlika
D.3D.3
radradkea
rtvovane
podatke
4.10 i 4.12, komparator je ekvivalent polja za red u emi za direktno
4.10 andpreslikava-nje.
4.12, komparator
ekvivalent
poljazazartvovane
red u emi
za direktno
preslikavaTag i je
komparator
u keu
podatke
jedinstveno
identifikuju blok memorije, pa referenca memorije iz procesora moe da
nje. Tag izvri
i komparator
keu za rtvovane
jedinstveno
paralelno u
pretraiva-nje
svih ulazapodatke
u asocijativni
ke da bi identifikuju
se utvrdilo blok
da li je eljeni red prisutan.

memorije, paNareferenca
memorije iz procesora moe da izvri paralelno pretraivaslici D.3 prikazan je rad kea za rtvovane podatke. Podaci su ureeni na takav nain da isti red nije nikada istovremeno prisutan u keu

nje svih ulaza


u asocijativni ke da bi se utvrdilo da li je eljeni red prisutan.
nivoa L1 i u keu za rtvovane podatke. Prilikom upravljanja pomeranjem
podataka izmeu dva kea treba razmotriti sledea dva sluaja:

Na slici D.3 prikazan je rad kea za rtvovane podatke. Podaci su ureeni na


takav nain da isti red nije nikada istovremeno prisutan u keu nivoa L1 i u keu za
rtvovane podatke. Prilikom upravljanja pomeranjem podataka izmeu dva kea

Dodatak D / Strategije kea za rtvovane podatkeD

-5

Sluaj 1: Procesorova referenca memorije promauje i u keu nivoa L1 i u


keu za rtvovane podatke.
a. Traeni blok se donosi iz glavne memorije (ili iz kea L2 ako postoji) i smeta u ke L1.
b. Zamenjeni blok u glavnog keu pomera se u ke za rtvovane podatke. Nema algoritma zamene. Kod kea sa direktnim preslikavanjem, red koji treba da se zameni odreuje se jedinstveno.
c. Ke za rtvovane podatke moe da se posmatra kao FIFO red ili,
ekvivalentno, kao cirkularni bafer. Stavka koja je najdue bila u keu
za rtvovane podatke uklanja se u korist dolaznog reda. Zamenjeni
red se upisuje natrag u memoriju, ako mu je sadraj bio promenjen
(auriran).
Sluaj 2: Procesorova referenca memorije promauje direktno preslikani
ke, ali pogaa ke za rtvovane podatke.
a. Blok u keu za rtvovane podatke se pomie u direktno preslikani
ke.
b. Zamenjeni blok u glavnom keu se razmenjuje sa onim u keu za
rtvovane podatke.
Zapazite da sa FIFO disciplinom, ke za rtvovane podatke postie
pravo LRU ponaanje (LRU, engl. least recently used, najmanje skoro korieno). Svaka referenca na ke za rtvovane podatke izbacuje referencirani
blok iz tog kea; zato e LRU blok u keu za rtvovane podatke po definiciji
biti tamo najstariji.
Termin rtvovani se koristi iz sledeeg razloga: kada se novi blok
donese u ke L1, algoritam za zamenu bira red koji treba da se zameni. Taj
red je rtva algoritma za zamenu.

D.2 SELEKTIVNI KE ZA RTVOVANE PODATKE


U [STIL94] predlae se poboljanje eme kea za rtvovane podatke,
poznato kao selektivni ke za rtvovane podatke. U toj emi, dolazei blokovi u keu prvog nivoa selektivno se smetaju u glavni ke ili u ke za
rtvovane podatke, korienjem eme za predvianje, zasnovane na istoriji

D - 6Dodatak D / Strategije kea za rtvovane podatke


upotrebe. Pored toga, razmene blokova izmeu glavne memorije i kea za
rtvovane podatke se takoe izvode selektivno.

Dolazei blokovi iz memorije


U emi kea za rtvovane podatke, dolazei blokovi iz glavne memorije
(ili iz kea nivoa L2, ako postoji) uvek se smetaju u direktno preslikani ke,
kada se jedan od redova tog kea zamenjuje i pomera u ke za rtvovane
podatke koji, sa svoje strane, odbacuje jedan od svojih blokova (upisujui
ga natrag u glavnu memoriju, ako je to potrebno). ist efekat od toga je da
kada se novi blok donese u ke nivoa L1, blok u keu za rtvovane podatke
je taj koji se zamenjuje u ukupnom sistemu kea nivoa L1. Sa keom za
rtvovane podatke donosi se odluka da li da se zameni odgovarajui red
u direktno preslikanom keu (koji se onda pomera u ke za rtvovane
podatke), ili da se zameni red u keu za rtvovane podatke, birajui LRU
red za zamenu. Algoritam za predvianje se koristi da se odredi koji od dva
suprotstavljena reda e verovatnije biti referenciran u budunosti. Ako se
utvrdi da dolazei red ima veu verovatnou za to od suprotstavljenog reda
u glavnom keu, ovaj poslednji se pomera u ke za rtvovane podatke, a
novi red zauzima njegovo mesto u glavnom keu; u suprotnom, dolazei red
se usmerava u ke za rtvovane podatke

Razmena izmeu direktno preslikanog kea i kea za


rtvovane podatke
U emi kea za rtvovane podatke, ako doe do promaaja u direktno
preslikanom keu i pogotka u keu za rtvovane podatke, onda se vri razmena redova iz direktno preslikanog kea i kea za rtvovane podatke. Kod
selektivnog kea za rtvovane podatke, poziva se algoritam za predvianje da bi se odredilo da li blok kome se pristupilo u keu za rtvovane
podatke ima veu verovatnou da mu se pristupi u budunosti od bloka u
glavnom keu kome je suprotstavljen. Ako algoritam za predvianje odlui
da e blok u keu za rtvovane podatke verovatnije biti opet referenciran
od suprotstavljenog bloka u glavnom keu, dolazi do meusobne razmene
ta dva bloka; u suprotnom se meusobna razmena ne izvodi. U oba sluaja
blok u keu za rtvovane podatke se oznaava kao najskorije korien.

Dodatak D / Strategije kea za rtvovane podatkeD

-7

Algoritam za predvianje koji se koristi u emi selektivnog kea za


rtvovane podatke zove se dinamiki ekskluzivni algoritam i predloen je
u [MAFA92]. I u [MAFA92] i u [STIL94] nalaze se dobri opisi tog algoritma.

Reference
JOUP90 Jouppi, N. Improving Direct-Mapped Cache Performance by the
Addition of a Small Fully-Associative Cache and Prefetch Buffers.
Proceedings, 17th Annual International Symposium on Computer
Architecture, May 1990.
MCFA92 McFarling, S. Cache Replacement with Dynamic Exclusion.
Proceedings, 19th Annual International Symposium on Computer
Architecture, May 1992.
STIL94 Stiliadis, D., and Varma, A. Selective Victim Caching: A
Method to Improve the Performance of Direct-Mapped Caches.
Communications of the ACM, January 1987.

Dodatak E
Isprepletana memorija

William Stallings

Dopuna knjige
Organizacija i arhitektura raunara
Prevod devetog izdanja
CET 2012. god.
ISBN: 978-86-7991-361-6

Prevod sa engleskog: Dr Radomir Jankovi

CET

E - 2Dodatak E / Isprepletana memorija


Glavna memorija je u optem sluaju niz DRAM ipova. Izvestan broj
tih ipova formira grupu, sa portom za prenos podataka ka procesoru i od
njega, ili ka posrednikoj ke memoriji. Vie memorijskih grupa mogu da
se poveu zajedno kako bi formirali isprepletani memorijski sistem. Kako
svaka grupa moe da opslui zahtev, isprepletani memorijski sistem od
K grupa moe istovremeno da opslui K zahteva, to umnoava najveu
brzinu prenosa podataka jedne grupe faktorom K. U veini memorijskih
sistema, broj grupa je neki stepen od 2; to znai da je K = 2kza neki ceo
broj k.
Da biste stekli oseaj za upotrebu isprepletane memorije, zamislite
prost sistem koji se sastoji od dve DRAM memorijske grupe. Ako memorijski kontroler ne podrava preplitanje, onda se memorijske adrese dodeljuju
sekvencijalno prvoj grupi, praeno adresama u drugoj grupi. Na slici E.1a
prikazana je ta organizacija za dve grupe od N rei (pod pretpostavkom da
je adresiranje na nivou rei). U optem sluaju, memorijski kontroler e
izvoditi neprekidni pristup (jedna transakcija na magistrali kojom se ita
ili upisuje vie rei) da bi pomerao podatke izmeu kea i memorije. Na
primer, ke moe da ima duinu reda od etiri 32-bitne rei, pa se na taj
nain podaci prenose izmeu memorije i kea u blokovima od po etiri rei.
Sve rei u bloku dolaze iz jedne grupe DRAM memorije u neisprepleta-noj
memorijskoj organizaciji, pa je vreme potrebno da se kompletira prenos
linearna funkcija od broja rei koje se prenose. Na slici E.1b prikazano
je vremensko usklaivanje prenosa. Zapazite da je vreme potrebno da se
prenese svaka druga, trea i etvrt re kraa od vremena za prvu re. To je
zbog osobine savremenih DRAM memorija koja je poznata kao pristup u
reimu stranice. To je u stvari oblik keiranja na DRAM ipu [JACO08].
Ako memorijski kontroler podrava isprepletanu memoriju, onda su
memo-rijske adrese organizovane kao to je prikazano na slici E.1c. Adrese
memorijskih lokacija su naizmenine izmeu dve grupe. Ta konfiguracija
ubrzava neprekidni prenos etiri rei, kao to je prikazano na vremenskom
dijagramu na slici E.1d.

Dodatak E / Isprepletana memorijaE

Grupa 0

Grupa 1

1
2

N+1
N+2
2N - 2

N-2
N-1

2N - 1
bafer

Magistrala podataka
(a) Neisprepletana memorijska organizacija
Clock
Pristupi DRAM

1. re

2. re

3. re

4. re

(b) Vremensko usklaivanje neisprepletane memorije


Grupa 0

Grupa 1

0
2
4

1
3

2N - 4

2N - 3

2N - 2

2N - 1

bafer

bafer

Magistrala podataka
(c) Isprepletana memorijska organizacija
Clock
Pristupi DRAM

2. re

1. re
3. re

4. re

(d) Vremensko usklaivanje isprepletane memorije

Slika E.1 Primer 2-struke isprepletane memorije

Slika E.1 Primer 2-struke isprepletane memorije

-3

E - 4Dodatak E / Isprepletana memorija


Grupa 0

Grupa 1

Grupa 2

Grupa 2k-1

adresa rei

izbor
grupe

m bitova

k bitova
Magistrala podataka

Slika E.2 Isprepletana memorija


Zbog toga to su etiri rei neprekidnog prenosa raspodeljene na dve
Slika E.2 Isprepletana memorija
fizike grupe DRAM nenorija, pojedinani pristupi mogu da se preklope da
bi se sakrio deo, ili celina vremenskog kanjenja prilikom pristupa DRAM
memoriji.
Zbog toga to su etiri rei neprekidnog prenosa raspodeljene na dve fizike grupe
Na slici E.2 prikazana je organizacija isprepletane memorije sa 2k
DRAM nenorija, pojedinani pristupi mogu da se preklope da bi se sakrio deo, ili
DRAM grupa. Vie memorijskih grupa povezano je na jednu magistralu
celina(kanal)
vremenskog
kanjenjaseprilikom
pristupa
DRAM
memoriji.
i meusobno
razlikuju
pomou
k niih
(najmanje znaajnih)
bitova
adresne
magistrale.
dele magistralu
pomou
podelesavremena
Na slici
E.2 prikazana
je One
organizacija
isprepletane
memorije
2k DRAM
i preklapanja operacija. Ako je duina adrese m + k bitova, onda m viih
grupa. Vie memorijskih grupa povezano je na jednu magistralu (kanal) i
(najznaajnijih) bitova adrese biraju re unutar memorijske grupe, dok k
meusobno
se razlikuju
pomou
k niih
(najmanje znaajnih) bitova adresne
niih bitova
biraju datu
memorijsku
grupu.
magistrale.
One delememorijski
magistralu sistem
pomou
podele vremena
operacija.
Isprepletan
je najefikasniji
kadai jepreklapanja
broj memorijskih
grupa
jednak
brojumrei
redu kea,
ili njegovom
celobrojnom umnoku.
Ako je
duina
adrese
+ ku bitova,
onda
m viih (najznaajnijih)
bitova adrese
biraju re unutar memorijske grupe, dok k niih bitova biraju datu memorijsku
grupu.
Isprepletan memorijski sistem je najefikasniji kada je broj memorijskih
grupa jednak broju rei u redu kea, ili njegovom celobrojnom umnoku.

E-4

Dodatak F
Meunarodna referentna azbuka

William Stallings

Dopuna knjige
Organizacija i arhitektura raunara
Prevod devetog izdanja
CET 2012. god.
ISBN: 978-86-7991-361-6

Prevod sa engleskog: Dr Radomir Jankovi

CET

F - 2Dodatak F / Meunarodna referentna azbuka


Tekst ili niz znakova jeste dobro poznat primer podataka. Dok su za
ljudska bia tekstualni podaci najpogodniji, oni ne mogu da se, u obliku
znakova, lako memo-riu ili prenose u obradi podataka ili komunikacionim
sistemima. Takvi sistemi su projektovani za binarne podatke. Zato je smiljen izvestan broj kodova, pomou kojih se znakovi predstavljaju nizom
bitova. Morseov kd je moda bio jedan od prvih takvih poznatih primera.
Danas se kao tekstualni kd najee koristi Medjunarodna referentna
azbuka (IRA, engl. International Reference Alphabet).1 Svaki znak u tom
kodu se predstavlja pomou jedinstvenog 7-bitnog binarnog koda; prema
tome, tako moe da se predstavi 128 razliitih znakova. U tabeli F.1 navedene su sve vrednosti koda. U tabeli su bitovi svakog znaka oznaeni od
b7, koji je najznaajniji bit, do b1, koji je najmanje znaajan. Postoje dva
tipa znakova: oni koji se mogu tampati i upravljaki (Tabela F.2). Znakovi
za tampanje su slovni, brojani i specijalni, koji mogu da se tampaju na
papiru ili prikau na ekranu. Na primer, predstavljanje u bitovima znaka
K jeste b7b6b5b4b3b2b1 = 1001011. Neki od upravljakih znakova se bave
upravljanjem tampom ili prikazivanje znakova; primer je novi red. Drugi
upravljaki znakovi se staraju o komunikacionim procedurama.
Znakovi kodovani pomou IRA-e se skoro uvek smetaju i prenose koristei 8 bitova po znaku. Osmi bit je bit parnosti koji se koristi za otkrivanje greaka. Bit parnosti je najznaajniji bit I zato se oznaava sa b8. Taj
bit se postavlja tako da ukupan broj bitova 1 u svakoj grupi od 8 bude
uvek neparan (neparna parnost) ili uvek paran (parna parnost). Stoga, ako
greka u prenosu promeni jedan bit, ili bilo koji neparan broj bitova, takva
greka moe da se detektuje.

1IRA je definisana u ITU-T Preporuci T.50 i bila je prvobitno poznata kao International Alphabet Number 5 (IA5).
Nacionalna verzija USA se zove American Standard Code for Information Interchange (ASCII).

Dodatak F / Meunarodna referentna azbukaF

Table F.1

-3

The International Reference Alphabet (IRA)


Tabela F.1 Meunarodna referentna azbuka (IRA)

bitpozicija
positionbita
b7

0
b6

0
0

b5

0
0

0
1

1
1

1
0

1
0

1
1

1
0

b4 b3 b2 b1
0

NUL

DLE

SP

SOH

DC1

STX

DC2

"

ETX

DC3

EOT

DC4

ENQ

NAK

ACK

SYN

&

BEL

ETB

'

BS

CAN

HT

EM

LF

SUB

VT

ESC

FF

FS

<

CR

GS

SO

RS

>

SI

US

DEL

F - 4Dodatak F / Meunarodna referentna azbuka


Tabela F.2 IRA Upravljaki znakovi (strana 1 od 2)
Upravljanje formatom
BS (Backspace): Ukazuje na
kretanje mehanizma za tampanje
ili kursora displeja za jednu poziciju
unazad.
HT (Horizontal Tab): Ukazuje na
kretanje mehanizma za tampanje ili
kursora displeja unapred na sledeu
prethodno dodeljenu tab ioli
zaustavnu poziciju.
LF (Line Feed): Ukazuje na kretanje
mehanizma za tampanje ili kursora
displeja na poetnu poziciju novog
reda.

VT (Vertical Tab): Ukazuje na


kretanje mehanizma za tampanje ili
kursora displeja na sledei od niza
unapred dodeljenih redova.
FF (Form Feed): Ukazuje na
kretanje mehanizma za tampanje
ili kursora displeja ma poetnu
poziciju sledee stranice, formulara
ili ekrana.
CR (Carriage Return): Ukazuje na
kretanje mehanizma za tampanje ili
kursora displeja na poetnu poziciju
istog reda.

Upravljanje prenosom
SOH (Start of Heading): Koristi se
da ukae na poetak zaglavlja, koje
moe da sadri adresu ili informacije
za usmeravanje.
STX (Start of Text): Koristi se
da ukae na poetak teksta i tako
takoe ukae na kraj zaglavlja.
ETX (End of Text): koristi se da
zavri tekst koji je bio zapoet sa
STX.
EOT (End of Transmission):
Ukazuje na kraj prenosa, koji je
mogao da obuhvati vie tekstova
sa njihovim zaglavljima.
ENQ (Enquiry): Zahtev za odgovor
iz udaljene stanice. Moe da se
koristi kao zahtev KO SI TI stanici
da identifikuje samu sebe.

ACK (Acknowledge): Znak koji


predaje prijemni ureaj kao potvrdni
odziv predajniku. Koristi se kao
pozitivan odgovor na prozivne
poruke.
NAK (Negative Acknowledgment):
Znak koji predaje prijemni ureaj
kao negativni odziv predajniku.
Koristi se kao negativan odgovor na
prozivne poruke.
SYN (Synchronous/Idle): Koristi
ga sinhroni prenosni sistem da bi
postigao sinhronizaciju. Kada se
ne alju nikakvi podaci, sinhroni
prenosni sistem moe stalno da alje
unakove SYN.
ETB (End of Transmission Block):
Ukazuje na kraj bloka podataka za
komunikacione namene. Koristi
se za blokiranje podataka kada
struktura bloka nije obavezno u
povezana sa formatom obrade.

Dodatak F / Meunarodna referentna azbukaF

-5

Tabela F.2 IRA Upravljaki znakovi (strana 2 od 2)


Separator informacija
FS (Separator datoteke)
GS (Separator grupe)
RS (Separator zapisa)
US (Separator jedinice)

Separatori informacija koji se koriste


opciono, izuzev to je njihova
hijerarhija od FS (najukljuiviji) to
US (najmanje ukljuiv)
Razno

NUL (Null): Nema znaka. Koristi


se za ispunjavanje vremena ili
popunu prostora na traci kada nema
podataka.
BEL (Bell): koristi se kada je
potrebno privui panju oveka.
Moe da upravlja ureajima za
uzbunjivanje ili privlaenje panje.
SO (Shift Out): Ukazuje da kodne
kombinacije koje slede treba da se
tumae da su van standardnog skupa
znakova, dok se ne stigne do SI
znaka.
SI (Shift In): Ukazuje da kodne
kombinacije koje slede treba da se
tumae u skladu sa standardnim
skupom znakova.
DEL (Delete): Koristi se za
unitenje neeljenih znakova; na
primer pomou prepisivanja.
SP (Space): Znak koji se ne tampa i
koristi da razdvoji rei, ili da pomeri
mehanizam za tampanje ili kursor
displeja jednu poziciju unapred.

DLE (Data Link Escape): Znak koji


e promeniti znaenje jednog ili vie
susednih znakova koji slede. Moe
da omogui dodatna upravljanja, ili
da dozvoli slanje podataka znakova
koji imaju bilo kakvu kombinaciju
bitova.
DC1, DC2, DC3, DC4 (Device
Controls): Znakovi za upravljanje
Characters for the control of
pomonim ureajima ili specijalnim
svojstvima terminala.
CAN (Cancel): Ukazuje da znakovi
koji mu prethode treba da se
zanemare (obino zbog otkrivene
greke).
EM (End of Medium): Ukazuje
na fiziki kraj trake ili drugog
medijuma, ili na kraj zahtevanog ili
upotrebljenog dela medijuma.
SUB (Substitute): Zamena za znak
za koji se otkrilo da je pogrean ili
nevaei.
ESC (Escape): Znak namenjen da
obezbedi proirenje koda tako da
prui odreenom broju susednih
znakova koji slede neko drugo
znaenje.

Dodatak G
Algoritmi

za zamenu stranica virtuelne memorije

William Stallings
G.1 OPTIMALNO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
G2 NAJMANJE NEDAVNO KORIENO . . . . . . . . . . . . . . . . . . 4
G3 PRVI - UNUTRA - PRVI NAPOLJE . . . . . . . . . . . . . . . . . . . 5
G.2 DRUGI ALGORITMI ZA ZAMENU STRANICA . . . . . . . . . . . . 9
Sluajno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Najmanje esto korieno (LFU) . . . . . . . . . . . . . . . . . . . . . . 9
Najmanje nedavno korieno K (LRU K) . . . . . . . . . . . . . . . 10
Adaptivni ke za zamenu (ARC) . . . . . . . . . . . . . . . . . . . . . . 11
asovnik sa adaptivnom zamenom (CAR) . . . . . . . . . . . . . . . . 11

Dopuna knjige
Organizacija i arhitektura raunara
Prevod devetog izdanja
CET 2012. god.
ISBN: 978-86-7991-361-6
Prevod sa engleskog: Dr Radomir Jankovi

CET

G - 2Dodatak G / Algoritmi

za zamenu stranica virtuelne memorije

U ovom dodatku daje se pregled algoritama za zamenu stranica u sistemima virtuelne memorije. Detaljnije emo razmotriti etiri takva algoritma, a zatim ukratko predstaviti jo nekoliko njih. Da bi stekao oseaj za
takve algoritme, student moe da koristi dva simulatora zamene stranica
koji idu uz ovu knjigu.
U veini tekstova o operativnim sistemima, obrada materije koja se
odnosi na upravljanje memorijom postoji odeljak pod naslovom politika
zamene, koji se bavi izborom stranice u glavnoj memoriji koja treba da
se zameni kada u memoriju treba da se donese nova stranica. Tu temu je
ponekad teko obraditi, zato to ona obuhvata vie meusobno povezanih
koncepata:
Koliko okvira stranica treba da se dodeli svakom aktivnom procesu.
Da li skup stranica koje se razmatraju za zamenu treba da se ogranii
na one koje pripadaju procesu koji je prouzrokovao greku stranice,
ili bi trebalo da obuhvati sve okvire stranica u glavnoj memoriji.
Koja posebna stranica u okviru skupa koji se razmatra treba da bude
izabrana za zamenu.
Prva dva koncepta zovemo upravljanje rezidentnim skupom i rezerviemo termin politika zamene stranica za trei koncept koji se razmatra u
ovom dodatku.
Zamena stranica je verovatno jedna od najvie prouavanih oblasti
upravljanja memorijom. Kada su svi okviri u glavnoj memoriji zauzeti i
kada je potrebno da se donese nova stranica kako bi se zadovoljio uslov
greke stranice, politika zamene odreuje koja od stranica koje su trenutno
u memoriji treba da se zameni. Sve takve politike imaju za cilj da stranica
koja se zameni bude ba ona koja bi sa najmanjom verovatnoom bila referencirana u bliskoj budunosti.
Zbog principa lokalnosti, postoji esto velika korelacija izmeu istorije
nedavnog referenciranja i obrazaca referenciranja u bliskoj budunosti. U
skladu sa tim, veina politika zamene stranica pokuava da predvidi budue
ponaanje na osnovu prethodnog ponaanja sistema. Kompromis koji mora
da se uzme u obzir je da, to je politika zamene razraenija i savrenija, to
je potrebna vea hardverska i softverska podrka za njenu implementaciju.

Dodatak G / Algoritmi za zamenu stranica virtuelne memorijeG

-3

G.1OPTIMALNO
Optimalna politika bira za zamenu onu stranicu za koju je vreme sledee reference najdue. Moe da se pokae da takva politika ima za rezultat najmanji broj greaka stranica [BELA66]. Jasno je da je takvu politiku
nemogue implementirati, zato to bi ona zahtevala da operativni sistem
ima savreno saznanje o buduim dogaajima. Meutim, ona slui kao
standard u odnosu na koji se procenjuju algoritmi iz stvarnog sveta.
Na slici G.1 dat je primer optimalne politike. U tom primeru se pretpostavlja da postoji fiksna dodela okvira (fiksna veliina rezidentnog skupa)
za taj proces od tri okvira. Izvrenje procesa zahteva referencu na pet razliitih stranica. Tok adresa stranica koji se formira izvravanje programa je
232152453252
to znai da je prva referencirana stranica 2, druga referencirana stranica je
3 i tako dalje. Optimalna politika proizvodi tri greke stranice posle popunjavanja dodeljenih okvira.
Tok adresa
stranica
OPT

LRU

FIFO

ASOVNIK

F = greka stranice koja se pojavljuje posle poetne popune dodeljenih okvira

ponaanjealgoritama
algoritama za
etiri
stranice
SlikaSlika
G.1 G.1
ponaanje
zazamenu
zamenu
etiri
stranice

G.2 NAJMANJE NEDAVNO KORIENO


Politika najmanje nedavno korieno (LRU, engl. least recently used) menja onu

G - 4Dodatak G / Algoritmi

za zamenu stranica virtuelne memorije

G.2NAJMANJE NEDAVNO KORIENO


Politika najmanje nedavno korieno (LRU, engl. least recently used)
menja onu stranicu u memoriji koja u najduem vremenu nije bila referencirana. Po principu lokalnosti, to bi trebalo da bude ona stranica koja e u
bliskoj budunosti biti najmanje verovatno referencirana. U stvari, politika
LRU funkcionie skoro isto kao optimalna politika. Problem sa tim pristupom je u tekoi njegove implementacije. Jedno od reenja je da se svaka
stranica oznai vremenom njene poslednje reference; to bi moralo da se
radi sa svakom memorijskom referencom, bilo da je u pitanju instrukcija
ili podatak. ak i ako bi hardver podrao takvu emu, reijsko optereenje
sistema bilo bi strahovito. Kao alternativa, mogao bi se odravati stek referenci stranica, to je opet skupo.
Na slici G.1 prikazan je primer ponaanja LRU, koristei isti tok adresa
kao za primer upotrebe optimalne politike. U ovom primeru, postoje etiri
greke stranice.

G.3 PRVI-UNUTRA-PRVI-NAPOLJE
Politici prvi-unutra-prvi-napolje (FIFO) tretira okvire stranica dodeljene procesu kao cirkularni bafer, a stranice se uklanjaju u stilu krunog
dodeljivanja. Sve to se zahteva je pokaziva koji krui kroz okvire stranica
procesa. Iz tog razloga je FIFO jedna od politika zamene stranica koja se
najlake moe implementirati. Pored jednostavnosti, logika koja stoji iza
tog izbora je da se menja stranica koja je najdue bila u memoriji: stranica
koja je davno donesena u memoriju je sada ispala iz upotrebe. Takvo razmiljanje e u velikom broju slu;ajeva biti pogreno, zato to esto postoje
oblasti programa ili podataka koji se veoma mnogo koriste za vreme ivota
programa. Takve stranice e FIFO algoritam stalno ponovo donositi u
memoriju ili iz nje iznositi.
Nastavljajui sa naim primerom sa slike G.1, vidimo da politika FIFO
ima za rezultat est greaka stranica. Zapazite da LRU prepoznaje da su
stranice 2 i 5 referencirane vie puta od ostalih stranica, dok to politika
FIFO ne ini.

Dodatak G / Algoritmi za zamenu stranica virtuelne memorijeG

-5

Mada politika LRU funkcionie skoro isto tako dobro kao i optimalna
politika, nju je teko implementirati i namee dosta reijskog optereenja.
Sa druge strane, politika FIFO je veoma jednostavna za implementaciju, ali
funkcionie relativno slabo. Tokom godina, dizajneri operativnih sistema
su pokuavali sa izvesnim brojem drugih algoritama, kako bi se pribliili
performansama LRU, uz nametanje manjeg reijskog optereenja. Mnogi
od tih algoritama su varijante eme koja se zove politika asovnika.
Najjednostavniji oblik politike asovnika zahteva pridruivanje dodatnog bita svakom okviru, koji se zove bit upotrebe (engl. use bit). Kada
se stranica prvi put uita u okvir u memoriji, bit upotrebe za taj okvir se
postavi na 1. Kad god se stranica kasnije referencira (posle reference koja
je generisala greku stranice), njen bit upotrebe se postavlja na 1. Za algoritam zamene stranica, skup okvira koji su kandidati za zamenu (ovaj proces: lokalni opseg; celokupna glavna memorija: globalni opseg1) posmatra
se kao cirkularni bafer kome je pridruen pokaziva. Kada se stranica
zameni, pokaziva se postavi tako da pokazuje na okvir u baferu koji je
sledei u odnosu na onaj koji je upravo bio auriram. Kada doe vreme
da se zameni stranica, operativni sistem skenira bafer da bi pronaao okvir
iji je bit upotrebe postavljen na 0. Svaki put kada naie na okvir sa bitom
upotrebe koji je 1, on resetuje taj bit na nulu i nastavlja dalje. Ako bilo koji
ovir u baferu ima vrednost tog bita jednaku nuli na poetku tog procesa,
prvi takav okvir na koji se naie se bira za zamenu. Ako svi okviri imaju
bit upotrebe 1, onda e pokaziva napraviti jedan potpun krug kroz bafer
postavljajui sve bitove upotrebe na nulu i zaustaviti se na svojoj prvobitnoj poziciji, zamenjujui stranicu u tom okviru. Vidimo da je ta politika
slina FIFO izuzev to, u politici asovnika, algoritam prelazi preko svakog
okvira sa bitom upotrebe jednakim 1. Ovo se zove politika asovnika zato
to moemo da posmatramo okvire stranica kao da su rasporeeni u krugu.
Izvestan broj operativnih sistema koriste neku od varijacija ove jednostavne
politike asovnika (na primer Multics [CORB68]).
Na slici G.2 dat je primer mehanizma jednostavne politike asovnika.
Cirkularni bafer od n memorijskih okvira je na raspolaganju za zamenu
stranica. Ba pre zamene stranice iz bafera sa dolazeom stranicom 727,
pokaziva sledeeg okvira pokazuje na okvir 2 koji sadri stranicu 45. Sada
se izvrava politika asovnika. S obzirom da je bit upotrebe za stranicu 45
u okviru 2 jednak 1, ta stranica se ne zamenjuje. Umesto toga, bit upotrebe
1 Koncept opsega razmatra se u pododeljku Opseg zamene, dalje u tekstu.

G - 6Dodatak G / Algoritmi

za zamenu stranica virtuelne memorije

se postavlja na nulu, a pokaziva pomera unapred. Slino tome, stranica


191 u okviru 3 se ne zamenjuje; njen bit upotrebe se postavlja na nulu i
pokaziva pomera unapred. U sledeem okviru 4, bit upotrebe je postavljen
na 0. Zbog toga se stranica 556 zamenjuje stranicom 727. Za taj okvir, bit
upotrebe se postavlja na 1, a pokaziva pomera unapred na okvir 5, ime se
zavrava procedura zamene.

n -1

*
*
*

str.9 str.19
b.u.=1 b.u.=1
Pokaziva na
sledei okvir

str.1
b.u.=1

Prvi okvir u
cirkularnom baferu
od okvira koji su
kandidati za zamenu

str.45 2
b.u.=0

str.191
str.222
b.u.=0 3
8 b.u.=0
str.33
str.556
b.u.=1
b.u.=0
str.67 str.13
4
7
b.u.=1 b.u.=0
6

(a) Stanje bafera neposredno pre zamene stranice


n -1

str.9 str.19
b.u.=1 b.u.=1
*
*

str.1
b.u.=1

str.45 2
b.u.=0

str.191
str.222
b.u.=0 3
8 b.u.=0
str.33
str.727
b.u.=1
b.u.=1
str.67 str.13
4
7
b.u.=1 b.u.=0
6

(b) Stanje bafera neposredno posle sledee zamene stranice


Slika G.2 Primer funkcionisanja politike asovnika

Slika G.2 Primer funkcionisanja politike asovnika

Dodatak G / Algoritmi za zamenu stranica virtuelne memorijeG

-7

Greaka stranica na 1000 referenci

Ponaanje politike asovnika prikazano je na slici G.2. Prisustvo znaka


zvezdice (*) ukazuje na to da je odgovarajui bit upotrebe jednak 1, a strelica ukazuje na trenutnu poziciju pokazivaa. Zapazite da je politika asovnika u stanju da zatiti okvire 2 i 5 od zamene njihovog sadraja.
FIFO
ASOVNIK
LRU
OPT

Broj dodeljenih okvira

Slika G.3

Slika G.3 Poreenje algoritama za zamenu lokalne stranice


sa fiksiranim dodeljivanjem
Poreenje algoritama
za zamenu lokalne stranice

sa

fiksiranim
dodeljivanjem
Na slici G.3 prikazani
su rezultati
eksperimenta koji su objavljeni u
[BAER80], gde se porede etiri algoritma o kojima smo govorili; pretpostavljeno
je broj okvira
dodeljen
procesu fiksiran.
Na slici
G.3je da
prikazani
su stranica
rezultati
eksperimenta
koji Rezultati
su objavljeni
6
su zasnovani na izvrenju 0,25 10 referenci u programu u jeziku FOR[BAER80],TRAN,
gde sekoristei
poredeveliinu
etiri algoritma
kojima
smojegovorili;
pretpostavljeno
stranice od o256
rei. Baer
izvrio eksperiment
dodeljivanjem
10, 12 i 14
okvira. Razlike
izmeu
etiri politike
su
da je broj saokvira
stranica6, 8,
dodeljen
procesu
fiksiran.
Rezultati
su zasnovani
n
najvee na malim dodeljivanjima, gde je bilo loije od optimalnog za faktor
6
izvrenju 0,25
210puta.
referenci
u programu
u efikasno,
jeziku FORTRAN,
vie od
Da bi sistem
funkcionisao
eleli bismo dakoristei
budemo veliin
desno od kolena krive (gde je malo greaka stranica) dok u isto vreme odrstranice od 256 rei. Baer je izvrio eksperiment sa dodeljivanjem 6, 8, 10, 12 i 1
avamo malo dodeljivanje okvira (levo od kolena krive). Ta dva okgranienja ukazuju
da bietiri
poeljan
nain rada
bio na kolenu
krive. dodeljivanjima, gde
okvira. Razlike
izmeu
politike
su najvee
na malim

identinizarezultati
[FINK88],
opetsistem
pokazujui
bilo loije odGotovo
optimalnog
faktorobjavljeni
vie odsu2u puta.
Da bi
funkcionisa
maksimalno rasipanje od oko 2 puta. Finkelov pristup je bio da simu-

efikasno, eleli
bismo
da budemo
od kolena
(gde
je malo
lira efekte
razliitih
politika nadesno
sintetizovanom
nizukrive
referenci
stranica
od greak
10000 referenci, odabranih iz virtuelnog prostora od 100 stranica. Da bi

stranica) dok
u isto vreme odravamo malo dodeljivanje okvira (levo od kolen
se aproksimirali efekti principa lokalnosti, uzeta je eksponencijalna raspokrive). Ta dva okgranienja ukazuju da bi poeljan nain rada bio na kolenu krive.

Gotovo identini rezultati objavljeni su u [FINK88], opet pokazuju

G - 8Dodatak G / Algoritmi

za zamenu stranica virtuelne memorije

dela verovatnoe referenciranja pojedinane stranice. Finkel zapaa da bi


neko mogao biti naveden da zakljui kako se ne isplati mnogo razraivati
algoritme zamene stranica, s obzirom da se radi samo o faktoru 2. Ali on
primeuje da e ta razlika imati znaajan efekat na zahteve za memorijom (da bi se izbeglo degradiranje performanse operativnog sistema) ili
na performansu operativnog sistema (da bi se izbeglo poveavanje glavne
memorije).
Algoritam asovnika je takoe poreen sa drugim algoritmima kada se
koriste promenljiva dodeljivanja i globalni ili lokalni opseg zamene (pogledajte diskusiju o politici zamene koja sledi) [CARR81, CARR84]. Za algoritam asovnika se otkrilo da je po performansi blizak LRU.

G.4 DRUGI ALGORITMI ZA ZAMENU STRANICA


Sada emo ukratko predstaviti neke od alternativnih algoritama za
zamenu stranica.

Sluajno
Taj algoritam uzima na sluaj stranicu za zamenu. Moemo o njemu da
razmiljamo kao o minimalnom zahtevu. Svaki algoritam koji ne uspe da
donese poboljanje u odnosu na sluajnu zamenu je sasvim jasno nepoeljan.

Najmanje esto korieno (LFU)


Taj algoritam zamenjuje onu stranicu koja je bila najmanje esto koriena. Rezon koji stoji iza ovog pristupa je slian onom kod algoritma LRU.
Reijsko dodatno optereenje je to treba da se vodi evidencija o broju korienja za svaku stranicu. Jedan od nedostataka je u tome to e nedavno
uitana stranica u optem sluaju imati malu vrednost brojaa upotreba i
moe da bude zamenjena u sluajevima kada to ba i nije preporuljivo.
Nain da se to izbegne je da se sprei zamena stranica koje su uitane unutar poslednjeg datog vremenskog intervala.

Dodatak G / Algoritmi za zamenu stranica virtuelne memorijeG

-9

Najmanje nedavno korieno - K (LRU-K)


Algoritam LRU-K kombinuje neka od svojstava LRU i LFU. Pamti se
istorija referenciranja poslednjih K referenci za svaku stranicu. Stranica
koja treba da se zameni je ona stranica ije K rastojanje unazad je rastojanje (ukupan broj referenci stranice) unazad do K-te najskorije reference te
stranice. Stranica sa najveim K rastojanjem unazad je ona koja se bira za
zamenu. To znai da algoritam odreuje K-tu najskoriju referencu za svaku
stranicu u glavnoj memoriji. Stranica sa najstarijom takvom referencom
bira se za zamenu. Zapazite da se LRU-1 svodi na LRU. Algoritam LRU-K,
za razliku od LRU, uzima u obzir uestalost upotrebe. Meutim, LRU-K
se takoe razlikuje od LFU. Glavna razlika je ta to LRU-K ima ugraen
pojam starenja, razmatrajui samo poslednjih K referenci na stranicu, dok
algoritam LFU nema nikakav nain da odvoji uestalost nedavnih od prolih referenci stranice.

Adaptivni ke za zamenu (ARC)


ARC je drugaiji pokuaj da se kombinuju koncept nedavnosti LRU i
koncept uestalosti LFU. To je relativno sloen algoritam. Za potrebe ovog
dodatka, navodimo saetak dat u [MEGI03]. Za vie detalja, pogledajte u
[MEGI04].
Pretpostavite da ke moe da dri c stranica. Rasporeiva ARC odrava direktorijum kea koji sadri 2c stranica, od kojih c stranica u keu i c
istorijskih stranica. Direktorijum ARC kea, koji se zove DBL, odrava dve
liste: L1 i L2. Prva lista sadri stranice koje su nedavno viene samo jednom, dok L2 sadri stranice koje su nedavno viene bar dva puta. Politika
zamene za upravljanje DBL je sledea: menja se LRU stranica u L1 ako L1
sadri tano c stranica; u suprotnom, menja seLRU stranica u L2.
Politika ARC gradi DBL paljivim biranjem c stranica od 2c stranica
u DBL. Osnovna zamisao je da se podeli L1 u gornjih T1 i donjih B1 stranica i da se podeli L2 u gornjih T2 i donjih B2 stranica. Stranice u T1 su
nedavnije od onih u B1; slino je i za T2 i B2. Algoritam ukljuuje ciljnu
veliinu_T1 za listu T1. Politika zamene je jednostavna: menja se LRU stranica u T1 ako T1 sadi najmanje ciljnu veliinu_T1 stranica; u suprotnom,
menja se LRU stranica u T2.

G - 10Dodatak G / Algoritmi

za zamenu stranica virtuelne memorije

Adaptivnost proizilazi iz injenice da se ciljna veliina_T1 stalno menja


kao odziv na posmatrano optereenje. Pravilo adaptivnosti je takoe jednostavno: ciljna veliina_T1 se poveava ako se opazi pogodak u istoriji B1;
slino tome, ciljna veliina_T1 se smanjuje ako se opazi pogodak u istoriji B2.

asovnik sa adaptivnom zamenom (CAR)


CAR je usavravanje algoritma asovnika, koristei principe ARC
[BANS04]. Osnovna zamisao je da se odravaju dva asovnika, recimo T1
i T2, gde T1 sadri stranice sa nedavnou ili sa kratkoronom upotrebom, dok T2 sadri stranice sa uestalou ili sa dugoronom upotrebom. Nove stranice se prvo umeu u T1, a kasnije u T2 kada prou izvestan
test dugorone upotrebe. Korienjem precizne istorije nedavno izbaenih
stranica iz T1 i T2, algoritam adaptivno odreuje veliine tih lista, na nain
upravljanja pomou podataka.

Reference
BANS04 Bansal, S., and Dharmendra, S. CAR: Clock with Adaptive
Replacement. Proceedings, USENIX File and Storage Technologies
(FAST), 2004.
MEGI03 Megiddo, N., and Dharmendra, S. One up on LRU. ;login,
August 2003.
MEGI04 Megiddo, N., and Dharmendra, S. Outperforming LRU with an
Adaptive Replacement Cache Algorithm. IEEE Computer Magazine,
April 2004.

Dodatak H
Rekurzivne procedure

William Stallings
H.1 REKURZIJA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
H.2 PREDSTAVLJANJE STABLA AKTIVACIJE . . . . . . . . . . . . . . . 4
Fibonaccijevi brojevi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Ackermannova funkcija . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
H.3 IMPLEMENTACIJA STEKA . . . . . . . . . . . . . . . . . . . . . . . 11
H.4 REKURZIJA I ITERACIJA . . . . . . . . . . . . . . . . . . . . . . . . 15

Dopuna knjige
Organizacija i arhitektura raunara
Prevod devetog izdanja
CET 2012. god.
ISBN: 978-86-7991-361-6

Prevod sa engleskog: Dr Radomir Jankovi

CET

H - 2Dodatak H / Rekurzivne procedure


Rekurzija je znaajan koncept koji se javlja u mnogim oblastima raunarskih nauka. Daniel McCracken, poznati profesor raunarstva, formulisao je to na sledei nain [MCCR87]:
Da li je rekurzija napredna tema?
Apsolutno ne. Rekurzija je fundamentalna u raunarskim naukama,
bilo da se odnosi na matematiki koncept, tehniku programiranja,
nain da se izrazi algoritam, ili kao pristup reavanju problema.
Rekurzija se navodi kao zahtevana tema, kako na kursu osnova programiranja, tako i na kursu o diskretnim strukturama, koji se preporuuju u
Computer Curricula 2001, od strane zdruenog tima za studijske programe
iz raunarstva organizacija IEEE Computer Society i ACM, za program
osnovnih studija iz raunarskih nauka.
Mi smo ukratko spomenuli rekurzivne procedure u poglavlju 12, a koncept razradjujemo u ovom dodatku. Mnogi studenti smatraju da je teko
ovladati konceptom rekurzije. Zbog toga se u ovom dodatku daje niz primera i koriste razne metode opisivanja i predstavljanja.

H.1 REKURZIJA
Jedan od klasinih primera rekurzije je funkcija faktorijel. Faktorijel
pozitivnog celog broja se rauna kao taj ceo broj pomnoen svim celim
brojevima manjim od njega, ukljuujui i 1. Na primer, faktorijel(5) je isto
to i 54321, a faktorijel(3) je 321. Sad razmotrite sledee: pretpostavite da elite da izraunate faktorijel od 27, a da ve znate vrednost faktorijel(26). Tada ne morate da raunate 2726251. Umesto toga, treba
samo da izraunate 27 faktorijel(26). Slino tome, ako znate vrednost
faktorijel(53), tada se vrednost faktorijel(54) rauna kao faktorijel(54) =
54factorijel(53).

Dodatak H / Rekurzivne procedureH

-3

Dakle, u optem sluaju, moemo da kaemo da je factorijel(n) = n


faktorijel(n 1). Meutim, tako napisana, ta definicija obuhvata beskrajno
ponavljanje, gde procedura neodreeno rekurzivno poziva samu sebe.
Potreban nam je uslov da zaustavi rekurziju; to se zove osnovni sluaj. Za
funkciju faktorijel, osnovni sluaj je n = 1, gde je faktorijel(1) = 1. Onda
moemo da napiemo funkciju faktorijel u jeziku C kao to sledi:
int factorial(int n)
{
if(n == 1)
return 1;
else
return n * factorial(n - 1);
}

itaocu na poetku moe da bude neugodno sa konceptom funkcije ili


procedure koja poziva samu sebe. Videemo kako moemo da implementiramo takvu funkciju u odeljku dalje u tekstu. Za sada, samo pretpostavite
da radi da funkcija moe da pozove samu sebe bez prouzrokovanje uslova
greke u operativnom sistemu.
Ono to smo videli do sada predstavlja sutinu rekurzije u programiranju. Najpre, radi se o funkciji koja poziva samu sebe. Zatim, definicija
funkcije mora da ukljui osnovni sluaj koji omoguava funkciji da zavri
rekurzivni proces.
Funkcija faktorijel jeste primer upotrebe rekurzije da bi se programirao
matematiki algoritam. Ali rekurzija ima daleko vie namena. Ona je esto
pogodna za rad sa povezanim listama, strukturama stabla i algoritmima
za pretraivanje i sortiranje. Kao primer, razmotrite algoritam binarnog
pretraivanja. Neka je sortedArray[ ] niz sortiran u opadajuem redosledu.
Algoritam binarnog pretraivanja nalazi pojedinu vrednost u sortiranoj
listi. Ako se ta vrednost pronae, algoritam vraa poziciju te vrednosti. Ako
vrednost nije na listi, algoritam vraa negativnu vrednost pozicije umetanja:

H - 4Dodatak H / Rekurzivne procedure


int BinarySearch(int sortedArray[], int key, int first, int last) {
if (first <= last) {
int mid = (first + last) / 2;
if (key == sortedArray[mid])
return mid;

/* found */

else if (key < sortedArray[mid])


return BinarySearch(sortedArray, key, first, mid-1);
else

/* key > sortedArray[mid] */

return BinarySearch(sortedArray, key, mid+1, last);


}
return -(first);

/* not found */

H.2 PREDSTAVLJANJE STABLA AKTIVACIJE


Da bi se olakalo razumevanje rekurzivnih procedura, u [HAYN95] se
uvodi stablo aktivacije. Stablo rekurzije jeste stablo gde svaki vor predstavlja trenutno okruenje. To znai da svaki vor sadri parametre, lokalne
promenljive i povratne vrednosti. Koristei tu tehniku, lako je identifikovati
vor kao posebnu proceduru koja se izvrava u posebnom okruenju. Roditelj vora jeste procedura koja je pozvala taj vor. Deca vora su procedure
koje taj vor poziva.
Na slici H.1a prikazan je generiki oblik vora stavla aktivacije. vor
obuhvata ime funkcije, parametre koji joj se prosleuju i vrednosti koje ona
vraa. Ako se ime funkcije pojavljuje vie puta u njenoj definiciji, onda se
svako od njih razlikuje pomou jedinstvenog indeksa. Na slici H.1b prikazan je primer strukture poziva/povratka procedure koje je bila pozvana.
Okrueni brojevi u vorovima ukazuju na redosled u kome se vorovi aktiviraju. Dinamiko izvrenje programa prati dubinu prvog prelaska u stablu aktivacije. vor na vrhu je prvi poziv funkcije. Viestruka pozivanja iz
vora se navode kao deca, sa pozivanjima sa leva na desno.

Dodatak H / Rekurzivne procedureH

Imena
parametara

-5

Povratna
vrednost

(a) Primer aktivacionog zapisa

Slika H.1 Konvencije aktivacionog zapisa


(b) Redosled pozivanja procedure

Sve ovo trebalo bi da postane jasno kada budemo ispitali sledea dva
primera.

Slika H.1 Konvencije aktivacionog zapisa

Sve ovo trebalo bi da postane jasno kada budemo ispitali sledea dva primera.

H - 6Dodatak H / Rekurzivne procedure

Fibonaccijevi brojevi
Fibonaccijevi brojevi se definiu na sledei nain:
Fib(k) = Fib(k l) + Fib(k 2 );
Fib(2) = 1;
Fib(l) = 1;
Dakle, svaki Fibonaccijev broj jeste zbir prethodna dva broja. Pokazalo
se da se Fibonaccijevi nizovi pojavljuju u mnogim kontekstima u prirodi.
Poetak niza je sledei:
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987
Evo rekurzivnog programa za Fibonaccijev niz:
int function fib(n)
{
if (n == 1 || n == 2)
return 1;
else
return fib(n-1) + fib(n-2);
}

Na slici H.2a prikazano je stablo aktivacije za fib(5), koje daje rezultat


5. Topologija stabla se izvodi iz izvrenja, a izvrenje je tesno povezano sa
induktivnom definicijom (koja je bila iskoriena da se napie funkcija). Na
primer, stablo aktivacije pokazuje da vor za Fib(5) ima dva deteta: Fib(4)
and Fib(3). Dakle, vrednost izraunata za Fib(5) mora da koristi vrednosti
izraunate za Fib(4) i Fib(3). Stablo aktivacije ima povratne vrednosti koje
su smetene u polje sa desne strane, to povratnu vrednost ini pristupanom za studenta. Prema definiciji Fib, vrednosti za Fib(4) i Fib(3) moraju
da se saberu da bi se dobila vrednost za Fib(5).

Dodatak H / Rekurzivne procedureH

(a) Stablo aktivacije za Fibonacci(5)

(b) Stablo aktivacije za Ackermann(2, 1)

H.2 Primeri
rekurzije
Slika Slika
H.2 Primeri
rekurzije
H-7

-7

funkcija Fib(n 1) i Fib(n 2). Listovi stabla aktivacije odgovaraju

H - 8Dodatak H / Rekurzivne procedure

sluaju
(evima) induktivne
definicije.
Prema
tome,
Fib(2)kae
odmah
Ako zamenimo
5 u Fib(5) sa
n, onda nam
stablo
aktivacije
da vraa vr
je Fib(n) funkcija Fib(n 1) i Fib(n 2). Listovi stabla aktivacije odgovaEvo odgovarajueg
raju osnovnom
sluaju (evima) praenja
induktivneizvrenja:
definicije. Prema tome, Fib(2)
odmah vraa vrednost 1.
Evo odgovarajueg praenja izvrenja:
Entering: FIB , Argument list: (5)
Entering: FIB , Argument list: (4)
Entering: FIB , Argument list: (3)
Entering: FIB , Argument list: (2)
Exiting: FIB , Value: 1
Entering: FIB , Argument list:. (1)
Exiting: FIB , Value: 1
Exiting: FIB , Value: 2
Entering: FIB , Argument list: (2)
Exiting: FIB , Value: 1
Exiting: FIB , Value: 3
Entering: FIB , Argument list: (3)
Entering: FIB , Argument list: (2)
Exiting: FIB , Value: 1
Entering: FIB , Argument list: (1)
Exiting: FIB , Value: 1
Exiting: FIB , Value: 2
Exiting: FIB , Value: 5
Na slici H.3a ponovljena je slika H.2a, prikazujui sekvencu u kojoj se
poseuju zapisi aktivacije. To je prvi prelaz po dubini stabla, sa sekvencom
sa leva na
svakomponovljena
nivou.
Nadesno
slicinaH.3a
je slika H.2a, prikazujui sekvencu

poseuju zapisi aktivacije. To je prvi prelaz po dubini stabla, sa sekvenc


na desno na svakom nivou.
H8

Dodatak H / Rekurzivne procedureH

(a) Stablo aktivacije za Fibonacci(5)

(b) Stablo aktivacije za Ackermann(2, 1)

Primeri rekurzije:
trag izvrenja
SlikaSlika
H.3H.3
Primeri
rekurzije:
trag izvrenja

H9

-9

H - 10Dodatak H / Rekurzivne procedure

Ackermannova funkcija
Zanimljivija rekurzivna funkcija je varljivo jednostavna Ackermannova
funkcija:

int ack(int m, int n) {


if (m==O) return (n + 1);
if (n==O) return (ack (m-l,1));
return (ack (m-l, ack(m, n-l) ) );
}

U ovom sluaju, funkcija se poziva rekurzivno, ali se pored toga funkcija pojavljuje kao argument unutar rekurzivne upotrebe funkcije. Vrednost
te funkicije raste veoma brzo, ak i za male ulaze, pa ak i kada porast
rezultuje samo od sabiranja 1. Na primer, A(4, 2) sadri 19729 decimalnih
cifara.
Da bismo razjasnili rad te funkcije, oznaavamo svaki rekurzivan poziv
jedinstvenim indeksom. U svakom sluaju, to je ista funkcija; indeksi samo
omoguavaju da se lake prati ta se deava:

int ack(int m, int n) {


if (m==O) return (n + 1);
if (n==O) return (ack1 (m-l,1));
return (ack2 (m-l, ack3(m, n-l) ) );
}

Na slici H.2b prikazuje se stablo aktivacije za ack(2, 1), koje ima sledee praenje izvrenja:

Dodatak H
procedureH
H/ Rekurzivne
10

- 11

Entering: ACK, Argument list: (2 1)


//(a)
Entering: ACK, Argument list: (2 0)
Entering: ACK, Argument list: (1 1)
//(b)
Entering: ACK, Argument list: (1 0)
Entering: ACK, Argument list: (0 1)
//(c)
Exiting: ACK, Value: 2
Exiting: ACK, Value: 2
Entering: ACK, Argument list: (0 2)
Exiting: ACK, Value: 3
Exiting: ACK, Value: 3
Exiting: ACK, Value: 3
Entering: ACK, Argument list: (1 3)
Entering: ACK, Argument list: (1 2)
//(d)
Entering: ACK, Argument list: (1 1)
Entering: ACK, Argument list: (1 0)
Entering: ACK, Argument list: (0 1)
Exiting: ACK, Value: 2
Exiting: ACK, Value: 2
Entering: ACK, Argument list: (0 2)
Exiting: ACK, Value: 3
Exiting: ACK, Value: 3
Entering: ACK, Argument list: (0 3)
Exiting: ACK, Value: 4
Exiting: ACK, Value: 4
Entering: ACK, Argument list: (0 4)
//(e)
Exiting: ACK, Value: 5
Exiting: ACK, Value: 5
Exiting: ACK, Value: 5

Nekiodod
redova
u praenju
izvrenja
su oznaeni,
u skladu
sa oznaka
Neki
redova
u praenju
izvrenja
su oznaeni,
u skladu sa
oznakama
na stablu aktivacije To je samo za potrebe ilustrovanja.

stabluNa
aktivacije
je samojeza
potrebeposeivanja
ilustrovanja.
slici H.3bTo
prikazana
sekvenca
zapisa aktivacije.

Na slici H.3b prikazana je sekvenca poseivanja zapisa aktivacije.

H.3IMPLEMENTACIJA STEKA

Implementacija rekurzivnih procedura u jezicima za programiranje


poziv procedure prouzrokuje da se okvir steka, ili primerak zapisa aktivacije stavi na upravljaki
Implementacija
procedura
u jezicima
za steka
programiranje
stek. Kao to je rekurzivnih
reeno u poglavlju
12 (slika
12.10), okvir
ukljuuje skoro

H.3
IMPLEMENTACIJA
skoro
uvek obuhvata upotrenu STEKA
steka. Svaki

obuhvata upotrenu steka. Svaki poziv procedure prouzrokuje da se okvir ste

H - 12Dodatak H / Rekurzivne procedure


adresu povratka, prosleene parametre, pokaziva okvira i moda jo neke
potrebne informacije. Kada pozvana procedura vraa vrednosti proceduri
koja ju je pozvala, stek iz pozvane procedure se uklanja sa steka.
Taan sadraj i organizacija okvira steka zavisi od implementacije. Za
nae potrebe, razmatramo model okvira steka koji ukljuuje sledee elemente, ilustrovane na vrhu steka na gornjem delu dijagrama:
parametar-n

parametar-1
pokaziva starog okvira
(pokazuje na prethodni okvir)
adresa povratka
(povratak u pozivajui program)
Steku su pridrueni pokaziva steka, koji pokazuje na trenutni vrh steka
i pokaziva okvira, koji pokazuje na polje pokazivaa starog okvira na gornjem okviru. Kada doe do poziva iz trenutnog programa, stvara se novi
okvir pomou:
1. Stavljanja adrese pozivajueg programa na stek.
2. Stavljanja pokazivaa trenutnog okvira na ste.
3. Stavljanja svih parametara koji treba da se proslede pozvanom programu na stek.

Dodatak H / Rekurzivne procedureH

- 13

Pozvani program moe da pristupi prosleenim parametrima. Pozvani


program moe da pozove drugi program, to rezultuje novim okvirom steka
koji se stavlja na stek. Kada se pozvani program vraa, on:
1. Uzima sve elemente trenutnog okvira sa steka.
2. Ako bilo kakvi parametri treba da se vrate pozivajuem programu, stavlja ih na stek, gde oni postaju deo okvira steka pozivajueg programa.
3. Aurira pokaziva steka na nov vrh steka.
4. Aurira pokaziva okvira na vrednost koja je bila u polju pokazivaa
starog okvira, koja je ba bila skinuta sa steka.
5. Nastavlja se sa izvrenjem na adresi povratka koja je ba bila skinuta sa
steka.
Prethodno navedena tehnika funkcionie, bilo da su programi razliiti
ili svi isti. To znai da ista tehnika radi sa rekurzivnim programom koji
poziva samog sebe, kao i u vie uobiajenoj situaciji.
Na slici H.4 prikazan je upravljaki stek u takama oznaenim na slici
H.2b za funkciju Ackermann (2, 1).

H - 14Dodatak H / Rekurzivne procedure

stari FP
povratak

stari FP
povratak

stari FP

stari FP

stari FP

stari FP

povratak

povratak

povratak

povratak

stari FP

stari FP

stari FP

stari FP

povratak

povratak

povratak

povratak

stari FP

stari FP

stari FP

stari FP

stari FP

povratak

povratak

povratak

povratak

povratak

SP = pokaziva steka
FP = pokaziva okvira

Slika H.4 Snimci steka tokom izvrenja sa slike H.2b

Slika H.4 Snimci steka tokom izvrenja sa slike H.2b

H 14

Dodatak H / Rekurzivne procedureH

- 15

H.4 REKURZIJA I ITERACIJA


Moe da se pokae da bilo koja rekurzivna funkcija nekog algoritma
moe da se prepie koristei samo iteraciju, dakle koristei samo instrukcije
petlje [RICE65]. U mnogim sluajevima, rekurzivna definicija je kompaktnija u jeziku za programiranje koji dozvoljava rekurziju, a i razumljivija je,
posebno ako funkcija radi na rekurzivnoj strukturi podataka kao to je stablo. Meutim, u optem sluaju, rekurzivni program koristi vie i memorije
i vremena obrade od svog ekvivalentnog iterativnog reenja.
Kao primer, razmotrite funkciju faktorijela, koju definiemo na sledeo
nain:
int factorial(int n)
{
if(n == 1)
return 1;
else
return n * factorial(n - 1);
}

To moe lako da se iterativno prepie kao:


int factorial(int n)
{
int nfactorial;
for (nfactorial = 1; n != 0; --n)

nfactorial *= n;

return nfactorial;
}

Da bi se rekurzivno izraunao faktorijel(n), potrebno je stvaranje n primeraka varijable na upravljakom steku i n poziva i povrataka, to prouzrokuje n stvaranja i unitenja okvira steka. U iterativnom reenju, postoji
jedna varijabla i stvara se samo jedan okvir steka.

H - 16Dodatak H / Rekurzivne procedure


Meutim, ima mnogo sluajeva u kojima je rekurzivna tehnika prirodnija i laka za programiranje. Razmotrite algoritam binarnog pretraivanja
koji smo ranije predstavili. Da ponovimo, rekurzivna verzija je kao to sledi:
int BinarySearch(int sortedArray[], int key, int first, int last) {
if (first <= last) {
int mid = (first + last) / 2;
if (key == sortedArray[mid])
return mid;

/* found */

else if (key < sortedArray[mid])


return BinarySearch(sortedArray, key, first, mid-1);
else

/* key > sortedArray[mid] */

return BinarySearch(sortedArray, key, mid+1, last);


}
return -(first);

/* not found */

Evo iterativne verzije:


int BinarySearch(int sortedArray[], int key, int first, int last) {
int low = first;
int high = last;
while (low <= high) {
int mid = (low + high) / 2;
if (key == sortedArray[mid])
return mid;

/* found */

else if (key < sortedArray[mid])


high = mid - 1;
else

/* key > sortedArray[mid] */

low = mid + 1;
}
return -(first);

/* not found */

Iterativni algoritam zahteva dve privremene varijable, a ak i uz poznavanje algoritma tee je razumeti proces jednostavnim pregledom, mada su
dva algoritma dosta slini u svojim koracima.
U tabeli H.1 date su razlike izmeu recurzije i iteracije.

Dodatak H / Rekurzivne procedureH

- 17

Reference
HAYN95 Haynes, S. Explaining Recursion to the Unsophisticated.
SIGSCE Bulletin, September 1995.
MCCR87 McCracken, D. Ruminations on Computer
Curricula. Communications of the ACM, January 1987.

Science

RICE65 Rice, H. Recursion and Iteration. Communications of the ACM,


February 1965.
Tabela H.1 Osobine iteracije i rekurzije

Osobina
Ponavljanje

Petlja iteracije

Izvrava isti blok koda


ponavljajui ga, da bi se
dobio rezultat; signalizuje
nameru da ponavlja
vraajui se nazad na ulaz
u petlju.
Uslovi zavretka Da bi garantovala da e
se zavriti, petlja mora da
ima jedan ili vie uslova
koji prouzrokuju njen
zavretak i mora biti
garantovano da e se u
nekoj taki ostvariti jedan
od tih uslova.
Stanje
Trenutno stanje se aurira
kako petlja napreduje.

Rekurzivna procedura
Izvrava isti blok koda
ponavljajui ga, da bi se
dobio rezultat; signalizuje
nameru da ponavlja
pozivajui samu sebe.
Da bi garantovala da e
se zavriti, rekurzivna
funkcija zahteva osnovni
sluaj koji prouzrokuje da
funkcija prestane da se
ponaa rekurzivno.

Trenutno stanje se
prosledjuje u vidu
parametara.

Dodatak I
Jo o protonoj obradi instrukcija

William Stallings
I.1 TABELE PROTONE OBRADE ZA REZERVACIJU . . . . . . . . . . 2
Tabele rezervacije za dinamiku protonu obradu . . . . . . . . . . . . . 2
Primer protone obrade instrukcije . . . . . . . . . . . . . . . . . . . . . 8
I.2 BAFERI ZA PREUREIVANJE . . . . . . . . . . . . . . . . . . . . . 13
Kompletiranje u redosledu . . . . . . . . . . . . . . . . . . . . . . . . . 13
Kompletiranje van redosleda . . . . . . . . . . . . . . . . . . . . . . . . 15
I.3 TOMASULOV ALGORITAM . . . . . . . . . . . . . . . . . . . . . . . 18
I.4 SEMAFOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Rad semafora . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Primer semafora . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

Dopuna knjige
Organizacija i arhitektura raunara
Prevod devetog izdanja
CET 2012. god.
ISBN: 978-86-7991-361-6
Prevod sa engleskog: Dr Radomir Jankovi

CET

I - 2Dodatak I / Jo o protonoj obradi instrukcija


U ovom dodatku proiruju se neke od tema iz poglavlja 14 i 16.

I.1TABELE PROTONE OBRADE ZA REZERVACIJU


Centralni problem u projektovanju protone obrade je obezbeivanje da
protona obrada moe da dostigne svoju najveu propustljivost uz izbegavanje strukturnih hazarda. To znai da bismo eleli da donosimo instrukcije
u protonu obradu najveom brzinom, ali bez sukoba u upotrebi deljenog
resursa. Tabela rezervacije je bila jedna od prvih tehnika koje su uvedene za
ovu svrhu ([DAVI71], [DAVI75], [PATE76]).
Tabela rezervacije jeste vremenski dijagram koji pokazuje tok podataka
kroz protonu obradu i koji resursi su potrebni instrukciji koja se kree kroz
protonu obradu u svakom vremenskom intervalu.

Tabele rezervacije za dinamiku protonu obradu


Najpre emo razmotriti optiji sluaj dinamike protone obrade. Dinamika protona obrada je ona koja moe da se rekonfigurie kako bi podrala razliite funkcije u raznim vremenskim trenucima. Pored toga, takva
protona obrada bi mogla da obuhvati i sprege unapred i unazad. Veina
protonih obrada instrukcija nee imati svu ovu fleksibilnost, mada neka
od dinamikih svojstava mogu da se pojave u nekim implementacijama. U
svakom sluaju, statika protona obrada, koja izvrava fiksnu fukciju bez
petlji unazad ili unapred jeste samo specijalni sluaj u kome se primenjuju
isti principi.
Slika I.1a, primer uzet iz [HWAN93], prikazuje viefunkcijsku dinamiku protonu obradu. Dve tabele rezervacije, prikazane na slikama I.1b
i I.1c, odgovaraju funkcijama X i Y. U tabeli rezervacije, redovi odgovaraju
resursima (u ovom sluaju stepenima protone obrade), kolone vremenskim jedinicama, a ulaz u red i, kolonu j ukazuje da je stanica i zauzeta u
vreme j.

Dodatak I / Jo o protonoj obradi instrukcijaI

-3

Izlaz X

Ulaz

Izlaz Y

(a) Trostepena protona obrada


vreme

(b) Tabela rezervacije za funkciju X


vreme

(c) Tabela rezervacije za funkciju Y

Slika I.1 Protona obrada sa spregama unapred i unazad


za dve razliite funkcije
Slika I.1 Protona obrada sa spregama unapred i unazad
Broj vremenskih jedinica (ciklusa generatora takta) izmeu dva zapoinjanja protone obrade
je kanjenje
njih. Bilo kakav pokuaj od
za dve
razliiteizmeu
funkcije
strane dva ili vie zapoinjanja da koriste isti resurs protone obrade u isto
vreme,
prouzrokovae
sudar.Sudar
akotakta)
se dveizmeu
instrukcije
Broj
vremenskih
jedinica
(ciklusa dogoditi
generatora
dva zaponu
zapoinjanja
sa kanjenjem koje je jednako rastojanju izmeu dva ulaska u dati red. Ispiprotonetujui
obrade
je kanjenje
njih.
Bilo kakav
pokuaj
strane dva
ili vie
tabelu
rezervacije,izmeu
moemo
da dobijemo
listu
takvih od
zabranjenih
kanjenja i izgradimo vektor sudara:
zapoinjanja da koriste isti resurs protone obrade u isto vreme, prouzrokovae

sudar.Sudar dogoditi ako se dve instrukcije zaponu sa kanjenjem koje je jednako

I - 4Dodatak I / Jo o protonoj obradi instrukcija


(C1, C2, , Cn)
gde je
Ci = 1 ako je i zabranjeno kanjenje; znai, zapoinjanje protone obrade
instrukcije i vremenskih jedinica posle prethodne instrukcije rezultuje sudarom na resursu;
Ci = 0 ako je i dozvoljeno kanjenje;
n

najvea vrednost u listi sudara.

Mada ovi primeri to ne pokazuju, moe biti vie uzastopnih ulazaka u


red. To odgovara sluaju u kome dati stepen protone obrade zahteva vie
vremenskih jedinica. Takoe moe biti i viestrukih ulaza u kolonu, to ukazuje na paralelnu upotrebu viestrukih resursa.
Da bismo utvrdili da le je dato kanjenje zabranjeno ili dozvoljeno,
moemo da uzmemo dve kopije oblika tabele rezervacije i da pomeramo
jednu na desno, kao bismo videli da li se pojavljuje bilo kakav sudar za dato
kanjenje. Na slici I.2 vidi se da su kanjenja 2 i 5 zabranjena. Oznaka X1
na slici odnosi se na prvo zapoinjanje funkcije X, a X2 na drugo zapoinjanje. Pomou pregleda, moemo takoe dca vidimo da su kanjenja 2, 4,
5 i 7 sva zabranjena.

(a) Sudar kod rasporeivanja kanjenja 2

(b) Sudar kod rasporeivanja kanjenja 5

Slika I.2
Sudari
kod zabranjenih
kanjenja
2 i25i u5 korienju
Slika
I.2 Sudari
kod zabranjenih
kanjenja
u korienjuprotone
protone obrade
obrade na slici I.1 za funkciju X
na slici I.1 za funkciju X
Kanjenja 1, 3, 6 su dozvoljena. Bilo koje kanjenje vee od 7 je sasvim jasno

Dodatak I / Jo o protonoj obradi instrukcijaI

-5

Kanjenja 1, 3, 6 su dozvoljena. Bilo koje kanjenje vee od 7 je sasvim


jasno dozvoljeno. Prema tome, vektor sudara za funkciju X je:
CX = (0101101)
Moramo biti paljivi kada tumaimo vektor sudara. Mada je kanjenje od 1 dozvoljeno, ne moemo da izdamo sekvencu instrukcija, svaku
sa kanjenjem od 1 u odnosu na prethodnu instrukciju. Da biste to videli,
zamislite da bi trea instrukcija imala kanjenje od 2 u odnosu na prvu
instrukciju, to je zabranjeno. Umesto toga, potrebna nam je sekvenca kanjenja koja su dozvoljena u odnosu na sve prethodne instrukcije. Ciklus
kanjenja je sekvenca kanjenja koja beskrajno ponavlja istu podsekvencu.
ciklus se ponavlja

(a) Ciklus kanjenja (1, 8) = 1,8,1,8 ... sa prosenim kanjenjem od 4,5

ciklus se
ponavlja

(b) Ciklus kanjenja (3) = 3,3,3,3 ... sa prosenim kanjenjem od 3

ciklus se ponavlja

(c) Ciklus kanjenja (6) = 6,6,6,6 ... sa prosenim kanjenjem od 6

Slika I.3 Uspena kanjenja za protonu obradu na slici I.1 za funkciju X


Slika I.3 Uspena kanjenja za protonu obradu na slici I.1 za funkciju x

I - 6Dodatak I / Jo o protonoj obradi instrukcija

Donoenje instrukcije 20 ns

Dekodovanje instrukcije 3 ns

Generisanje adrese 4 ns

Donoenje operanda 20 ns

Izvravanje 5 ns

Skladitenje operanda 16 ns

Auriranje programskog brojaa 2 ns


Slika I.4 Protona obrada instrukcije

Slika I.4 Protona obrada instrukcije

Dodatak I / Jo o protonoj obradi instrukcijaI

-7

Na slici I.3 ilustrovani su ciklusi kanjenja za na primer koji ne prouzrokuju sudare. Na primer, sa slike se vidi da su uzastopna zapoinjanja
novih zadataka razdvojena sa jednim i sa osam ciklusa naizmenino.

Primer protone obrade instrukcije


Razmotrimo sada konstrukciju tabele rezervacije za tipinu protonu
obradu. Kao primer, koristimo protonu obradu predstavljenu u [STON93].
Na slici I.4 ilustrovana je protona obrada i date su pribline vrednosti
potrebnog vremena za svaki stepen. Direktan pokuaj da se razvije tabela
rezervacije daje rezultat na slici I.5a. Da bismo razvili tu tabelu, koristimo
fiksnu brzinu generatora takta i sinhronizujemo svu obradu sa tim fiksiranim taktom. Svaki stepen izvodi svoju funkciju unutar jednog ili vie perioda generatora takta i pomera rezultat u sledei stepen na ivicu signala
takta. Za ovaj primer, biramo takt od 20 ns.
Meutim, treba da imamo na umu da se za redove tabele pretpostavlja
da odgovaraju resursima, a ne prosto stepenima protone obrade. Na slici
I.5b, modifikujemo tabelu rezervacije tako da odraava injenicu da memorijske operacije koriste istu funkcionalnu jedinicu. Sada je jedino dozvoljeno kanjenje 15.
Pretpostavimo da smo sada implementirali ke na ipu i da smo smanjili
vreme pristupa memoriji za jedan ciklus takta. Preureena tabela rezervacije
prikazana je na slici I.6a. Pomeranjem kopije oblika tabele rezervacije preko
iste, lako otkrivamo dan je vektor sudara 011010. Postavlja se pitanje: kakav raspored e obezbediti najmanje proseno kanjenje? Kao to se ukazuje na slici
I.3, postoji izvestan broj mogunosti za svaki dati vektor sudara.
Dijagram prelaza stanja vektora sudara je alat pogodan za odreivanje
kada moemo da zaponemo novi proces i izbegnemo sudare, kada su neke
operacije ve u protonoj obradi. Procedura za stvaranje dijagrama stanja
je sledea:

I - 8Dodatak I / Jo o protonoj obradi instrukcija

Donoenje.instr.
Dekodovanje.instr.
Generisanje adrese
Dono.operanda
Izvrenje
Skladitenje oper.
Auriranje PC

(a) Tabela rezervacije: prvi pokuaj

Memorijska OP
Dekodovanje.instr.
Generisanje adrese
Izvrenje
Auriranje PC

(b) Tabela rezervacije: drugi pokuaj

Slika
I.5 Tabela
Tabelarezervacije
rezervacije
za protonu
obradu
instrukcije
Slika I.5
za protonu
obradu
instrukcije
1. Pomerite vektor sudara ulevo za jednu poziciju, umeui 0 na kranju desnu
1. Pomerite vektor sudara ulevo za jednu poziciju, umeui 0 na kranju
poziciju.
Svako
1-bitno
pomeranje
odgovaraodgovara
poveavanju
kanjenja
za 1.
desnu
poziciju.
Svako
1-bitno pomeranje
poveavanju
kanjenja za 1.
2. Nastavite sa pomeranjem dok se bit 0 ne pojavi sa levog kraja. Kada se bit 0
2. Nastavite sa pomeranjem dok se bit 0 ne pojavi sa levog kraja. Kada se
0 pojavi
posle p pomeranja,
to znai
da je p dozvoljeno
kanjenje.
pojavi bit
posle
p pomeranja,
to znai da
je p dozvoljeno
kanjenje.
3. Rezultujui
vektor
sudara
predstavljasudare
sudare koji
bitibiti
prouzroko3. Rezultujui
vektor
sudara
predstavlja
kojimogu
mogu
prouzrokovani
vani instrukcijom koja se trenutno nalazi u protonoj obradi. Originalni
vektor sudara
predstavlja
kojiumogu
biti prouzrokovani
instruk- vektor
instrukcijom
koja se
trenutnosudare
nalazi
protonoj
obradi. Originalni
cijom koju sada umeemo u protonu obradu. Da bismo predstavili sve
sudaramogunosti
predstavljasudara,
sudare koji mogu biti prouzrokovani instrukcijom koju sada

stvaramo
novo stanje
stavljajui
po bitovima
poetni
vektor sudara
u
umeemo
u protonu
obradu.
Da bismo
predstavili
sve mogunosti
sudara,
ILI funkciju sa pomerakim registrom.
I-9

stvaramo novo stanje stavljajui po bitovima poetni vektor sudara u ILI

Dodatak I / Jo o protonoj obradi instrukcijaI

-9

4. Ponovite ovaj proces od poetnog stanja za sve dozvoljive pomeraje.


5. Ponovite ovaj proces iz svih novostvorenih stanja za sve dozvoljive pomeraje. U svakom sluaju napravite ILI funkciju po bitovima sa originalnim vektorom sudara.
Na slici I.6b prikazan je rezultat za tabelu rezervacije sa slike I.6a. Dijagram stanja pokazuje da, posle zapoinjanja operacije u praznoj protonoj
obradi, moemo da zaponemo novu operaciju u protonoj obradi posle 1
ciklusa. Meutim, to nas dovodi u stanje gde ne moemo da zaponemo
drugu operaciju pre jo 6 vremenskih jedinica. To nam daje proseno kanjenje od 3,5 za sedmostepenu protonu obradu, to nije ba dobro. Alternativno, moemo da ekamo 4 vremenske jedinice posle poetka inicijalne
operacije i onda da zaponemo novu operaciju na svaka 4 ciklusa. To daje
jo slabiju performansu, sa prosenim kanjenjem od 4.
Pametan nain za postizanje bolje performanse je da se uvede namerno
kanjenje u protonu obradu. Pretpostavimo da stavimo kanjenje od 1
ciklusa posle stepena izvrenja. To e u stvari rezultovati 8-stepenom protonom obradom. Tabela rezervacije prikazana je na slici I.7a, gde ulaz D
ukazuje na kanjenje. To daje vektor sudara 0011010. Sada imamo mogunosti kanjenja od 1, 2, 4 i 7. Na slici I.7b prikazan je rezultujui dijagram
prelaza stanja. Sada traimo zatvorenu petlju, ili ciklus, kroz dijagram stanja koji daje najmanje proseno kanjenje.
Jedna mogunost je pohlepan ciklus. Pohlepan ciklus je onaj ije grane
su sve sa minimalnim kanjenjima od njihovih poetnih pozicija; dakle, u
svakom stanju, biraju se izlazne grane sa najmanjim kanjenjem.

I - 10Dodatak I / Jo o protonoj obradi instrukcija


Vreme

Memorijska OP
Dekodovanje instr.
Generisanje adr.
Izvrenje
Auriranje PC
Vektor sudara = 011010
(a) Tabela rezervacije

(b) Dijagram prelaza stanja

Slika I.6 Tabela rezervacije i dijagram prelaza stanja za prepravljenu


protonu obradu instrukcije

Slika I.6 Tabela rezervacije i dijagram prelaza stanja


za prepravljenu protonu obradu instrukcije

Dodatak I / Jo o protonoj obradi instrukcijaI

- 11

Vreme
Memorijska OP
Dekodovanje instr.
Generisanje adr.
Izvrenje
Auriranje PC
Vektor sudara = 0011010
(a) Tabela rezervacije

(b) Dijagram prelaza stanja

Slika
I.7 Tabela
rezervacije
i dijagram
prelaza obradu
stanja inSlika I.7 Tabela
rezervacije
i dijagram
prelaza
stanja za protonu
strukcije
sa umetnutim
kanjenjem
za protonu
obradu
instrukcije
sa umetnutim kanjenjem
I 12

I - 12Dodatak I / Jo o protonoj obradi instrukcija


U ovom sluaju, pohlepni ciklus ima vrednosti kanjenja 1, 1, 7, pa je
proseno kanjenje 9/3 = 3. Paljivo prouavanje dijagrama pokazuje da, u
ovom sluaju, nijedan drugi ciklus ne prouzrokuje manje proseno kanjenje.

I.2BAFERI ZA PREUREIVANJE
Kao to je pomenuto u poglavlju 14, uobiajena superskalarna tehnika da se podri kompletiranje van redosleda je bafer za preureivanje
[SMIT88]. Bafer za preureivanje je privremeno skladite za rezultate kompletirane van redosleda kojim su oni predati registarskoj datoteci u redosledu programa.
Da bismo objasnili rad bafera za preureivanje, treba najpre da razmotrimo tehniku koja podrava kompletiranje u redosledu, a koja je poznata
kao pomeraki registar rezultata.

Kompletiranje u redosledu
Kod kompletiranja u redosledu, instrukcija se rasporeuje i dozvoljava
joj se da menja stanje maine (vrednosti registara, stanje prekida) samo ako
nijedan prethodna instrukcija nije prourokovala uslov prekida. To ogranienje osigurava da instrukcija nee biti povuena sve dok prethodne instrukcije ne kompletiraju sve promene u registarskoj datoteci.
Procesor upravlja upisivanje rezultata u registre pomou pomerakog
registra rezultata.Pomeraki registar rezultata je tabela sa toliko ulaza
(redova) koliko ima stepena u najduoj protonoj obradi (slika I.8). Svaki
ulaz, ako je vaei, odnosi se na jednu instrukciju i sastoji se od etiri polja:
Izvor funkcionalne jedinice: funkcionalna jedinica koja e obezbediti
rezultat
Registar odredita: registar odredita za rezultat
Bit validnosti: pokazuje koji od ulaza trenutno sadri validnu informaciju
Programski broja: lokacija instrukcije

Dodatak I / Jo o protonoj obradi instrukcijaI

Registar
odredita

Bit
Programski
validnosti
broja

Pravac kretanja

Stepen

Izvor funkcionalne jedinice

- 13

Slika I.8 Pomeraki registar rezultata

Slika I.8 Pomeraki registar rezultata

Instrukcija koja uzima i perioda generatora takta rezervie stepen i u


koliko
ima
stepenaregistru
u najduoj
protonoj
obradi
(slika
I.8). Svaki
ako je vaei,
pomerakom
rezultata
u vreme
kada
se izdaje.
Ako jeulaz,
bit validnosti
stepena i ve postavljen, tada se instrukcija zadrava do sledeeg perioda
odnosi se na jednu instrukciju i sastoji se od etiri polja:
takta, a stepen i se jo jednom proverava. Kada ulaz moe da se ostvari,
se njegova jedinice:
etiri polja.
U isto vreme,
svi ulazi
popunjavaju
Izvor funkcionalne
funkcionalna
jedinica
kojau pomeraki
e obezbediti
registar rezultata od 1 do i 1 koji nisu u upotrebi, popunjavaju se nultom
rezultat
informacijom,
ali se postavlja bit validnosti. To spreava sledeu instrukciju
sa kratkim kanjenjem da rezervie bilo koji od redova pre i, pa se tako
Registar odredita: registar odredita za rezultat
obezbeuje da se nijedna instrukcija ne izda ako bi ona okonala svoje izvrlogiki prethodne
instrukcije.
enje
Bit pre
validnosti:
pokazuje koji
od ulaza trenutno sadri validnu informaciju
Najzad, na svaki ciklus generatora takta, ulaz 1 registra se brie, preostali
Programski broja: lokacija instrukcije
ulazi se pomeraju navie za jedan red, a nulti ulaz se postavlja u redu N.
Instrukcija koja uzima i perioda generatora takta rezervie stepen i u

Kompletiranje
redosleda
pomerakom
registru van
rezultata
u vreme kada se izdaje. Ako je bit validnosti stepena
Bafer zatada
preureivanje
se zadrava
koristi dadopodri
kompletiranje
redo- i se
i ve postavljen,
se instrukcija
sledeeg
perioda takta,van
a stepen
sleda zadravanjem kompletiranih instrukcija dok se rezultati ne poalju
u logiki ispravnom redosledu. Na slici I.9a prikazana je organizacija za
ovakav pristup. Modifikovani pomeraki
I 14 registar rezultata se i dalje koristi,
ali sada obezbeuje ulaz za bafer za preureivanje. Rezultati iz kompletirane instrukcije takoe obezbeuju ulaz u bafer za preureivanje. Aurira-

I - 14Dodatak I / Jo o protonoj obradi instrukcija


nje registara rezultatima kompletiranih instrukcija se deava kroz bafer za
preureivanje koji, kao to mu i ime nagovetava, preureuje rezultate iz
kompletiranih instrukcija da bi osigurao korektno izvrenje.
Na slici I.9b prikazani su detalji dve strukture podataka koje se koriste
u ovom pristupu. Bafer za preureivanje je cirkularni bafer sa pokazivaima
na glavu i rep. Ulazi izmeu glave i repa se smatraju validnim. Kada se
instrukcija izdaje, sledei raspoloiv ulaz u bafer za preureivanje, na koji
pokazuje pokaziva repa, dodeljuje se izdavanoj instrukciji. Broj ulaska za
tu instrukciju se koristi kao tag da bi se identifikovao ulaz u bafer rezervisan
za instrukciju. Tag se postavlja u pomerakom registru rezultata uz druge
upravljake informacije. Pokaziva repa se zatim inkrementira modulo veliine bafera. Pomeraki registar rezultata se razlikuje od onog ranije korienog, zato to postoji polje koje sadri tag za preureenje umesto polja koje
odreuje odredini registar.
Kada se instrukcija kompletira, rezultati se alju u bafer za preureenje.
Tag iz pomerakog registra rezultata se koristi da bi ih usmerio u ispravan
ulaz bafera za preureenje. Kada ulaz u glavi bafera za preureenje sadri
validne rezultate, njegova instrukcija je kompletirana, a rezultati se upisuju
u registre.
Zapazite da su ulazi u bafer za preureenje u redosledu u kome su
instrukcije izdavane. Prema tome, bafer sprovodi upisivanje u registre u
logiki ispravnom redosledu. To znai da bafer za preureenje slui kao
privremeno skladite za rezultate koji mogu biti kompletirani van redosleda, a zatim predaje te rezultate registarrskoj datoteci u redosledu programa. Pomeraki registar rezultata nije neophodno u takvom rasporedu,
ali obezbeuje mehanizam indeksiranja u baferu za preureenje, tako da
nije potrebno obaviti asocijativno pretraivanje posle svakog kompletiranja
instrukcije.

Dodatak I / Jo o protonoj obradi instrukcijaI

- 15

Izvor podataka
ka funkcionalnim
jedinicama

Registarska
datoteka

Pomeraki
registar
rezutata
Bafer za
preureenje

Magistrala
rezultata

(a) Organizacija bafera za preureenje


Izvor funkcioStepen nalne jedinice

Bit
valid.

Tag

Pravac
kretanja

Pomeraki registar rezultata


Reg. RezulIzuzeci
Broj
odred. tat
ulaza

Bit
valid.

Programski broja

Glava
Rep

Bafer za preureenje
(b) Bafer
zaI.9
preureenje
i pridrueni
pomeraki
registar rezultata
Slika
Implementacija
bafera za
preureenje

Slika I.9 Implementacija bafera za preureenje

I - 16Dodatak I / Jo o protonoj obradi instrukcija

I.3TOMASULOV ALGORITAM
Tomasulov algoritam je razvijen za jedinicu za rad u pokretnom zarezu
sistema IBM 360/91 [TOMA67]. Kasnije se koristio za vie maina IBM
360/370, PowerPC i druge procesore. Algoritam minimizuje RAW hazarde
prativi kada su raspoloivi operandi za instrukcije. On takoe minimizuje
i WAW i WAR hazarde, pomou preimenovanja registara da bi se otklonile
vetake zavisnosti i korienjem bafera, poznatih kao stanice rezervacije, koji
omoguavaju podacima da se privremeno skladite, ime se eliminie potreba
da se ita iz registarske datoteke, jednom kada su podaci raspoloivi.
Stanice rezervacije donose i skladite operande instrukcija im oni budu
raspoloivi. Operandi izvora pokazuju na registarsku datoteku ili na druge
stanice rezervacije. Svaka stanica rezervacije odgovara po jednoj instrukciji.
Jednom kada su svi operandi izvora raspoloivi, instrukcija se alje na izvrenje, pod uslovom da je funkcionalna jedinica takoe raspoloiva. Kada se
izvrenje kompletira, rezultat se stavlja u bafer u stanici rezervacije. Prema
tome, funkcionalna jedinica je slobodna za izvrenje druge instrukcije.
Stanica rezervacije zatim alje rezultat registarskoj datoteci i svakoj drugoj stanici rezervacije koja eka na taj rezultat. WAW hazardi su opslueni
zato to samo poslednja instrukcija (u redosledu programa) stvarno upisuje
u registre. Drugi rezultati se stavljaju u bafere u stanicama rezervacije i
konano alju svim instrukcija koje ekaju na te rezultate. WAR hazardi su
opslueni zato to stanice rezervacije mogu da dou do operanada izvora
iz registarske datoteke ili iz drugih stanica rezervacije (drugim reima, iz
druge instrukcije). U Tomasulovom algoritmu, upravljaka logika je raspodceljena izmeu stanica rezervacije.

Dodatak I / Jo o protonoj obradi instrukcijaI


Iz jedinice
instrukcije

Iz
memorije

Baferi u pokret.
zarezu (FLB)

Kontrola

Stek
operanada u
pokretnom
zarezu
(FLOS)

Bit. Tazauz. govi

Registri u pokr.
zarezu (FLR)

Dekoder
Kontrola
FLB magistrala

Ponor
Ponor
Ponor

Tag
Tag
Tag

Izvor
Izvor
Izvor

Kon.
Kon.
Kon.

Stanice
rezervacije

Stanice
rezervacije

Tagovi

Skladite
baf.podataka
SDB

Ka memoriji

FLR magistrala
CDB
Tag
Tag
Tag

- 17

Tag
Tag

Ponor
Ponor

Tag
Tag

Izvor
Izvor

Kon.
Kon.

Mnoenje/
delenje

Sabira

Rezultat

Rezultat

Zajednika magistrala podataka

Slika I.10
Osnovna
struktura
jedinice
za radzau rad
pokretnom
zarezu
koja koristi
Slika
I.10 Osnovna
struktura
jedinice
u pokretnom
zarezu
koja koristi Tomasulov algoritam
Tomasulov algoritam
Primer
organizacije
Tomasulov
algoritam
prikazan
na slici
Primer
organizacije
za za
Tomasulov
algoritam
prikazan
je naje slici
I.10.I.10.
To je
To je organizacija prvobitne implementacije jedinice za rad u pokretnom
organizacija
prvobitneIBM
implementacije
jedinice za rad u pokretnom zarezu raunara
zarezu raunara
360/91.

Da bismo sztekli oseaj za algoritam, propratimo instrukciju kroz steIBM 360/91.


pene tipinog Tomasulovog procesora. Zapazite da ovde svaki stepen moe
bismo sztekli
za algoritam,
propratimo
instrukciju
daDa
odgovara
za vieoseaj
od jednog
stepena aktuelne
protone
obrade:kroz stepene
tipinog Tomasulovog procesora. Zapazite da ovde svaki stepen moe da odgovara
Donoenje: Ba kao u jednostavnom skalarnom procesoru, instrukcije se donose
memorije
za instrukcije.
za vie od jednog
stepena iz
aktuelne
protone
obrade: Za razliku od jednostavnog
skalarnog procesora, instrukcije e verovarno biti donesene u gru Donoenje:
u jednostavnom
pama odBa
dvekao
ili vie
istovremeno. skalarnom procesoru, instrukcije se

Izdavanje:
Procesor
odreuje kojoj
staniciodrezervacije
da se
izda
donose
iz memorije
za instrukcije.
Za razliku
jednostavnog
skalarnog
instrukcija, zasnovano na vrsti funkcionalne jedinice koju ona zahprocesora,
e verovarno
donesene urezervacije.
grupama odInstrukcije
dve ili vie
teva i instrukcije
raspoloivosti
prostora biti
u jedinicama
mogu da se izdaju stanicama rezervacije bez obzira na to da li su
istovremeno.
njihovi operandi raspoloivi, ili to nisu. Ako operand nije odmah rasI 19 registara, to moe biti zato to vredpoloiv da se proita iz datoteke
Izdavanje: Procesor odreuje kojoj stanici rezervacije da se izda instrukcija,
zasnovano na vrsti funkcionalne jedinice koju ona zahteva i raspoloivosti

I - 18Dodatak I / Jo o protonoj obradi instrukcija


nost pridruena tom registru jo nije izraunata. Ako je to sluaj,
onda e se operand aurirati rezultatom instrukcije koja je ve bila
izdata stanici rezervaciuje. Otuda, kako jedinica za izdavanje izdaje
instrukciju njenoj stanici rezervacije, ona preimenuje bilo koje reference registrima pomou identifikatorskog taga koji pokazuje koja
funkcionalna jedinica e proizvesti rezultat i kao koji identifikator
virtuelnog registra e rezultat biti identifikovan. Jedinica za izdavanje takoe preimenuje sve registre rezultata pridruene sa novom
instrukcijom na identifikator virtuelnog registra, tako da moe da
kae sledeim instrukcijama gde da pronau rezultate te instrukcije.
Izvrenje: Stepen izvrenja procesora koji implemetgira Tomasulov
algoritam sastoji se od izvesnog broja funkcionalnih jedinica, od
kojih je svaka sa svojom stanicom rezervacije. Stanica rezervacije
dri mali broj instrukcija koje su izdate, ali jo ne mogu da se izvre.
Kada instrukcija postane spremna da se izvri zato to su vrednosti operanada postale raspoloive (prenosom po zajednikoj magistrali podataka) i funkcionalna jedinica spremna da prihvati novu
instrukciju, stanica rezervacije prosleuje tu instrukciju funkcionalnoj jedinici, gde se deava njeno stvarno izvrenje: izraunavaju se
aritmetike operacije i pristupa se memoriji.
Upis natrag: Poslednji stepen kroz koji prolazi instrukcija jeste upis
natrag. To je u mnogome slino jednostavnoj maini sa protonom
obradom: kada se izrauna rezultat instrukcije, vrednost se postavlja
na jednu od izvesnog broja zajednikih magistrala podataka, kako
bi bio poslat u registarsku datoteku. Tu magistralu takoe nadgledaju drugi delovi maine, tako da vrednost mogu odmah da iskoriste
instrukcije koje ekaju.
Da bi se stekao oseaj za algoritam, predstavljamo primer tipine organizacije procesora koji koristi Tomasulov algoritam, preuzet iz [SHEN05].
Pretpostavljamo da svaka instrukcija ukljuuje reference na tri registra za
pokretni zarez kao operande. Mogu da se isporue do dve instrukcije istovremeno (u redosledu programa). Takoe pretpostavljamo da instrukcija
moe da zapone izvrenje u istom ciklusu kada je isporuena stanici rezervacije. Kanjenja za operacije sabiranja i mnoenja su dva i tri ciklusa po
instrukciji, respektivno. Instrukcija moe da prosledi svoj rezultat zavisnim
instrukcijama u poslednjem ciklusu izvrenja, a zavisna instrukcija moe da

Dodatak I / Jo o protonoj obradi instrukcijaI

- 19

zapone izvrenje u sledeem ciklusu. Vrednosti tagova 1, 2 i 3 se koriste


za identifikovanje tri stanice rezervacije funkcionalne jedinice za sabiranje,
dok su vrednosti 4 i 5 za identifikovanje dve stanice rezervacije funkcionalne jedinice za mnoenje/delenje.
Sekvenca primera sastoji se od sledeeg dela programa:
w: R4 R0 + R8
x: R2 R0 R4
y: R4 R4 + R8
z: R8 R4 R2
Poetne vrednosti registara R0, R2, R4, R8 su 6.0, 3.5, 10.0 i 7.8, respektivno. Na slici I.11 ilustrovano je est ciklusa izvrenja prograna.
Ciklus 1: Instrukcije w i x se isporuuju (u redosledu) stanicama
rezervacije (RS) 1 i 4, respektivno. Bitovi zauzetosti odredinih registara za te instrukcije (R4 za w, R2 za x) se postavljaju u registarskoj
datoteci za pokretni zarez (FLR). Polje za tag za R2 se postavlja na
4, pokazujui da e instrukcija u RS 4 proizvesti rezultat za auriranje R2. Slino tome, polje za tag za R 4 se postavlja na 1, pokazujui
da e instrukcija u RS 1 proizvesti rezultat za auriranje R4. Zapazite da su u ulazima RS, jedan ili dva izvorna operanda smeteni
u polju za ponor. To slui kao privremena lokacija skladita. Drugi
operand e se kombinovati sa vrednou u polju za ponor, da bi proizveo vrednost odredinog operanda. Oba operanda za instrukciju w
su raspoloiva, pa ona odmah poinje izvrenje (pokazano pomou
w do funkcije sabiraa). Instrukcija x zahteva rezultat (R4) instrukcije w, pa jo ne moe da se izvri. Umesto toga, bit taga za izvorni
operand se postavlja na 1, to se odnosi na ulaz 1 u RS datoteci. Taj
tag pokazuje da e instrukcija u RS 1 proizvesti potrebni izvorni operand.
Ciklus 2: Instrukcije y i z se isporuuju (u redosledu) RS 2 i 5, respektivno. Bit zauzetosti za odredini registar z (R8) se postavlja u
datoteci FLR. Instrukciji y potreban je R8 kao izvorni registar. S
obzirom da je bit zauzetosti postavljen za taj R8, pokazujui da vrednost u FLR vie nije validna, tag za R4 se uzima i smeta u ulaz RS
za taj izvorni registar. Pored toga, s obzirom da e R4 biti auriran od
strane y, tag za R4 se aurira na vrednost 2, pokazujui da vrednost

I - 20Dodatak I / Jo o protonoj obradi instrukcija


za R4 u datoteci FLR nee biti validna dok se ne kompletira instrukcija y. Slino tome, kada se isporui z, ona se stavlja u RS ulaz 5.
Instrukciji z potrebni su R4 i R8 kao izvori, pa se tagovi tih registara
stavljaju u RS ulaz za z. Takoe, funkcija sabiraa za w kompletira se
na kraju ciklusa 2, a rezultat e se uneti u dva RS ulaza sa vrednou taga 1. Ti RS ulazi e pokupiti rezultate preko zajednike magistrale podataka (CBD). Ta vrednost (13,8) e se pojaviti na poetku
ciklusa 3. Instrukctija z e aurirati R8, pa se njgova vrednost taga
(5) unosi u ulaz FLR datoteke za R8.
Ciklus 3: Na poetku ovog ciklusa, odgovarajua vrednost za R4
(13,8) smeta se u ulaze za instrukcije y i x. Instrukcija y poinje
izvrenje u jedinici za sabiranje, a instrukcija x poinje izvrenje u
jedinici za mnoenje/delenje.
Ciklus 4: Instrukcija y se kompletira na kraju ovog ciklusa, i predaje
svoj rezultat (21,6). Taj rezultat se zapisuje u RS ulazu za instrukciju
z i u samom R4 u FLR. Zapazite da se taj rezultat alje R4 ak i ako
prethodna instrukcija (x) nije kompletirana. To kompletiranje van
redosleda je mogue zato to instrukcije u stvari rade sa preimenovanim registrima, gde se ime registra sastoji od njegovog originalnog
imena plus vrednost taga pridruenog u trenutku kada se instrukcija
isporui.
Ciklus 5: Instrukcija x se kompletira na kraju ovog ciklusa i predaje
svoj rezultat (82,8). Taj rezultat se zapisuje u RS ulazu za instrukciju
z i u FLR ulazu za R2.
Ciklus 6: Instrukcija z poinje izvrenje. R8 stoga nije validan dok se
z ne kompletira.

Dodatak I / Jo o protonoj obradi instrukcijaI

- 21

CIKLUS 1: isporuene instrukcije: w, x (u redosledu)


Tag Ponor Tag Izvor

Sabira

Tag Ponor Tag Izvor


Mno./Del.

Zauz.Tag Podatak
Da
Da

CIKLUS 2: isporuene instrukcije: y, z (u redosledu)


Tag Ponor Tag Izvor

Sabira

Tag Ponor Tag Izvor

Mno./Del.

Zauz.Tag Podatak
Da
Da
Da

CIKLUS 3: isporuene instrukcije:


Tag Ponor Tag Izvor

Sabira

Tag Ponor Tag Izvor

Mno./Del.

Zauz.Tag Podatak
Da
Da
Da

CIKLUS 4: isporuene instrukcije:


Tag Ponor Tag Izvor

Sabira

Tag Ponor Tag Izvor

Mno./Del.

Zauz.Tag Podatak
Da
Da
Da

CIKLUS 5: isporuene instrukcije:


Tag Ponor Tag Izvor

Tag Ponor Tag Izvor

Zauz.Tag Podatak
Da

Sabira

Mno./Del.

Da

CIKLUS 6: isporuene instrukcije:


Tag Ponor Tag Izvor

Sabira

Tag Ponor Tag Izvor

Mno./Del.

Zauz.Tag Podatak

Da

Slika I.11 Ilustracija Tomasulovog Algoritma na primeru sekvence instrukcija

Slika I.11 Ilustracija Tomasulovog Algoritma na primeru sekvence instrukcij

Ciklus 1: Instrukcije w i x se isporuuju (u redosledu) stanicama rezervacij

I - 22Dodatak I / Jo o protonoj obradi instrukcija

I.4SEMAFOR
Semafor je tehnika dinamikog rasporeivanja instrukcija zasnovana na
hardveru, koja se koristi kao alternativa preimenovanju registara, da bi se
postigla efikasnost protone obrade. U sutini, semafor je knjigovodstvena
tehnika koja instrukcijama doputa da se izvravaju kad god nisu zavisne
od prethodnih instrukcija i kada nema strukturnih hazarda. Ta tehnika,
poznata i kao Thorntonov algoritam, prvobitno je razvijena za CDC 6600
[THORN64, THORN80]. Varijacije na tehniku semafora su implementirane na izvesnom broju maina.

Donoenje
Instrukcije
F

Dekodovanje D

Semafor

Izdavanje
I

Izvrenje
E

Izvrenje
E

Upis
natrag
W

Izvrenje
E

Izvrenje
E

Upis
natrag
W

Izvrenje
E

Izvrenje
E

Upis
natrag
W

Slika I.12
I.12 Blok
u stilu
CDC
6600
Slika
Blok dijagram
dijagramprocesora
procesora
u stilu
CDC
6600
sliciI.12
I.12jejeblok
blok dijagram
dijagram koji
koji ilustruje
NaNa
slici
ilustruje ulogu
ulogusemafora
semaforau uorganizaorganizaciji
ciji procesora. Pretpostavljamo jednu protonu obradu instrukcija sa stepeprocesora.
Pretpostavljamo
jednu protonu
obradu
instrukcija
sa stepenima
nima za
donoenje, dekodovanje
i izdavanje
instrukcija.
Ostatak
protone za
obrade je super-skalarna arhitektura sa paralelnim protonim obradama za
donoenje, dekodovanje i izdavanje instrukcija. Ostatak protone obrade je superrazliite funkcionalne jedinice i/ili ponovljene funkcionalne jedinice, gde
svakaarhitektura
paralelna protona
obra-da
ukljuujeobradama
jedan ili vie
i
skalarna
sa paralelnim
protonim
za stepena
razliiteizvrenja
funkcionalne
stepen za upisivanje natrag. Semafor je centralna jedinica koja razmenjuje
jedinice
i/ili ponovljene
funkcionalne
jedinice,
gde svaka
paralelna
informacije
sa stepenom
za izdavanje
i stepenima
za izvrenje.
Onprotona
je takoeobrau interakciji sa registarskom datotekom.
da ukljuuje jedan ili vie stepena izvrenja i stepen za upisivanje natrag. Semafor
je centralna jedinica koja razmenjuje informacije sa stepenom za izdavanje i
stepenima za izvrenje. On je takoe u interakciji sa registarskom datotekom.

Rad semafora
Na semafor moe da se gleda kao da se sastoji od dve tabele, jedne sa ulazom za

Dodatak I / Jo o protonoj obradi instrukcijaI

- 23

Rad semafora
Na semafor moe da se gleda kao da se sastoji od dve tabele, jedne sa
ulazom za svaku funkcionalnu jedinicu i druge sa ulazom za svaki registar.
Svaki ulaz za funkcionalnu jedinicu pokazuje da li postoji instrukcija koja
eka za funkcionalnu jedinicu i koja je to instrukcija. Ulaz takoe pokazuje
koji su registri rezervisani od te funkcionalne jedinice za ulaz i da li su
registri trenutno raspoloivi za tu instrukciju. Svaki registarski ulaz kae
koja funkcionalna jedinica je rezervisala taj registar kao izlaz, ako ima
takvih. Kako se donosi svaka nova instrukcija, uslovi u trenutku izdavanja
se postavljaju na semaforu. Ako se ne zahteva ekanje, izvrenje instrukcije
poinje odmah, pod kontrolom funkcionalne jedinice. Ako se zahteva ekanje (na primer, ulazni operand jo nije raspoloiv u registarskoj datoteci),
semafor upravlja zadravanjem i, kada je funkcionalna jedinica spremna,
dozvoljava joj da pone svoje izvrenje.
Sa take gledita instrukcije, izvrenje se odvija na sledei nain
[THOR70]:
1. Proverava se raspoloivost funkcionalne jedinice i registra rezultata.
Ako je bilo koje od ta dva rezervisano, instrukcija se ne izdaje dok rezervisani resursi ne postanu raspoloivi. To je hazard resursa ili WAW
hazard, zavisno od toga gde je dolo do konflikta. Nove rezervacije se
zaustavljaju. Evo primera konflikta funkcionalne jedinice:
R6 R1 + R2
R5 R3 + R4

Obe instrukcije koriste funkcionalnu jedinicu za sabiranje, to je situacija u kojoj druga instrukcija mora da eka dok se prva instrukcija
kompletira na toj funkcionalnoj jedinici. Meutim, ako postoji vie sabirakih jedinica, instrukcije mogu da nastave paralelno. Evo primera
konflikta na registru rezultata:
R6 R1 + R2
R6 R4 R5

Obe instrukcije pozivaju registar R6 za rezultat, pa zato druga instrukcija mora da eka dok se prva ne kompletira.

I - 24Dodatak I / Jo o protonoj obradi instrukcija


2. Unose se rezervacije za funkcionalnu jedinicu i registar rezultata. Ako
su jedan ili oba izvorna registra rezervisani, instrukcija ne moe da se
izda, ali maina moe da nastavi sa unoenjem rezervacija. To je RAW
hazard. Na primer:
R6 R1 / R2
I 26
R7 R5 + R6 (konflikt na ovoj instrukciji)
R3 R2 R4 (ova instrukcija moe da se izvri)

Druga instrukcija je izdata, ali se zadrava u jedinici za delenje dok R6


ne bude spreman.

3. Kada izvorni registri sadre validne podatke, itaju se podaci i izdaje


instrukcija funkcionalnoj jedinici. Funkcionalna jedinica sada izvrava
instrukciju pod lokalnim upravljanjem.
4. Kada funkcionalna jedinica kompletira instrukciju, ona proverava da
li moe da upie svoj izlaz u registar rezultata (to je nemogue ako je
registar rezervisan kao izvor od strane druge funkcionalne jedinice, a
ta funkcionalna jedinica ga je ve oznaila kao raspoloiv, to je WAR
hazard). Na primer:
R3 R1 / R2
R5 R4 R3 (RAW konflikt na R3)
R4 R0 + R6 (WAR konflikt na R4)

U ovom primeru, WAR konflikt na R4 je direktan rezultat RAW konflikta na R3. S obzirom na to da se instrukcije izdaju u susednim ciklusima i da je funkcija sabiranja mnogo bra od delenja ili mnoenja,
sabiranje je obavljeno i spremno za ulaz u registar rezultata R4 pre
poetka mnoenja. RAF konflikt na R3 prouzrokuje da se mnoenje
zadrava dok ulazni operand ne postane spreman. To zadrava i ulaz
R4 u jedinicu za mnoenje. WAR konflikti se razreavaju zadravanjem
rezultata u funkcionalnoj jedinici dok registar ne postane raspoloiv.

Upravljanje pomou semafora na taj nain usmerava funkcionalnu jedinicu u zapoinjanju, dobijanju operanada i skladitenju rezultata. Svaka
jedinica, jednom kada pone, nastavlja nezavisno sve dok se ne proizvede
rezultat. Jedinica onda alje signal semaforu, zahtevajui dozvolu da izda
svoje rezultate registru rezultata. Semafor odreuje kada je putanja do regi-

Dodatak I / Jo o protonoj obradi instrukcijaI

- 25

stra rezultata slobodna i signalizira jedinici koja je to zahtevala da izda svoj


rezultat. Rezervacije te jedinice se onda oslobaaju i svim jedinicama koje
ekaju na rezultat se signalizira da taj rezultat proitaju radi obavljanja svojih sopstvenih izraunavanja.

Primer semafora
Sada predstavljamo primer prilagoen na osnovu [SMIT89]. Pretpostavite organizaciju protone obrade sa tri stepena izvrenja. Razmotrite
sledei deo programa:
R1 (Y) Napuni registar R1 iz memorijske lokacije Y
R2 (Z) Napuni registar R2 iz memorijske lokacije Z
R3 R1 +f R2 Saberi u pokr.zarezu R1 i R2; stavi u R3
(X) R3 Stavi rezultat u memorijsku lokaciju X
R4 (B) Napuni registar R4 iz memorijske lokacije B
R5 (C) Napuni registar R5 iz memorijske lokacije C
R6 R4 *f R5 Pomnoi u pokr.zarezu R4 i R5; stavi u R6
(A) R6 Stavi rezultat u memorijsku lokaciju A
Na slici I.13a prikazana je direktna implementacija protone obrade
koja ne pretpostavlja nikakve paralelne jedinice za izvrenje i nikakve pokuaje da se zaobiu hazardi. Na dijagramu se preprostavlja da instrukcije
za uitavanje i upisivanje uzimaju po tri ciklusa izvrenja, kao i instrukcije
za mnoenje i sabiranje. Na slici I.13b prikazan je rezultat rasporeivanja
instrukcija u vreme kompilacije. Sa prikladno preureenim instrukcijama,
tedi se est ciklusa generatora takta. Najzad, na slici I.13c prikazan je rezultat korienja hardverskog semafora umesto kompajlera da bi se poboljala
performansa. U ovom primeru, tede se 4 ciklusa u poreenju sa originalnom protonom obradom.

I - 26Dodatak I / Jo o protonoj obradi instrukcija

(a) Izdavanje instrukcija u redosledu

(b) Preureivanje izdavanja instrukcija

(c) Hardverski semafor za dinamiko rasporeivanje instrukcija

Slika I.13 Primer izvravanja protone obrade


Slika I.13 Primer izvravanja protone obrade
I - 29

Dodatak I / Jo o protonoj obradi instrukcijaI

- 27

Reference
DAVI71 Davidson, E. The Design and Control of Pipelined Function
Generators, Proceedings, IEEE Conference on Systems, Networks,
andComputers, January 1971.
DAVI75 Davidson, E.; Thomas, A.; Shar, L.; and Patel, J. Effective
Control for Pipelined Processors, IEEE COMPCON, March 1975.
HWAN93 Hwang, K. Advanced Computer Architecture. New York:
McGraw-Hill, 1993.
PATE76 Patel, J., and Davidson, E. Improving the Throughput of a
Pipeline by Insertion of Delays. Proceedings of the 3rd Annual
Symposium on Computer Architecture, 1976.
SHEN05 Shen, J., and Lipasti, M. Modern Processor Design: Fundamentals
of Superscalar Processors. New York: McGraw-Hill, 2005.
SMIT88 Smith, J., and Pleszcun, A. Implementing Precise Interrupts in
Pipelined Processors. IEEE Transactions on Computers, May 1988.
SMIT89 Smith, J. Dynamic Instruction Scheduling and the Astronautics
ZS-1. Computer, July 1989.
STON93 Stone, H. High-Performance Computer Architecture. Reading,
MA: Addison-Wesley, 1993.
THOR64 Thornton, J. Parallel Operation in the Control Data 6600.
Proceedings of the Fall Joint Computer Conference, 1964.
THOR70 Thornton, J. The Design of a Computer: The Control Data 6600.
Glenville, IL: Scott, Foreman, and Company, 1970.
THOR80 Thornton, J. The CDC 6600 Project. Annals of the History of
Computing, October 1980.
TOMA67 Tomasulo, R. An Efficient Algorithm for Exploiting Multiple
Arithmetic Units. IBM Journal, January 1967.D 8

Dodatak J
Tehnologija LTO

William Stallings
J.1 GENERACIJE LTO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

ip kertrid memorije . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Kompresija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
WORM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
ifrovanje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
J.2 FORMAT LTO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
J.3 RAD LTO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

Dopuna knjige
Organizacija i arhitektura raunara
Prevod devetog izdanja
CET 2012. god.
ISBN: 978-86-7991-361-6

Prevod sa engleskog: Dr Radomir Jankovi

CET

J - 2Dodatak J / Tehnologija LTO


LTO je standard digitalne trake podataka koji su razvili Hewlett-Packard, IBM i Quantum kao standard otvorenog formata. Otvoreni format
znai da e korisnici imati vie izvora proizvoda i medijuma. Otvorena priroda tehnologije LTO takoe obezbeuje nain za omoguavanje kompatibilnosti izmeu ponuda razliitih dobavljaa. Konzorcijum LTO koristi
termin Ultrium da se pozove na implementaciju LTO. Format Ultrium je
implementacija velikog kapaciteta tehnologije LTO.
Traka LTO dolazi u zatopljenom kertridu. Kertri je sa jednim kalemom, to znai da je cela traka namotana oko jednog kalema kada kertrid nije unesen u ureaj trake. Za vreme procesa unoenja, uvlaka zakai
vodei kraj trake i provue ga kroz pogon trake i kalem maine. Za vreme
procesa itanja/upisivanja, traka je smetena na kalemu maine i u kertridu.

J.1GENERACIJE LTO
Do sada je definisano est generacija LTO, od kojih su etiri implementirane u vreme pisanja ovog teksta. Tabela J.1 ponavlja tabelu 6.7. Na
slici J.1 ilustrovane su razlike izmeu generacija (vertikalne skale su logaritamske). Zapazite da svaka sledea generacija LTO ima dvostruko vei
kapacitet od prethodne, sa izuzetkom velikog skoka od LTO-5 na LTO-6.
Meutim, brzina prenosa podataka ne raste tako naglo. LTO-2 ima dvostruku brzinu prenosa LTO-1; LTO-3 ima dvostruku brzinu prenosa LTO-2.
Za sledee generacije, brzina prenosa se poveava faktorom od 1,5 od jedne
do druge generacije.

Dodatak J / Tehnologija LTOJ

Tabela J.1 Ureaji trake LTO

-3

Tabela J.1 Ureaji trake LTO


LTO-1

LTO-2

LTO-3

LTO-4

LTO-5

LTO-6

LTO-7

LTO-8

Datum izlaenja

2000

2003

2005

2007

2010

TBA

TBA

TBA

Komprimovani
kapacitet

200 GB

400 GB

800 GB

1600 GB

3.2 TB

8 TB

16 TB

32 TB

Komprimovana
brzina prenosa
(MB/s)

40 MB/s 80 MB/s 160 MB/s 240 MB/s 280 MB/s 525 MB/s 788 MB/s 1.18 GB/s

Linearna
gustina
(bit/mm)

4880

7398

9638

13250

15142

Staza trake

384

512

704

896

1280

Duina trake

609 m

609 m

680 m

820 m

846 m

irina trake
(cm)

1,27

1,27

1,27

1,27

1,27

16

16

16

WORM?

Ne

Ne

Da

Da

Da

Da

Da

Da

ifrovanje
Capable?

Ne

Ne

Ne

Da

Da

Da

Da

Da

Partitioning?

Ne

Ne

Ne

Ne

Da

Da

Da

Da

Upisni elementi

J -3

J - 4Dodatak J / Tehnologija LTO

Brzina prenosa

Kapacitet

CM = kertrid memorija

CM ip
CM ip
CM ip
CM ip
CM ip
CM ip
CM ip
CM ip
Kompresija Kompresija Kompresija Kompresija Kompresija Kompresija Kompresija Kompresija
WORM
WORM
WORM
WORM
WORM
WORM
ifrovanje ifrovanje ifrovanje ifrovanje ifrovanje

Slika J.1 Generacije LTO

Slika J.1 Generacije LTO


J4

Dodatak J / Tehnologija LTOJ

-5

ip kertrid memorije (CM)


Svaki ketrid LTO trake ima CM ip koji je serijska EEPROM memorija (elektronski izbrisiva programabilna ROM memorija) koja ima podruja i samo za itanje i ono u koje se moe prepisivati. CM ip sadri
informacije o kertridu i traci (kao to je naziv proizvoaa trake), kao i
statistike informacije o upotrebi kertrida. LTO-CM takoe pomae da se
odredi pouzdanost kertrida uvanjem podataka o njegovoj starosti, koliko
puta je bio uitan i koliko greaka se vremenom nakupilo. Kad god se traka
izvadi iz raunara, ureaj upisuje svaku informaciju od znaaja u memoriju
kertrida.

Kompresija
Da bi se poveala gustina podataka, LTO sistemi koriste algoritam za
njihovu kompresiju koji je poznat kao kompresija toka podataka bez gubitaka (SLDC, engl. streaming lossless data compression). Taj algoritam je
kao standard odobrila meunarodna organizacija za standarde Ecma International [ECMA01].
U sutini, algoritam SLDC trai ponavljajue nizove od dva ili vie bajtova podataka. Informacije od duini (broj bajtova) i poziciji (pomeraj do
1023 pozicija bajtova) prvog takvog niza zamenjuju mesto sa narednom
kopijom ili kopijama istog takvog niza. Iznos kompresije je stoga veoma
promenljiv i zavisi od proriode podataka koji treba da se komprimuju.

WORM
Poevi od specifikacije LTO-3, LTO podrava opciju kertrida u koji se
upisuje jednom a ita mnogo puta (WORM, engl. Write Once Read Many).
Opciju WORM implementiraju algoritmi koji koriste informacije smetene
u LTO CM i koje su zapisane na medijumu traki u vreme proizvodnje.
Posebno,ROM deo CM ukljuuje oznaku koja pokazuje da je u pitanju
WORM kertrid. Servo uzorak, koji se kasnije opisuje, zapisan du celog
medijuma magnetne trake, sadri poseban indikator u Servo Manufacturer Word8 koji pokazuje da je medijum WORM tipa. U optim crtama,
WORM radi na sledei nain:

J - 6Dodatak J / Tehnologija LTO


Initializacija: Neka identifikujua informacija stavlja se na poetak
trake, iza koje neposredno sledi oznaka kraja podataka (EOD).
Upisivanje: Jednom kada je LTO Ultrim ureaj ustanovio da je kertrid WORM, ureaj ne dozvoljava da se upisuju podaci pre lokacije
EOD na medijumu trake. Ta funkcionalnost uva sve prethodno upisane podatke tako da se preko njih ne moe prepisivati i da se ne
mogu brisati. Pre nego to zapone komandu upisivanja, ureaj LTO
Ultrium magnetne trake odreuje da je trenutna logika pozicija na
EOD. Novi EOD se upisuje na kraju svake sesije upisivanja. Svaki
EOD skup podataka sadri kopiju kertrid memorije LTO Ultrium
trake, koja ukljuuje identifikatore tipa WORM kertrida i tipa formata, u vreme kada je stvoren EOD.
itanje: Za vreme procesa itanja, ureaj poredi informacije uskladitene sa svakim skupom podataka, sa informacijama u CM, da bi
otkrio bilo kakvu greku u podacima.

ifrovanje
Poevi od LTO-4, LTO ukljuuje sposobnost ifrovanja koja koristi
standard AES (engl. Advanced Encryption Standard). LTO je opciona hardverska osobina implemetirana u ureaju trake. Ureaju moraju da se predstave kljuevi iz spoljanjeg sistema za upravljanje kljuevima. Upravljanje
kljuevima nije deo specifikacije LTO.

Dodatak J / Tehnologija LTOJ

-7

Pravac kretanja trake


Zatitna
traka

Traka podataka 3

Traka podataka 1
Prethodno
upisane
servo
trake
Traka podataka 0

Traka podataka 2

Osmoelementna
komponenta
glave za
itanje/upis

Zatitna
traka

Slika J.2 Format LTO trake

Slika J.2 Format LTO trake

J.2 FORMAT LTO


J.2 FORMAT LTO

Na slici J.2 ilustrovan je format trake LTO. Na slici se vidi cela irina
trake i deo njene duine. irina je podeljenja na sledee oblasti:

Na slici J.2 ilustrovan je format trake LTO. Na slici se vidi cela irina trake i deo
njene duine. irina je podeljenja na sledee oblasti:

Zatitne trake: One ograniavaju gornju i donju ivicu trake. U te


trake se ne upisuju nikakvi podaci.
7
Trake podataka: Cela traka Jobuhvata
etiri trake za podatke. Glava
za itanje/upisivanje obuhvata jednu traku. Prilikom upisivanja,

J - 8Dodatak J / Tehnologija LTO


trake se pune sekvencijalno, poevi od trake 0, a zatim trake 1, 2 i
3. Svaka traka se sastoji od izvesnog broja staza, gde je svaka staza
irine jednog bita.
Servo trake: Servo trake daju glavi informacije o lokaciji dok ona
upisuje i verifikuje staze sa podacima unutar te trake. Proces pozicioniranja glave na traci je interakcija izmeu glave, medijuma i servo
elemenata sistema. Servo trake omoguavaju tano pozicioniranje
glave ureaja trake preko staze sa podacima, osiguravajui da glava
ne skrene na susednu stazu. One su potrebne da bi podrale velike
gustine podataka na traci, gde su staze izuzetno blizu jedna drugoj.
Servo trake se upisuju prilikom proizvodnje kertrida, pre nego to
on postane upotrebljiv za smetanje i izvlaenje podataka.
Postoji jedna glava za itanje/upisivanje koja moe da ita ili upisuje 8
bitova istovremeno, koristei 8 glava za itanje ili upisivanje postavljenih
preko 8 staza. Glava se prostire preko jedne trake i, koristei vodee oznake
na servo traci, moe da se postavi preko razliitik skupova staza unutar
trake.

Slika J.3 Deo trake podataka koji pokazuje sekvencu upisivanja LTO-1
Dodatak J / Tehnologija LTOJ

baferi pravca

(razdvajaju staze upisane


u razliitim pravcima)

-9

kretanje trake unapred


(od poetka ka kraju trake)

grupa staza koju


je upisao jedan
od 8 elemenata
za upis

grupa staza koju


je upisao susedni
element za upis

Slika J.3 Deo trake podataka koji pokazuje sekvencu upisivanja LTO-1

J.3 RAD LTO

J.3svakRAD
Unutar
trake,LTO
svaki element za upisivanje upisuje izvestan broj susednih staza
naprednazad na nain koji se zove serpentina. Na slici J.3 ilustrovan je proces za

Unutar svak trake, svaki element za upisivanje upisuje izvestan broj


susednih
naprednazad
naupisuje
nain 12
kojistaza
se zove
serpentina.
Na Brojevi
slici J.3na
LTO-1. Svakistaza
element
za upisivanje
unutar
svake trake.
ilustrovan je proces za LTO-1. Svaki element za upisivanje upisuje 12 staza
sliciunutar
pokazuju
redosled
kome se
pretanja
svake
trake.uBrojevi
nastaze
slici upisuju,
pokazujua strelice
redosledpokazuju
u kome pravac
se staze
upisuju, a strelice pokazuju pravac pretanja trake.
trake.
Mehanizam ureaja izvrava vie prolaza od poetka trake do njenog
J9
kraja i natrag da bi proitao ili upisao pun kapacitet kertrida. Prilikom

J - 10Dodatak J / Tehnologija LTO


jednog potpunog prelaska du trake i natrag, osam staza se itaju ili u njih
upisuje, konkurentno. Na kraju trake poinje drugi prolaz.
Na slici J.3 prikazan je rad dva elementa za upisivanje. Za LTO-1 i LTO2, postoji 8 elemenata za upis u glavi. Oni rade paralelno da bi prenosili
po jedan bajt podataka odjednom. Prema tome, 8 bitova svakog bajta koji
su uskladiteni na traci su u 8 posebnih staza na jednoj traci. Pored toga,
8 staza upotrebljenih za smetanje jednog bajta odjednom su razdvojene
jedna od druge na nain prikazan na slici. Grupa staza u koje se konkurentno zapisuje u fizikom pravcu napred ili nazad zove se omot (engl. wrap).
Omoti u koje se zapisuje dok se traka kree od svog po etka ka kraju su
omoti unapred; omoti u koje se zapisuje dok se traka kree od svog kraja ka
poetku su omoti unatrag.
Prostor izmeu staza upisanih u suprotnim pravcima zove se bafer
pravca. Taj prostor je namenjen da svede na najmanju meru magnetsku
interferenciju izmeu staza upisanih u suprotnim pravcima (interferenca
presluavanja).

Reference
ECMA01 Ecma, International. Streaming Lossless Data
CompressionAlgorithm. Standard ECMA-321, June 2001.
http://www.ecmainternational.

Dodatak K
DDR SRAM

William Stallings

Dopuna knjige
Organizacija i arhitektura raunara
Prevod devetog izdanja
CET 2012. god.
ISBN: 978-86-7991-361-6

Prevod sa engleskog: Dr Radomir Jankovi

CET

K - 2Dodatak K / DDR SRAM


Sinhrona dinamika RAM memorija sa dvostrukom brzinom podataka,
DDR SDRAM, predstavljena je u poglavlju 5. Kljuno svojstvo DDR SDRAM
je to to je prenos podataka sinhronizovan i sa prednjom i sa zadnjom ivicom signala generatora takta. Na slici K.1 daje se predstava o tome kako radi
DDR, poreenjem prve dve generacije DDR (DDR1 i DDR2) sa brzinom
obinog sinhronog prenosa podataka SDRAM memorije.
DDR1 koristi 2-bitni bafer za pretprihvat, tako da moe da radi sa dvostrukom brzinom podataka u odnosu na SDRAM sa jednostrukom brzinom podataka (SDR) uz istu frekvenciju ipa. DDR2 to udvostruava na
4-bitni bafer za pretprihvat i takoe udvostruava frekvenciju generatora
takta za prenos iz bafera na magistralu podataka. To omoguava udvostruavanje brzine podataka u odnosu na DDR1. Slino tome, DDR3 koristi
i 8-bitni bafer za pretprihvat i viu frekvenciju generatora takta, da bi se
dobila jo vea brzina podataka.
U tabeli K.1 uporeene su osnovne karakteristike razliiltih generacija
DDR.
Tabela K.1 Karakteristike DDR
DDR1

DDR2

DDR3

Nivo napona (V)

2,5

1,8

1,5

Brzina podataka
eone magistrale
(Mb/s)

200, 266, 333,


400

400, 533, 677,


800

800, 1066, 1330,


1600

Bafer za pretprihvat
(bitovi)

Dodatak K / DDR SRAMK

-3

Frekvencija jezgra DRAM Frekvencija generatora Brzina magistrale


podataka 400 MHz
100 MHz
takta 200 MHz

DDR2
SDRAM

Matrica
memorijskih elija

U/I
bafer

Frekvencija jezgra DRAM Frekvencija generatora Brzina magistrale


podataka 200 MHz
100 MHz
takta 100 MHz

DDR1
SDRAM

Matrica
memorijskih elija

U/I
bafer

Frekvencija jezgra DRAM Frekvencija generatora Brzina magistrale


podataka 100 MHz
100 MHz
takta 100 MHz

SDR
SDRAM

Matrica
memorijskih elija

U/I
bafer

Slika K.1 Poreenje DDR1 i DDR2

Slika K.1 Poreenje DDR1 i DDR2

Dodatak L
Protokoli i arhitekture protokola

William Stallings
L.1 UVOD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
L.2 ARHITEKTURA PROTOKOLA TCP/IP . . . . . . . . . . . . . . . . . 6
Slojevi TCP/IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
TCP/IP i UDP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Rad TCP/IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Aplikacije TCP/IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
L.3 ULOGA INTERNET PROTOKOLA . . . . . . . . . . . . . . . . . . . 17
L.4 IPv4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
L.5 IPv6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Zaglavlje IPv6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Zaglavlja proirenja IPv6 . . . . . . . . . . . . . . . . . . . . . . . . . . 24
L.6 ARHITEKTURA PROTOKOLA OSI . . . . . . . . . . . . . . . . . . . 29

Dopuna knjige
Organizacija i arhitektura raunara
Prevod devetog izdanja
CET 2012. god.
ISBN: 978-86-7991-361-6
Prevod sa engleskog: Dr Radomir Jankovi

CET

L - 2Dodatak L / Protokoli i arhitekture protokola


U ovom dodatku daje se pregled dve najee koriene arhitekture protokola.

L.1UVOD
Kada raunari, terminali i/ili drugi ureaji za obradu podataka razmenjuju podatke, procedure koje se primenjuju mogu da budu prilino sloene. Zamislite, na primer, prenos datoteke izmeu dva raunara. Mora
da postoji putanja podataka izmeu dva raunara, direktna ili preko komunikacione mree. Ali to nije sve. Tipini zadaci koji moraju da se obave
ukljuuju sledee:
1. Izvorni sistem mora ili da aktivira direktnu komunikacionu putanju
podataka, ili da obavesti komunikacionu mreu o identitetu eljenog
odredinog sistema.
2. Izvorni sistem mora da sazna da li je odredini sistem spreman da primi
podatke.
3. Aplikacija za prenos datoteka na izvornom sistemu mora da sazna da
je program za upravljanje datotekama na odredinom sistemu spreman
da prihvati i uskladiti datoteku za tog posebnog korisnika.
4. Ako formati datoteka ili predstavljanja podataka na dva sistema nisu
kompatibilni, jedan ili drugi sistem mora da izvri funkciju prevoenja
formata.
Razmena informacija izmeu raunara u svrhu kooperativne akcije
uobiajeno se zove komunikacija raunara. Slino tome, kada su dva ili vie
raunara meusobno povezani preko komunikacione mree, skup takvih
raunara zove se raunarska mrea. S obzirom da to da se slian nivo saradnje zahteva i izmeu terminala i raunara, ti termini se esto koriste kada
su neki od komunicirajuih entiteta terminali.

Dodatak L / Protokoli i arhitekture protokolaL

-3

Prilikom raspravljanja o raunarskim komunikacijama i mreama raunara, dva glavna koncepta su:
Protokoli;
Arhitektura raunarskih komunikacija, ili arhitektura protokola.
Protokol se koristi za komunikaciju izmeu entiteta u razliitim sistemima. Termini entitet i sistem upotrebljavaju se u veoma optem smislu. Primeri entiteta su korisniki aplikacioni programi, paketi za prenos datoteka,
sistemi za upravljanje bazama podataka, sredstva za elektronsku potu i terminali. Primeri sistema su raunari, terminali i udaljeni senzori. Zapazite
da su u nekim sluajevima entitet i sistem u kome se on nalazi koegzistivni
(na primer terminali). U optem sluaju, entitet je bilo ta to je sposobno
da predaje ili prima informacije, a sistem je fiziki poseban objekt koji
sadri jedan ili vie entiteta. Da bi dva entiteta mogli uspeno da komuniciraju, oni moraju da govore istim jezikom. Ono to se komunicira, kako se
komunicira i kada se komunicira, mora da je u saglasnosti sa meusobno
usaglaenim dogovorima entiteta na koje se odnosi. Ti dogovori su protokol, koji se moe definisati kao skup pravila kojima se upravlja razmenom
podataka izmeu dva entiteta. Kljuni elementi protokola su:

Sintaksa: Obuhvata stvari kao to su format podataka i nivoi signala.


Semantika: Ukljuuje upravljanje informacijama za koordinaciju i
postupak sa grekama.
Vremensko usklaivanje: Ukljuuje podeavanje brzine i sekvenciranje.

L - 4Dodatak L / Protokoli i arhitekture protokola


Raunar Y
Aplikacija
prenosa
datoteka

Datoteke i komande za prenos datoteka

Aplikacija
prenosa
datoteka

Modul za
komunikacione
usluge

Poruke u vezi sa komunikacijama

Modul za
komunikacione
usluge

Modul za
pristup mrei

Logika
mrenog
interfejsa

Komunikaciona
mrea

Logika
mrenog
interfejsa

Modul za
pristup mrei

Slika L.1 Pojednostavljena arhitektura za prenos datoteka

Slika L.1 Pojednostavljena arhitektura za prenos datoteka


Sad kad smo objasnili ta je protokol, moemo da uvedemo i koncept
arhitekture
protokola.
Jasno
mora damoemo
postoji visok
stepen saradnje
Sad kad smo
objasnili
tajejedaprotokol,
da uvedemo
i koncept
izmeu
dva
raunarska
sistema.
Umesto
da
se
logika
za
to
implementira
arhitekture protokola. Jasno je da mora da postoji visok stepen saradnje izmeu
kao jedan modul, zadatak se razbija na podzadatke, od kojih se svaki impledva raunarska
sistema.Kao
Umesto
da senalogika
jedan
mentira posebno.
primer,
slici za
L.1toseimplementira
nagovetavakao
nain
namodul,
koji
bi sese mogao
za se
prenos
Upotrebljena
zadatak
razbija implementirati
na podzadatke, ureaj
od kojih
svakidatoteka.
implementira
posebno. su
Kao
tri na
modula.
Zadaci
3 i 4 sa prethodno
navedene
liste implementirati
izvode se pomou
primer,
slici L.1
se nagovetava
nain na koji
bi se mogao
ureaj
modula za prenos datoteka. Dva modula na dva sistema razmenjuju datoza prenos
su tri modula.
3 i 4 sazaprethodno
navedene
teke i datoteka.
komande.Upotrebljena
Meutim, umesto
zahteva Zadaci
da se moduli
prenos datoteka
liste bave
izvode
se pomou
modula
za prenos
datoteka.
Dva modula
na modula
dva sistema
detaljima
stvarnog
prenoenja
podataka
i komandi,
svaki od
za
prenos datoteke
datotekaioslanja
se na
modul za
komunikacione
Tajza
modul
razmenjuju
komande.
Meutim,
umesto
zahteva da usluge.
se moduli
prenos
je odgovoran za obezbeivanje da se komande za prenos datoteka i podadatoteka bave detaljima stvarnog prenoenja podataka i komandi, svaki od modula
taka pouzdano razmenjuju izmeu sistema. Nain na koji radi modul za
za prenos
datoteka oslanja
se na modul
za ukomunikacione
komunikacione
usluge istrauje
se dalje
tekstu. Izmeuusluge.
ostalog,Taj
taj modul
modul je
bi obavljao
i zadatak 2. Najzad,
izmeu
dva modula
za
odgovoran
za obezbeivanje
da se priroda
komanderazmene
za prenos
datoteka
i podataka
komunikacione usluge nezavisna je od prirode mree koja ih meusobno
pouzdano razmenjuju izmeu sistema. Nain na koji radi modul za komunikacione
povezuje. Zato, umesto da se detalji mrenog interfejsa ugrade u modul za
usluge istrauje se dalje u tekstu. Izmeu ostalog, taj modul bi obavljao i zadatak 2.
Najzad, priroda razmene izmeu dva modula za komunikacione usluge nezavisna je
L4

Dodatak L / Protokoli i arhitekture protokolaL

-5

komunikacionu uslugu, ima smisla da postoji trei modul, modul za pristup


mrei, koji izvodi zadatak 1 u interakciji sa mreom.
Da rezimiramo, modul za prenos datoteka sadri svu logiku koja je
jedinstvena za aplikaciju prenosa datoteka, kao to je prenoenje lozinki,
komandi datoteka i zapisa datoteka. Te datoteke i komande moraju pouzdano da se prenesu. Meutim, neke vrste zahteva za pouzdanou bitne su
za razne aplikacije (na primer, za elektronsku potu ili prenos dokumenata).
Zato se ti zahtevi ispunjavaju pomou posebnog modula za komunikacione
usluge koga mogu da koriste razne aplikacije. Modul za komunikacione
usluge bavi se obezbeivanjem da dva raunarska sistema budu aktivna i
spremna za prenos podataka, kao i voenjem rauna o podacima koji se
razmenjuju kako bi se osigurala njihova isporuka. Meutim, ti zadaci su
nezavisni od vrste mree koja se koristi. Zato se logika za stvarno bavljenje
mreom stavlja u poseban modul za pristup mrei. Ako se mrea koja treba
da se koristi promeni, to utie samo na modul za pristup mrei.
Prema tome, umesto jednog modula za izvoenje komunikacija, postoji
strukturirani skup modula koji implementira funkciju komunikacije. Ta
struktura se zove arhitektura protokola. Jedna analogija bi ovde mogla biti
od koristi. Pretpostavite da direktor u kancelariji X eli da poalje dokument direktoru u kancelariji Y. Direktor u X priprema dokument i moda
mu dodaje beleku. To odgovara akcijama aplikacije prenosa datoteka na
slici L.1. Posle toga, direktor u X uruuje dokument sekretaru ili administrativnom asistentu (AA). AA u X stavlja dokument u koverat i na njega
stavlja adresu Y i povratnu adresu X. Koverat se moda takoe oznaava
sa poverljivo. Akcije AA odgovaraju modulu za komunikacione usluge na
slici L.1. AA u X zatim predaje paket odelenju za isporuke. Neko u odelenju
za isporuke odluuje kako da poalje paket: potom, UPS-om ili ekspresnim
kurirom. Odelenje za isporuku dodaje odgovarajue potanske ili isporune
dokumente paketu i isporuuje ga. Odelenje za isporuku odgovara modulu
za pristup mrei na slici L.1. Kada paket stigne u Y, dolazi do slinog skupa

L - 6Dodatak L / Protokoli i arhitekture protokola


akcija. Odelenje za isporuku Z prima paket i isporuuje ga odgovarajuem
AA ili sekretaru, na osnovu imena na paketu. AA otvara paket i daje priloeni dokument direktoru na koga je taj dokument adresiran.

L.2ARHITEKTURA PROTOKOLA TCP/IP


TCP/IP je rezultat istraivanja i razvoja protokola na eksperimentalnoj mrei sa komutacijom paketa ARPANET, koju je osnovala agencija
DARPA (Defense Advanced Research Projects Agency), i koji se obino zove
niz protokola TCP/IP. Taj niz protokola sastoji se od velike zbirke protokola
koji su izdati kao Internet standardi od strane odbora IAB (Internet Activities Board). U dokumentu na veb stranici ove knjige nalazi se rasprava o
Internet standardima.
Slojevi TCP/IP
U optim crtama, za komunikacije se moe rei da obuhvataju tri inioca: aplikacije, raunare i mree. Primere aplikacijapredstavljauju prenos
datoteka i elektronska pota. Aplikacije kojima se ovde bavimo su distribuirane i obuhvataju razmenu podataka izmeu dva raunarska sistema.
Te aplikacije, kao i druge, izvravaju se na raunarima koji esto mogu da
podravaju vie simultanih aplikacija.
L6

Dodatak L / Protokoli i arhitekture protokolaL

-7

Raunari su prikljueni na mree i podaci koji treba da se razmenjuju


prenose se pomou mrea sa jednog raunara na drugi. Prema tome, prenos podataka sa jedne aplikacije na drugu obuhvata najpre dobijanje podataka na raunaru na kome se nalazi aplikacija, a zatim dobijanje podataka
na nameravanoj aplikaciji unutar raunara.
Ne postoji zvanini model protokola TCP/IP. Meutim, zasnovano na
razvijenim standardima protokola, moemo organizovati komunikacioni
zadatak za TCP/IP u pet relativno nezavisnih slojeva, odozdo na gore:

Fiziki sloj
Sloj za pristup mrei
Internet sloj
Transportni, ili sloj od hosta-do-hosta
Aplikacioni sloj
Fiziki sloj obuhvata fiziki interfejs izmeu ureaja za predaju podataka (na primer, radna stanica, raunar) i prenosnog medijuma ili mree.
Taj sloj se bavi specificiranjem karakteristika prenosnog medijuma, prirodom signala, brzinom podataka i slinim stvarima.
Sloj za pristup mrei bavi se razmenom podataka izmeu krajnjeg
sistema (server, radna stanica, itd.) i mree na koju je on prikljuen. Raunar koji alje mora da obezbedi mrei adresu odredinog raunara, tako da
mrea moe da usmeri podatke na odgovarajue odredite. Raunar koji
alje moe da poziva izvesne usluge, kao to je na primer prioritet, koje
moe da obezbedi mrea. Specifian softver koji se koristi u ovom sloju
zavisi od vrste mree koja se koristi; razvijeni su razliiti standardi za komutaciju kola, komutaciju paketa (na primer, prenos okvira), LAN-ove (na
primer Ethernet) i mnogi drugi.

L - 8Dodatak L / Protokoli i arhitekture protokola


Prema tome, ima smisla razdvojiti te funkcije koje treba da se bave pristupom mrei u poseban sloj. Kada se tako postupi, ostatak komunikacionog softvera, iznad sloja za pristup mrei, ne treba da se bavi posebnostima
mree koja se koristi. Isti softver vieg nivoa radi kako treba, bez obzira na
posebnu mreu na koju je raunar prikljuen.
Sloj za pristup mrei bavi se pristupom i usmeravanjem podataka preko
mree za dva sistema koji su prikljueni na istu mreu. U sluajevima kada
su dva ureaja prikljuena na razliite mree, potrebne su procedure da bi
se podacima dozvolilo da prelaze preko vie meusobno povezanih mrea.
To je funkcija internet sloja. Da bi se obezbedila funkcija rutiranja preko
vie mrea, u ovom sloju se koristi Internet Protokol (IP). Ovaj protokol se
implementira ne samo na krajnjim sistemima, nego i na ruterima. Ruter
je procesor koji povezuje dve mree i ija glavna funkcija jeste da prenosi
podatke sa jedne mree na drugu, po ruti od izvornog do odredinog krajnjeg sistema.
Bez obzira na prirodu aplikacija koje razmenjuju podatke, obino
postoji zahtev da se ti podaci pouzdano razmenjuju. To znai, eleli bismo
da se obezbedi da svi podaci stignu na odredinu aplikaciju, kao i to da
podaci stignu u istom redosledu u kome su bili poslati.
Kao to emo videti, mehanizmi za obezbeivanje pouzdanosti su u
sutini nezavisni od prirode aplikacija. Prema tome, ima smisla da se ti
mehanizmi prikupe u zajednikom sloju koji dele sve aplikacije; to se zove
sloj od-hosta-do-hosta, ili transportni sloj. Protokol TCP (Transmission Control Protocol) jeste najee upotrebljavani protokol da bi se obezbedila ova
funkcionalnost.
Najzad, aplikacioni sloj sadri logiku koja je potrebna da se podre
razliite korisnike aplikacije. Za svaki razliit tip aplikacije, kao to je prenos datoteka, potreban je poseban modul koji odgovara toj aplikaciji.

Dodatak L / Protokoli i arhitekture protokolaL

-9

TCP i UDP
Za veinu aplikacija koje rade kao deo arhitekture protokola TCP/IP,
transportni sloj protokola je TCP. TCP obezbeuje pouzdanu konekciju za
prenos podataka izmeu aplikacija. Konekcija je, jednostavno reeno, privremeno logiko udruivanje dva entiteta u razliitim sistemima. Za vreme
trajanja konekcije svaki entitet vodi rauna o segmentima koji dolaze od
i idu ka drugom entitetu, kako bi se regulisao tok segmenata i preduzele
aktivnosti oporavka zbog izgubljenih ili oteenih segmenata.
Na slici L.2a prikazan je format zaglavlja za TCP, koji je minimalno 20
okteta, ili 160 bitova. Polja za izvorni port i odredini port identifikuju aplikacije na izvornom i odredinom sistemu koje koriste tu konekciju. Polja za
broj sekvence, broj potvrde i okvir obezbeuju upravljanje tokom i kontrolu
greaka. Kontrolni zbir jeste 16-bitni kd zasnovan na sadraju segmenta
koji se koristi da bi se otkrile greke u TCP segmentu.
Pored TCP, postoji jo jedan protokol transportnog nivoa koji je u uobiajenoj upotrebi kao deo niza TCP/IP protokola: UDP (User Datagram
Protocol). UDP ne garantuje isporuku, ouvanje sekvence ili zatitu od
dupliciranja. UDP omoguava procesu da alje poruke drugim procesima
uz minimalan mehanizam protokola. Neke aplikacije orijentisane na transakcije koriste UDP; jedan od takvih primera je SNMP (Simple Network
Management Protocol), standardni protokol za upravljanje mreom u TCP/
IP mreama. Obzirom na to da nema konekcije, UDP ima malo ta da radi.
U sutini, on dodaje IP-u sposobnost adresiranja porta. To se najbolje vidi
kada se ispituje zaglavlje UDP, prikazano na slici L.2b.

L - 10Dodatak L / Protokoli i arhitekture protokola

Izvorni port

Odredini port

20 okteta

Broj sekvence
Broj potvrde
Duina
zaglav.

Rezervisano

Markeri

Okvir

Kontrolni zbir

Pokaziva hitnosti
Opcije + punjenje

8 okteta

(a) Zaglavlje TCP

Izvorni port

Odredini port

Duina segmenta

Kontrolni zbir

(b) Zaglavlje UDP

Slika L.2
L.2 Zaglavlja
TCP
i UDP
Slika
Zaglavlja
TCP
i UDP

TCP/IP
RadRad
TCP/IP
Na sliciNa
L.3slici
prikazano
je kakojesukako
ti protokoli
konfigurisani
za komunikacije.
L.3 prikazano
su ti protokoli
konfigurisani
za komunika-Neka

Neka vrsta
za pristup
kaologika
to je logika
Ethernet,
korivrstacije.
protokola
za protokola
pristup mrei,
kaomrei,
to je
Ethernet,
koristi
se za
sti se za povezivanje raunara sa mreom. Taj protokol omoguava hostu
povezivanje raunara sa mreom. Taj protokol omoguava hostu da alje podatke
da alje podatke preko mree drugom hostu ili, u sluaju hosta na drugoj
preko
mree
hostu
ili, u sluajuu hosta
na drugoj
mrei, kai ruterima.
ruteru. IP se
mrei,
ka drugom
ruteru. IP
se implementira
svim krajnjim
sistemima
On radi kao
prenosilac
kojisistemima
pomera blok
podatakaOn
sa radi
jednog
preko koji
implementira
u svim
krajnjim
i ruterima.
kaohosta,
prenosilac
jednog ili vie rutera do drugog hosta.
pomera blok podataka sa jednog hosta, preko jednog ili vie rutera do drugog hosta.
L 10

Dodatak L / Protokoli i arhitekture protokolaL

Apl.Y

Apl.X

Apl.X

- 11

Apl.Y

Logika konekcija
(TCP konekcija)
Globalna internet
adresa

Mreni pristupni
protokol #1

Mrea 1

Adresa prikljune
take podmree

Ruter J

Fiziki

Logika konekcija
(na pr.virtuelno kolo)

Fiziki

Mreni pristupni
protokol #2

Mrea 2

Slika
TCP/IP
Slika L.3
L.3 Koncepti
Koncepti TCP/IP
TCP se implementira samo na krajnjim sistemima; on vodi rauna o
podataka
kojinasekrajnjim
prenose,sistemima;
da bi obezbedio
se svi ooni
pouzTCPblokovima
se implementira
samo
on vodidarauna
blokovima
dano isporue odgovarajuoj aplikaciji.
podataka koji se prenose, da bi obezbedio da se svi oni pouzdano isporue
Da bi komunikacija bila uspena, svaki entitet u celokupnom sistemu
odgovarajuoj aplikaciji.
mora da ima jedinstvenu adresu. U stvari, potrebna su dva nivoa adresiraDaSvaki
bi komunikacija
uspena,
entitet uglobalnu
celokupnom
sistemu
mora
nja.
host u mreibila
mora
da imasvaki
jedinstvenu
internet
adresu;
to jedinstvenu
podacima omoguava
da budu
isporueni
pravom
hostu. Tu
adresu
da ima
adresu. U stvari,
potrebna
su dva nivoa
adresiranja.
Svaki
host u
koristi
rutiranje
i isporuku.
aplikacija
hosta omoguava
mora da
mrei
moraIP
daza
ima
jedinstvenu
globalnuSvaka
internet
adresu; unutar
to podacima
ima adresu koja je jedinstvena unutar tog hosta; to omoguava protokolu
da budu
isporueni pravom
Tu adresu
koristi
IP za rutiranje
i isporuku.
od-hosta-do-hosta
(TCP)hostu.
da isporui
podatke
odgovarajuem
procesu.
Te
poslednje
adrese
poznate
kaoda
portovi.
Svaka
aplikacija
unutar
hosta su
mora
ima adresu koja je jedinstvena unutar tog
hosta; to omoguava protokolu od-hosta-do-hosta (TCP) da isporui podatke
odgovarajuem procesu. Te poslednje adrese poznate su kao portovi.
L -11

L - 12Dodatak L / Protokoli i arhitekture protokola


Korisniki podaci

Aplikacioni
tok bajtova

TCP
segment

TCP
zaglavlje

IP
datagram

IP
zaglavlje

Paket
Nivoa mree

Mreno
zaglavlje

Slika L.4 Jedinice podataka protokola (PDU) u arhitekturi TCP/IP

Slika L.4 Jedinice podataka protokola (PDU) u arhitekturi TCP/IP


Hajdedada
propratimo
jednostavnu
operaciju.
Pretpostavite
da proces,
Hajde
propratimo
jednostavnu
operaciju.
Pretpostavite
da proces,
kome je
kome je
pridruen
portA,
3 na
A, eli poruku
da poalje
poruku
drugom
pro- je
pridruen
port
3 na hostu
elihostu
da poalje
drugom
procesu,
kome
cesu, kome je pridruen port 2 na hostu B. Proces A predaje poruku TCP-u
pridruen
port 2 na hostu
Proces na
A predaje
sa instrukcijama
da je
sa instrukcijama
da jeB.poalje
host B, poruku
port 2. TCP-u
TCP predaje
poruku IP-u
poalje
na host B, portda
2. TCP
predaje
sa instrukcijama
da je poalje
sa instrukcijama
je poalje
naporuku
host B.IP-u
Zapazite
da IP ne mora
da znana
odredinog
Svezna
toidentitet
treba daodredinog
zna je da su
podaci
host identitet
B. Zapazite
da IP neporta.
mora da
porta.
Svenamenjeni
to treba da
hostu B. Zatim, IP predaje poruku sloju za pristup mrei (na primer, logika
zna je da su podaci namenjeni hostu B. Zatim, IP predaje poruku sloju za pristup
Ethernet) sa instrukcijama da je poalje na ruter J (prvi skok na putu do B).
mrei (na primer, logika Ethernet) sa instrukcijama da je poalje na ruter J (prvi
Da bi se upravljalo ovom operacijom, pored korisnikih podataka
skokmoraju
na putuda
doseB).prenose i upravljake informacije, kao to je nagoveteno na
slici
da proces
predaje generie
blok podataka
i prosleuje
DaL.4.
bi seRecimo
upravljalo
ovom koji
operacijom,
pored korisnikih
podataka
moraju da
ga TCP-u. TCP moe da razbije taj blok u manje delove, da bi ga uinio
se prenose i upravljake informacije, kao to je nagoveteno na slici L.4. Recimo
upravljivijim. Svakom takvom delu TCP dodaje upravljaku informaciju
da proces koji predaje generie blok podataka i prosleuje ga TCP-u. TCP moe da
razbije taj blok u manje delove, da bi ga uinio upravljivijim. Svakom takvom delu
L -12

Dodatak L / Protokoli i arhitekture protokolaL

- 13

koja se zove zaglavlje TCP (slika L.2a), formirajui TCP segment. Upravljaku informaciju koristi entitet protokola TCP na hostu B. Primeri stavki
u tom zaglavlju ukljuuju sledee:
Odredini port: Kada TCP entitet u B prima segment, on mora da
zna kome podaci treba da se isporue.
Broj sekvence: TCP sekvencijalno numerie segmente koje alje odreenom odreditu, tako da ako oni pristiu van redosleda, TCP entitet
u B moe da ih preuredi.
Kontrolni zbir: TCP poiljaoca ukljuuje kd koji je funkcija sadraja
ostatka segmenta. TCP primaoca izvodi isti proraun i poredi rezultat sa dolaznim kodom. Do neslaganja dolazi ako je bilo neke greke
u prenosu.
Posle toga, TCP predaje svaki segment IP-u, sa instrukcijama da ih prenese u B. Ti segmenti moraju da se prenesu preko jedne ili vie mrea,
posredstvom jednog ili vie rutera. Ta operacija takoe zahteva upotrebu
upravljakih informacija. U skladu sa tim, IP dodaje zaglavlje sa upravljakim informacijama (slika L.5) svakom segmentu da bi formirao IP datagram. Primer stavke koja se nalazi u zaglavlju IP jeste adresa odredinog
hosta (u ovom primeru, B).

L - 14Dodatak L / Protokoli i arhitekture protokola


Bit
Verzija

IHL

ECN

DS

20 okteta

Identifikacija
ivotni vek

Ukupna duina
Markeri

Protokol

Pomeraj fragmenta
Kontrolni zbir zaglavlja

Adresa izvora
Adresa odredita
Opcije + punjenje

(a) Zaglavlje IPv4


Bit
Verzija

DS

ECN

Oznaka toka
Sledee zaglavlje

40 okteta

Duina sadraja

Granica skoka

Adresa izvora

Adresa odredita

(b) Zaglavlje IPv6


DS = Polje za diferencijalne usluge
ECN = Polje za eksplicitnu notifikaciju zaguenja

Zapazite: 8-bitna polja DS/ECN su se


zvala polje za tip usluge u zaglavlju IPv4 i
polje za klasu sa obraaja u zaglavlju IPv6

Slika L.5 Zaglavlja IP

Dodatak L / Protokoli i arhitekture protokolaL

- 15

Najzad, svaki IP datagram se predstavlja sloju za pristup mrei radi prenosa preko prve mree u njegovom putovanju ka odreditu. Sloj za pristup
mrei dodaje svoje sopstveno zaglavlje, stvarajui paket, ili okvir. Paket se
prenosi preko mree do rutera J. Zaglavlje paketa sadri informacije koje
su mrei potrebne da bi prenela podatke preko mree. Primeri stavki koje
mogu da se nalaze u tom zaglavlju ukljuuju:
Mrenu adresu odredita: Mrea mora da zna kom prikljuenom ureaju paket treba da se isporui, u ovom sluaju ruteru J.
Zahtevi za sredstvima: Protokol za pristup mrei moe zahtevati upotrebu izvesnih mrenih sredstava, kao to je prioritet
Na ruteru J, zaglavlje paketa se skida i zagljavlje IP se ispituje. Na
osnovu informacije o adresi odredita u zaglavlju IP, IP modul u ruteru
usmerava datagram napolje u mreu 2 ka B. Da bi se to izvelo, datagram se
ponovo uveava zaglavljem za pristup mrei.
Kada se podaci prime u B, dolazi do obrnutog procesa. U svakom sloju,
uklanja se odgovarajue zaglavlje, a ostatak se prosleuje sledeem viem
sloju, sve dok se podaci prvobitnog korisnika ne isporue odredinom procesu.

Aplikacije TCP/IP
Izvestan broj aplikacija su standardizovane da bi radile nad TCP. Ovde
pominjemo tri najee.
Simple Mail Transfer Protocol (SMTP) obezbeuje osnovno sredstvo
za elektronsku potu. On predstavlja mehanizam za prenoenje poruka
izmeu odvojenih hostova. Svojstva SMTP ukljuuju potanske liste,
potvrde o prijuemu i prosleivanje. Protokol SMTP ne specificira nain
na koji poruke treba da se prave; zahteva se neko lokalno sredstvo za editovanje ili elektronsku potu. Jednom kada je poruka napravljena, SMTP je

L - 16Dodatak L / Protokoli i arhitekture protokola


prihvata i koristi TCP da bi je poslao na SMTP modul na drugom hostu.
Ciljni SMTP modul e koristiti lokalni paket za elektronsku potu da bi
uskladitio dolaznu poruku u korisnikovo potansko sandue.
Protokol za prenos datoteka (FTP, engl. File Transfer Protocol) koristi se
za slanje datoteka od jednog sistema do drugog, pod komandom korisnika.
I tekstualne i binarne datoteke se prilagoavaju, a protokol obezbeuje
svojstva za upravljanje korisnikovim pristupom. Kada korisnik poeli da se
angauje u prenosu datoteka, FTP uspostavlja TCP konekciju ka ciljnom
sistemu radi razmene upravljakih poruka. Ta konekcija dozvoljava da se
prenesu korisnikov ID i lozinka i omoguava korisniku da odredi datoteku
i eljene aktivnosti u vezi sa njom. Jednom kada se prenos podataka odobri, druga TCP konekcija se uspostavlja radi prenosa podataka. Datoteka
se prenosi preko konekcije za podatke, bez dodatnog rada oko bilo kakvog
zaglavlja ili upravljakih informacija na nivou aplikacije. Kada se prenos
zavri, upravljaka konekcija se koristi da se signalizira taj zavretak i da se
prihvaten nove komande za prenos datoteka.
TELNET obezbeuje sposobnost prijavljavanja, to omoguava korisniku za terminalom ili personalnim raunarom da se prijavi na udaljeni
raunar i da radi kao da je direktno povezan sa tim raunarom. Protokol
je bio projektovan da radi sa jednostavnim terminalima u reimu pomeranja sadraja na ekranu. TELNET se stvarno implementira u dva modula:
korisniki TELNET meusobno utie sa U/I modulom terminala da bi
komunicirao sa lokalnim terminalom. On pretvara karakteristike stvarnih
terminala u mreni standard i obrnuto. Serverski TELNET meusobno
utie sa aplikacijom, dejstvujui kao zamena za opsluiva terminala, tako
da se udaljeni terminali za aplikaciju pojavljuju kao lokalni. Terminalni saobraaj izmeu korisnikog i serverskog TELNET-a obavlja se preko TCP
konekcije.

Dodatak L / Protokoli i arhitekture protokolaL

- 17

L.3ULOGA INTERNET PROTOKOLA


Internet protokol (IP) obezbeuje funkcionalnost povezivanja krajnjih
sistema preko vie mrea. U tu svrhu, IP se implementira u svakom od krajnjih sistema i u ruterima, koji su ureaji za obezbeivanje konekcija izmeu
mrea. Podaci vieg nivoa na izvornom krajnjem sistemu se enkapsuliraju
u jedinici podataka IP protokola (PDU) radi prenosa. Taj PDU se zatim
prosleuje preko jedne ili vie nrea i rutera za povezivanje da bi stigao do
odredinog krajnjeg sistema.
Ruter mora da bude sposoban da izae na kraj sa razliitostima mrea,
ukljuujui sledee:
eme adresiranja: Mree mogu da koriste razliite eme za dodeljivanje adresa ureajima. Na primer, IEEE 802 LAN koristi ili 16-bitne
ili 48-bitne binarne adrese za svaki prikljueni ureaj; X.25 javna
mrea sa komutacijom paketa koristi 12-cifarne decimalne adrese
(kodovane kao 4 bita po cifri za 48-bitnu adresu). Neki oblik globalnog mrenog adresiranja mora da se obezbedi, kao i servis direktorijuma.
Maksimalne veliine paketa: Paketi iz jedne mree mogu da se razbiju na manje delove da bi se preneli na drugu mreu, to je proces
poznat kao fragmentacija. Na primer, Ethernet namee maksimalnu
veliinu paketa od 1500 bajtova; maksimalna veliina paketa od
1000 bajtova je uobiajena na mreama X.25. Paket koji se prenosi
na Ethernet sistem i preuzme se od strane rutera radi prenosa na
mreu X.25 moe da bude fragmentiran na dva manja dela.
Interfejsi: Hardverski i softverski interfejsi ka raznim mreama se
razlikuju. Koncept rutera mora da bude nezavisan od tih razlika

L - 18Dodatak L / Protokoli i arhitekture protokola


Krajnji sistem X

Krajnji sistem Y

Ruter 1

LAN, WAN
ili link
od-take-do-take

Ruter 2

Aplikacija

Fiziki

Aplikacija

Fiziki

Mrea

Mrea

Fiziki

Fiziki

Fiziki

Fiziki

Slika L.6 Primer konfiguracije za TCP/IP

Slika L.6 Primer konfiguracije za TCP/IP

Pouzdanost: Razne mrene usluge mogu da obezbede bilo ta, od


pouzdanog virtuelnog kola od-kraja-do-kraja, pa sve do nepouzdane
pouzdanog
od-kraja-do-kraja,
pa prepostavke
sve do nepouzdane
usluge.
usluge. virtuelnog
Rad ruterakola
ne bi
smeo da zavisi od
o pouzdanomree.
Radsti
rutera
ne bi smeo da zavisi od prepostavke o pouzdanosti mree.

Pouzdanost: Razne mrene usluge mogu da obezbede bilo ta, od

Radrutera,
rutera,kao
kaototo
prikazano
na slici
zavisi
od internet
proto-U
Rad
je je
prikazano
na slici
L.6,L.6,
zavisi
od internet
protokola.
kola.
U ovom
primeru,
Internet
(IP) protokola
niza TCP/IP
protokola
izvrovom
primeru,
Internet
Protokol
(IP)Protokol
niza TCP/IP
izvrava
tu funkciju.
ava tu funkciju. IP mora da bude implementira u svim krajnjim sistemima
na svim mreana, kao i u ruterima. Pored toga, svaki krajnji sistem mora
ruterima.
toga, svaki
krajnji iznad
sistemIPmora
ima kompatibilne
da imaPored
kompatibilne
protokole
da bida
uspeno
komunicirao.protokole
Ruteri
izmeu
da komunicirao.
imaju samo do
IP. izmeu moraju da imaju samo do IP.
iznad
IP da moraju
bi uspeno
Ruteri
IP mora da bude implementira u svim krajnjim sistemima na svim mreana, kao i u

L - 18

Dodatak L / Protokoli i arhitekture protokolaL

- 19

Razmotrite prenos bloka podataka od krajnjeg sistema X do krajnjeg


sistema Y na slici L.6. IP sloj na X prima blokove podataka koji treba da se
poalju na Y od TCP u X. IP sloj dodaje zaglavlje koje odreuje globalnu
internet adresu Y. Ta adresa ima dva dela: mreni identifikator i identifikator krajnjeg sistema. Hajde da nazovemo taj blok IP paketom. Zatim, IP
prepoznaje da je odredite (Y) na drugoj podmrei. Zato je prvi korak da
se paket poalje ruteru, u ovom sluaju ruteru 1. Da bi to izvrio, IP uruuje svoju jedinicu podataka nanie ka LLC uz odgovarajuu informaciju
za adresiranje. LLC stvara LLC PDU, koji se uruuje nanie MAC sloju.
MAC sloj konstruie MAC paket ije zaglavlje sadri adresu rutera 1.
Zatim, paket putuje kroz LAN do rutera 1. Ruter uklanja zaglavlja
paketa i LLC i trejlere i analizira IP zaglavlje da bi utvrdio krajnje odredite
podataka, u ovom sluaju Y. Ruter sada mora da donese odluku o usmeravanju. Postoje dve mogunosti:

1. Krajnji sistem Y je direktno povezan na jednu od podmrea na koje je


ruter prikljuen.
2. Da bi se stiglo do odredita, mora da se pree preko jednog ili vie dodatnih rutera.
U ovom primeru, paket mora da se usmeri preko rutera 2 pre pristizanja na odredite. Prema tome ruter 1 prosleuje IP paket ruteru 2 mreko
mree izmeu njih. U tu svrhu, koriste se protokoli te mree. Na primer,
ako je mrea koja se nalazi izmeu X.25, IP jedinica podataka se stavlja u
X.25 paket sa odgovarajuom informacijom za adresiranje da bi stigao do
rutera 2. Kada taj paket stigne u ruter 2, skida se zaglavlje paketa. Ruter
utvruje da je taj IP paket namenjen Y, koji je direktno povezan sa podmreom na koji je prikljuen ruter is attached. Ruter zato stvara paket sa
adresom odredita Y i alje ga na LAN. Podaci najzad pristuu na Y, gde se

L - 20Dodatak L / Protokoli i arhitekture protokola


uklanjaju zaglavlja i trejleri paketa, LLC interneta. Ta usluga koju nudi IP
je nepouzdana. To znai da IP ne garantuje da e svi podaci biti isporueni
ili da e svi isporueni podaci stii u pravilnom redosledu. Odgovornost je
sledeeg sloja, u ovom sluaju TCP, da izvri oporavak od svake greke koja
se pojavila. Takav pristup prua veliku fleksibilnost. S obzirom da isporuka
nije garantovana, nema nikakvog posebnog zahteva za pouzdanou bilo
koje od podmrea. Prema tome, protokol e raditi sa bilo kakvom kombinacijom tipova podmrea. S obzirom da se ne garantuje redosled isporuke,
uzastopni paketi mogu da prolaze razliitim putanjama kroz internet. To
dozvoljava protokolu da reaguje na zaguenja i otkaze na internetu promenom putanja.

L.4IPv4
Ve decenijama, temelj arhitekture TCP/IP protokola bio je Internet
Protocol (IP), verzija 4. Na slici L.5a prikazan je format IP zaglavlja, koje
ima minimalno 20 okteta, ili 160 bitova. Njegova polja su sledea:
Verzija (4 bita): Pokazuje broj verzije, da bi se dozvolio razvoj protokola; vrednost je 4.
Duina Internet zaglavlja (IHL) (4 bita): Duina zaglavlja u 32-bitni
reima. Minimalna vrednost je pet, za minimalnu duinu zaglavlja
od 20 okteta.
DS/ECN (8 bitova): Pre uvoenja diferenciranih usluga, ovo polje je
bilo za vrstu usluge i odreivalo je parametre pouzdanosti, prvenstva,
kanjenja i propustljivosti. Takva interpretacija je sada zamenjena
novom . Prvih 6 bitova polja TOS se sada zovu polje DS (diferencirane usluge). Preostala 2 bita su rezervisana za polje ECN (eksplicitna notifikacija zaguenja).

Dodatak L / Protokoli i arhitekture protokolaL

- 21

Ukupna duina (16 bitova): Ukupna duina IP paketa, u oktetima.


Identifikacija (16 bitova): Broj sekvence koji je, uz adresu izvora,
adresu odredita i korisniki protokol, namenjen da jedinstveno
identifikuje paket. Prema tome, taj broj treba da bude jedinstven za
adresu izvora paketa, adresu odredita i korisniki protokol za vreme
u kome e paket ostati na internetu.
Markeri (3 bita): Samo dva od tih bitova su trenutno definisani.
Kada se paket fragmentuje, bit JO (engl. More) pokazuje da li je
to poslednji fragment originalnog paketa. Bit NE FRAGMENTUJ
(engl. Dont Fragment) zabranjuje fragmentaciju kada je ukljuen. Taj
bit moe da bude koristan ako se zna da odredite nema sposobnost
ponovnog spajanja fragmenata. Meutim, ako je taj bit ukljuen,
paket e se odbaciti ako prevazilazi maksimalnu veliinu usputne
podmree. Prema tome, ako je bit ukljuen, moe biti uputno da
se upotrebi rutiranje izvora tako da se izbegnu podmree sa malom
maksimalnom veliinom paketa.
Pomeraj fragmenta (13 bitova): Pokazuje gde u originalnom paketu
ovaj fragment pripada, mereno u 64-bitnim jedinicama. To implicira
da fragmenti razliiti od poslednjeg fragmenta moraju da sadre
polje podataka ija je duina umnoak od 64 bita.
ivotni vek (8 bitova): Odreuje koliko dugo je, u sekundama, paketu
dozvoljeno da ostane na internetu. Svaki ruter koji obrauje paket
mora da smanji TTL (ivotni vek, engl. time to live) za najmanje 1,
tako da je TTL donekle slian broju skokova.
Protokol (8 bitova): Ukazuje na sledei protokol vieg nivoa, koji
treba da primi polje podataka na odreditu; prema tome, ovo polje
identifikuje tip sledeeg zaglavlja u paketu posle IP zaglavlja.

L - 22Dodatak L / Protokoli i arhitekture protokola


Kontrolni zbir zaglavlja (16 bitova): Kd za otkrivanje greaka, primenjen samo na zaglavlje. S obzirom na to da neka polja zaglavlja
mogu da se promene za vreme prelaska (na primer, ivotni vek, polja
koja se odnose na segmentaciju), on se ponovo verifikuje i proraunava na svakom ruteru. Polje za kontrolni zbir je 16-bitni komplement jedinice zbira svih 16-bitnih rei u zaglavlju. Za potrebe
raunanja, polje kontrolnog zbira se samo inicijalizuje na vrednost
nula.
Adresa izvora (32 bita): Kodovana je da dozvoli promenljivo dodeljivanje bitova da bi se odredila mrea i krajnji sistem prikljuen ma tu
mreu (7 i 24 bita, 14 i 16 bitova, ili 21 i 8 bitova).
Adresa odredita (32 bita): Istih karakteristika kao i adresa izvora.
Opcije (promenljivo): Koduje opcije koje zahteva korisnik poiljalac; to moe da ukljui oznaku sigurnosti, rutiranje izvora, rutiranje
zapisa, i oznaavanje vremena.
Punjenje (promenljivo): Koristi se da bi se obezbedilo da je zaglavlje
po duini umnoak od 32 bita.

L.5IPv6
1995. godine, organizacija Internet Engineering Task Force (IETF),
koja razvija standarde protokola za Internet, izdala je specifikaciju za sledeu generaciju IP, poznatu kao IPng. Ta specifikacija se 1996. godine
pretvorila u standard poznat kao IPv6. IPv6 prua vei broj funkcionalnih
poboljanja u odnosu na postojei IP (poznat kao IPv4), zato to je projektovan da se prilagodi sve veim brzinama dananjih mrea i meavini tokova
podataka, ukljuujui tu grafiku i video, koji su postali preovlajujui. Ali
ono to je bila pokretaka snaga za razvoj novog protokola jeste potreba
za vie adresa. IPv4 koristi 32-bitnu adresu da odredi izvor ili odredite. Sa
eksplozivnim porastom Interneta i privatnih mrea prikljuenih na Internet, ova duina adrese postala je nedovoljna da zadovolji sve sisteme kojima

Dodatak L / Protokoli i arhitekture protokolaL

- 23

su potrebne adrese. Kao to je prikazano na slici L.5b, IPv6 ukljuuje 128bitna adresna polja za izvor i odredite. Na kraju krajeva, oekuje se da sve
instalacije koje koriste TCP/IP preu sa trenutnog IP na IPv6, ali taj proces
e trajati mnogo godina, ako ne i decenija.

Zaglavlje IPv6
Zaglavlje IPv6 ima fiksnu duinu od 40 okteta i sastoji se od sledeih
polja (slika L.5b):
Verzija (4 bita): Broj verzije Internet Protokola; vrednost je 6.
DS/ECN (8 bitova): Pre uvoenja diferenciranih usluga, ovo polje
je bilo poznato kao polje za klasu saobraaja i bilo je rezervisano za
upotrebu od strane vorova koji alju i/ili rutera za prosleivanje da
bi se identifikovale i napravila razlika izmeu razliitih klasa ili prioriteta paketa IPv6. Prvih est bitova polja za klasu saobraaja se sada
zovu polje DS (diferencirane usluge). Preostala 2 bita su rezervisana
za polje ECN (eksplicitna notifikacija zaguenja).
Oznaka toka (20 bitova): Moe da je upotrebi host za oznaavanje
onih paketa za koje se zahteva specijalno rukovanje od strane rutera
unutar mree. Oznaavanje toka moe da pomogne rezervaciji
resursa i obradi saobraaja u realnom vremenu.
Duina korisnog tereta (16 bitova): Duina ostatka paketa IPv6, u
oktetima. Drugim reima, to je ukupna duina svih zaglavlja proirenja plus PDU transportnog nivoa.
Sledee zaglavlje (8 bitova): Identifikuje tip zaglavlja koje neposredno prati zaglavlje IPv6; to e biti ili zaglavlje proirenja IPv6 ili
zaglavlje vieg sloja, kao to je TCP ili UDP.

L - 24Dodatak L / Protokoli i arhitekture protokola


Granica skoka (8 bitova): Preostali broj skokova dozvoljenih za taj
paket. Izvor postavlja granicu skokova na neku poeljnu maksimalnu
vrednost, a svaki vor koji prosleuje taj paket smanjuje je za 1. Paket
se odbacuje ako se granica skoka smanji na nulu.
Adresa izvora (128 bitova): Adresa tvorca paketa.
Adresa odredita (128 bitova): Adresa primaoca kome je namenjen
paket. To u stvari moe da ne bude konano odredite ako je prisutno proirenje za rutiranje, kao to e biti objanjeno kasnije.
Mada je zaglavlje IPv6 due od obaveznog dela zaglavlja IPv4 (40 okteta
prema 20 okteta), ono sadri manje polja (8 prema 12). Prema tome, ruteri
treba da obave manju obradu po zaglavlju, to bi trebalo da ubrza rutiranje.

Zaglavlja proirenja IPv6


Pakret IPv6 ukljuuje zaglavlje IPv6, to je upravo objanjeno, kao i vie
zaglavlja proirenja. Pored IPSec, definisana su sledea zaglavlja proirenja:
Zaglavlje opcija skok-po-skok: Definie specialne opcije koje zahtevaju obradu skok-po-skok
Zaglavlje za rutiranje: Obezbeuje proireno rutiranje, slino rutiranju izvora u IPv4
Zaglavlje fragmenta: Sadri informacije o fragmentaciji i ponovnom
spajanju
Zaglavlje autentikacije: Obezbeuje integritet paketa i autentikaciju
Zaglavlje za enkapsuliranje sigurnosti sadraja: Obezbeuje privatnost

Dodatak L / Protokoli i arhitekture protokolaL

- 25

Zagljavlje opcija odredita: Sadri opcione informacije koje pregleda


odredini vor
Standard IPv6 preporuuje da se, u sluaju upotrebe vie zaglavlja za
proirenje, zaglavlja IPv6 pojavljuju u sledeem redosledu:
1. Zaglavlje IPv6: Obavezno, mora uvek da se pojavi prvo
2. Zaglavlje opcija skok-po-skok
3. Zaglavlje opcija odredita: za opcije koje treba da obradi prvo odredite
koje se pojavljuje u polju za adresu odredita IPv6 plus sledea odredita koja su navedena u zaglavlju za rutiranje
4. Zaglavlje za rutiranje
5. Zaglavlje fragmenta
6. Zaglavlje autentikacije
7. Zaglavlje za enkapsuliranje sigurnosti sadraja
8. Zaglavlje opcija odredita: za opcije koje treba da obradi samo poslednje odredite paketa
Na slici L.7 prikazan je primer paketa IPv6 koji ukljuuje po jedno od
svakog zaglavlja koje nije za sigurnost. Zapazite da zaglavlje IPv6 i svako
od zaglavlja za proirenja ukljuuje polje za sledee zaglavlje. To polje
identifikuje tip neposredno sledeeg zaglavlja. Ako je sledee zaglavlje za
proirenje, onda to polje sadri identifikator tipa tog zaglavlja. U suprotnom, to polje sadri identifikator protokola sloja iznad koji koristi IPv6
(to je obino protokol nivoa transporta), upotrebljavajui iste vrednosti
kao polje za protokol IPv4. Protokol sloja iznad na slici je TCP, pa se zato
podaci gornjeg sloja koje nosi paket IPv6 sastoje od zaglavlja TCP i bloka
podataka aplikacije koji ga sledi.

L - 26Dodatak L / Protokoli i arhitekture protokola


Okteti
Obavezno
zaglavlje
IPv6

IPv6 zaglavlje
Zaglavlje opcija
skok-po-skok

Opciona
zaglavlja
proirenja

Zaglavlje rutiranja

Promenljivo

Promenljivo

Zaglavlje fragmenta

Zaglavlje opcija
skok-po-skok
Zaglavlje TCP
Telo
paketa
IPv6

Aplikacioni podaci

Promenljivo

20 (opcioni promenljivi deo)

Promenljivo

Sledee polje zaglavlja

Slika Slika
L.7 Paket
IPv6IPv6
sa zaglavljima
L.7 Paket
sa zaglavljimaproirenja
proirenja
(sadri segment TCP)
Zaglavlje za opcije skok-po-skok nosi opcione informacije koje, ako su

Zaglavlje za opcije skok-po-skok nosi opcione informacije koje, ako su


prisute, mora da ispita svaki ruter du putanje. Zaglavlje se sastoji od sleprisute, mora da ispita svaki ruter du putanje. Zaglavlje se sastoji od sledeih
polja: deih polja:
L 26

Dodatak L / Protokoli i arhitekture protokolaL

- 27

Sledee zaglavlje (8 bitova): Identifikuje tip zaglavlja koje neposredno


prati ovo zaglavlje.
Duina zaglavlja proirenja (8 bitova): Duina ovog zaglavlja u 64-bitnim jedinicama, ne ukljuujui prvih 64 bita.
Opcije: Sadri jednu ili vie opcija. Svaka opcija sastoji se od tri podpolja: taga koji ukazuje na tip opcije, duine i vrednosti.
Do sada je definisana samo jedna opcija: opcija Jumbo Payload, koja se
koristi za slanje IPv6 paketa sa sadrajima duim od 216 1 = 65535 okteta.
Polje za podatke te opcije je duine 32 bita i daje duinu paketa u oktetima,
iskljuujui zaglavlje IPv6. Za takve pakete, polje Payload Length u zaglavlju IPv6 mora da se postavi na nulu i ne sme da postoji nikakvo zaglavlje
za fragment. Sa ovom opcijom, IPv6 podrava veliine paketa do vie od 4
milijarde okteta. To olakava prenos velikih video paketa i omoguava IPv6
da na najbolji nain upotrebi raspoloivi kapacitet bilo kog medijuma za
prenos.
Zaglavlje za rutiranje sadi listu od jednog ili vie meuvorova koji se
poseuju na putu ka odreditu paketa. Sva zaglavlja za rutiranje poinju
32-bitnim blokom koji se sastoji od etiri 8-bitna polja, praenim podacima
za rutiranje specifinim za dati tip rutiranja. etiri 8-bitna polja su sledee
zaglavlje, duina zaglavlja za proirenje i:
Tip rutiranja: Identifikuje posebnu varijantu zaglavlja za rutiranje.
Ako ruter ne prepoznaje vrednost tipa rutiranja, on mora da odbaci
paket.
Preostali segmenti: Broj eksplicitno izlistanih meuvorova koji jo
treba da se posete pre nego to se stigne na konano odredite.

L - 28Dodatak L / Protokoli i arhitekture protokola


Uz ovu optu definiciju zaglavlja, u specifikaciji IPv6 definie se i zaglavlje za rutitranje Tip 0. Kada koristi zaglavlje za rutiranje Tip 0, izvorni vor
ne smeta adresu krajnjeg odredita u zaglavlje IPv6. Umesto toga, ta adresa
je poslednja adresa koja se navodi u zaglavlju za rutiranje, a zaglavlje IPv6
sadri adresu odredita prvog rutera koji se trai u putanji. Zaglavlje za
rutiranje se nee ispitivati sve dok paket ne stigne do vora identifikovanog
u zaglavlju IPv6. U toj taki se auriraju sadraji zaglavlja IPv6 i zaglavlja
za rutiranje, a paket se prosleuje dalje. Auriranje obuhvata smetanje sledee adrese koja treba da se poseti u zaglavlje IPv6 i smanjivanje sadraja
polja za preostale segmente u zaglavlju za rutiranje.
IPv6 zahteva od vora IPv6 da obrne rute u paketu packet koji prima
koji sadri zaglavlje za rutiranje, da bi vratio paket poiljaocu.
Zaglavlje fragmenta koristi izvor kada se zahteva fragmentacija. U IPv6,
fragmentacija mogu da izvre samo izvorni vorovi, a be i ruteri du putanje za isporuku paketa. Da bi se u punoj meri iskoristile prednosti radnog
okruenja interneta, vor mora da izvri algoritam istraivanja putanje da
bi saznao koja je najmanja maksimalna jedinica prenosa (MTU, engl. maximum transmission unit) koju podrava bilo koja od podmrea na putanji.
Drugim reima, algoritam istraivanja putanje omoguava voru da sazna
kolika je MTU podmree koja predstavlja usko grlo na putanji. Sa tim
znanjem, izvorni vor e fragmentovati, po zahtevu, za svaku datu adresu
odredita. U suprotnom, izvor mora da ogranii sve pakete na 1280 okteta,
to je minimalna MTU koju mora da podri svaka podmrea.
Pored polja za sledee zaglavlje, zaglavlje fragmenta ukljuuje i ova
polja:
Pomeraj fragmenta (13 bitova): Pokazuje gde u originalnom paketu
pripada sadraj ovog fragmenta. Ono se meri 64-bitnim jedinicama.
To implicira da fragmenti (razliiti od poslednjeg fragmenta) moraju
da sadre polje za podatke koje je umnoak duine od 64 bita.

Dodatak L / Protokoli i arhitekture protokolaL

- 29

Res (2 bita): Rezervisano za buduu upotrebu.


M MArker (1 bit): 1 = jo fragmenata; 0 = poslednji fragment.
Identifikacija (32 bita): Namenjeno da jedinstveno identifikuje originalni paket. Identifikator mora da bude jedinstven u pogledu adresa
izvora i odredita paketa za vreme dok e paket biti prisutan na internetu. Svi fragmenti sa istim identifikatorom, adresom izvora i adresom odredita se ponovo sastavljaju da bi formirali originalni paket.
Zaglavlje za opcije odredita nosi informacije o opcijama koje, ako je
prisutno, ispituje jedino odredini vor paketa. Format ovog zaglavlja je isti
kao i onaj od zaglavlja za opcije skok-po-skok.

L.6ARHITEKTURA PROTOKOLA OSI


Referentni model Open Systems Interconnection (OSI) razvila je Meunarodna organizacija za standardizaciju (ISO)1 kao model za arhitekturu
raunarskog protokola i kao okvir za razvijanje standarda protokola. Model
OSI se sastoji od sedam slojeva:
Aplikacija
Prezentacija
Sesija
Transport
Mrea
Link podataka
Fiziki

1ISO nije skraenica (u kom sluaju bi bilo IOS), nego re, izvedena iz grkog isos, to znai jednak.

L - 30Dodatak L / Protokoli i arhitekture protokola


Na slici L.8 ilustrovan je OSI model i data kratka definicija funkcija
koje se izvode na svakom sloju. Svrha OSI modela je da se razviju protokoli
koji izvravaju funkcije na svakom sloju.
Projektanti OSI osi modela pretpostavili su da taj bi model i protokoli
koji se razviju unutar njega trebalo da preovlauju u raunarskim komunikacijama, i na kraju zamene vlasnike implementacije protokola i modele
konkurentnih prodavaca kao to je TCP/IP. To se nije dogodilo. Mada su
mnogi korisni protokoli razvijeni u kontekstu OSI, ukupan sedmoslojni
model nije ba procvetao. Umesto toga, preovladala je arhitektura TCP/
IP. Postoji vie razloga za takav ishod. Moda je najvaniji taj to su kljuni
protokoli TCP/IP bili zreli i dobro ispitani u vreme kada su slini protokoli
OSI jo bili u fazi razvoja. Kada je biznis prepoznao potrebu za interoperabilnou preko mrea, samo je TCP/IP bio raspoloiv i spreman da krene.
Drugi razlog je to to je model OSI nepotrebno sloen, sa sedam slojeva
koji treba da ostvare ono to TCP/IP radi sa manje slojeva.
Na slici L.9 ilustrovani su slojevi arhitektura TCP/IP i OSI, pokazujui
pojednostavljeno odnos u funkcionalnosti izmeu ova dva pristupa.

Dodatak L / Protokoli i arhitekture protokolaL

Aplikacija

Obezbeuje pristup OSI okruenju za korisnike, a


daje i distribuirane informacione usluge.

Prezentacija

Obezbeuje aplikacionim procesima nezavisnost od


razlike u prezentaciji podataka (sintaksa).

Sesija

Obezbeuje upravljaku strukturu za komunikaciju


izmeu aplikacija; uspostavlja, upravlja i okonava
konekcije (sesije) izmeu aplikacija koje sarauju.

Transport

Obezbeuje pouzdani, transparentni prenos podataka


izmeu krajnjih taaka; obezbeuje oporavak
greaka od-kraja-do-kraja i upravljanje tokom.

Mrea

Daje gornjim slojevima nezavisnost od tehnologija


za prenos podataka i komutaciju koje se koriste da bi
se povezali sistemi; odgovorna je za uspostavljanje,
odravanje i ukidanje konekcija.

Link podataka

Obezbeuje pouzdan prenos informacija preko


fizikog linka; alje blokove (okvire) sa potrebnom
sinhronizacijom, kontrolom greaka i upravljanjem
tokom.

Fiziki

Stara se o prenosu nestrukturiranog toka bitova


preko fizikog medijuma; bavi se mehanikim,
elektrinim, funkcionalnim i proceduralnim
karakteristikama pristupa fizikom medijumu.
Slika L8 OSI slojevi

Slika L8 OSI slojevi


L 31

- 31

L - 32Dodatak L / Protokoli i arhitekture protokola

Aplikacija
Prezentacija
Sesija
Transport

Aplikacija

Transport
(od-hostado-hosta)
Internet

Mrea

Pristup
mrei

Link
podataka
Fiziki

Fiziki

Poreenjearhitektura
arhitektura protokola
OSIOSI
TCP/IP
SlikaSlika
L.9L.9
Poreenje
protokola
TCP/IP

L 32

Dodatak M
ifrovanje

William Stallings

Dopuna knjige
Organizacija i arhitektura raunara
Prevod devetog izdanja
CET 2012. god.
ISBN: 978-86-7991-361-6

Prevod sa engleskog: Dr Radomir Jankovi

CET

M - 2Dodatak M / ifrovanje
U poglavlju 3 pozvali smo se na upotrebu ifrovanja u implementacijana
PCIe. U ovom dodatku daje se pregled te tehnike.
U nekim tehnikama kodovanja digitalnih podataka, dugaak niz binarnih nula ili jedinica u prenosu moe da degradira performansu sistema.
Takoe, druga svojstva prenosa, kao to su spektralne osobine, poboljavaju
se ako su podaci priblinije sluajni po prirodi, a ne konstantni ili ponavljajui. Tehnika koja se obino koristi za poboljavanje kvaliteta signala jeste
ifrovanje i deifrovanje. Proces ifrovanja tei da uini podatke sluajnijim.
Proces ifrovanja sastoji se od pomerakog registra sa povratnim spregama, a odgovarajui deifrator se sastoji od pomerakog registra sa spregama unapred. Primer je prikazan na slici M.1. U ovom primeru, ifrovani
niz podataka moe da se izrazi na sledei nain:
Bm = Am Bm3 Bm5
gde oznaava operaicu ekskluzivno-ili. Pomeraki registar je inicijalizovan da sadri sve nule. Deifrovan niz je:
Cm = Bm Bm3 Bm5
=
(Am Bm3 Bm5) Bm3 Bm5

= Am ( Bm3 Bm3) (Bm5 Bm5)

= Am

Kao to moe da se vidi, deifrovan izlaz je originalni niz.

Dodatak M / ifrovanjeM

(a) ifrator

-3

(b) Deifrator

Slika M.1 ifrator i deifrator


Slika M.1 ifrator i deifrator
Taj proces moemo da predstavimo koristei polinome. Dakle, za ovaj
primer, poolinom je P(X) = 1 + X3 + X5. Ulaz se deli ovim polinomom da
bi
proizveo
prijemniku, koristei
primljeni ifrovani
se mnoi
Taj
procesifrovani
moemoniz.
daNapredstavimo
polinome.signal
Dakle,
za ovaj
istim polinomom da bi se reprodukovao originalni ulaz. Na slici M.2 je
primer
u kome
koristi
i ulazse
101010100000111.1
ifrovani
X5. Ulaz
deli ovim polinomom
da bi
primer,
poolinom
je se
P(X)
= 1polinom
+ X3 +P(X)
prenos, proizveden deljenjem sa P(X) (100101), jeste 101110001101001.
proizveo
ifrovani
niz.pomnoi
Na prijemniku,
mnoi da
istim
Kada
se taj broj
sa P(X),primljeni
dobijamoifrovani
originalnisignal
ulaz. se
Zapazite
ulazni niz sadri periodinu sekvencu 10101010 kao i dugaak niz nula.
polinomom
daefikasno
bi se reprodukovao
ifrator
uklanja obaoriginalni
ta oblika. ulaz. Na slici M.2 je primer u kome se
koristi polinom P(X) i ulaz 101010100000111. 1 ifrovani prenos, proizveden
deljenjem sa P(X) (100101), jeste 101110001101001. Kada se taj broj pomnoi sa
P(X), dobijamo originalni ulaz. Zapazite da ulazni niz sadri periodinu sekvencu
10101010 kao i dugaak niz nula. ifrator efikasno uklanja oba ta oblika.

1 Koristimokonvenciju
konvenciju dada
je krajnji
bit sa bit
leve sa
strane
prvi
bit kojiprvi
ulazibit
u ifrator;
premautome
bitovi mogu
da tome
se
Koristimo
je krajnji
leve
strane
koji ulazi
ifrator;
prema
obelee A0A1A2.. Slino tome, polinom se pretvara u niz bitova sa leva na desno. Pollinom B0 + B1X + B2X2 + se
bitovi
mogu da se obelee A0A1A2.. Slino tome, polinom se pretvara u niz bitova sa leva na
predstavlja kao B B B
desno. Pollinom 0B01 +2 B1X + B2X2 + se predstavlja kao B0B1B2

M - 4Dodatak M / ifrovanje

(a) ifrovanje

(b) Deifrovanje
Slika M.2 Primer ifrovanja sa P(X) = 1 + X3 + X5
Za emu
MLT-3,
koja seifrovanja
koristi za 100BASE-TX,
je:
X5
Slika
M.2
Primer
sa P(X) = 1jednaina
+ X3 +ifrovanja
Bm = Am X9 X11
U ovom sluaju, pomeraki registar se sastoji od devet elemenata, a kori-

Za emu
kojakao
se5-elementni
koristi za registar
100BASE-TX,
jednaina
sti seMLT-3,
na isti nain
na slici M.1.
Meutim, ifrovanja
u sluaju je:
MLT-3, u pomeraki registar ne ulazi izlaz Bm. Umesto toga, posle svakog
prenosa bita, registar
pomera
Am zaX9pojednu
X11 jedinicu navie, a rezultat pretBmse =
hodne XOR operacije se unosi u prvu jedinicu. To moe da se izrazi kao:

U ovom Xsluaju,
registar
(t) = Xi1pomeraki
(t 1);
2 i 9 se sastoji od devet elemenata, a koristi se
i
X (t) = X (t 1) X (t 1)

9
11
a isti nain kao1 5-elementni
registar
na slici M.1. Meutim, u sluaju MLT-3, u

omeraki registar ne ulazi izlaz Bm. Umesto toga, posle svakog prenosa bita,

Dodatak M / ifrovanjeM

-5

Ako pomeraki registar sadri sve same nule, ne dolazi do ifrovanja


(imamo samo da je Bm = Am), a prethodne jednaine ne proizvode nikakvu promenu u pomerakom registru. U skladu sa tim, standard poziva na
inicijalizovanje pomerakog registra sa svim jedinicama i reinicijalizovanje
registra na sve jedinice kada uzima vrednost svih nula.
Za emu 4D-PAM5, koriste se dve jednaine za ifrovanje, po jedna u
svakom smeru:
Bm = Am Bm13 Bm33
Bm = Am Bm20 Bm33

Dodatak N
Vremenski dijagrami

William Stallings

Dopuna knjige
Organizacija i arhitektura raunara
Prevod devetog izdanja
CET 2012. god.
ISBN: 978-86-7991-361-6

Prevod sa engleskog: Dr Radomir Jankovi

CET

N - 2Dodatak N / Vremenski dijagrami


U nekoliko poglavlja koriste se vremenski dijagrami da bi se ilustrovali
nizovi dogaaja i zavisnosti izmeu dogaaja. Za itaoca kome nisu poznati
vremenski dijagrami, u ovom dodatku daje se kratko objanjenje.
Komunikacija izmeu ureaja povezanih na magistralu odvija se preko
skupa linija koje mogu da prenose signale. Mogu da se prenose dva razliita nivoa signala (nivoi napona) koji predstavljaju binarne cifre 0 i 1. Vremenski dijagram prikazuje nivo signala na liniji kao funkciju od vremena
(slika N.1a). Po uobiajenom dogovoru, nivo signala za binarnu cifru 1 se
prikazuje kao vii nivo od onoga za binarnu cifru 0. Binarna 0 je obino
podrazumevana vrednost. To znai da, ako se nikakav podatak ili neki drugi
signal ne prenosi, tada je nivo na liniji onaj koji predstavlja binarnu cifru 0.
Prelaz signala sa 0 na 1 se esto zove prednja ivica; prelaz sa 1 na 0 se zove
zadnja ivica. Takvi prelazi nisu trenutni, ali je vreme prelaza obino malo u
preenju sa trajanjem nivoa signala. Da bi to bilo jasnije, prelaz se obino
prikazuje kao kosa linija kojom se preteruje u pogledu relativne koliine
vremena koje je potrebno za prelaz. Povremeno ete videti dijagrame koji
koriste vertikalne linije, to pogreno nagovetava da je prelaz trenutan. Na
vremenskom dijagramu se moe dogoditi da promenljiva ili, u najmanju
ruku, neka koliina vremena bez ikakvog znaaja, protekne izmeu dogaaja od interesa. To se prikazuje kao razmak u vremenskoj liniji.
Signali se ponekad predstavljaju u grupama (slika N.1b). Na primer,
ako se podaci prenose po jedan bajt istovremeno, tada se zahteva osam
linija.
U optem sluaju nije vano da se zna tana vrednost koja se prenosi u
takvoj grupi, nego da li signali jesu ili nisu prisutni.
Prelaz signala na jednoj liniji moe da pokrene prikljueni ureaj da
promeni signale na drugim linijama. Na primer, ako memorijski modul
detektuje upravljaki signal za itanje (prelaz 0 ili 1), on e postaviti signale
podataka na linije za podatke. Takav uzrono-posledini odnos proizvodi
niz dogaaja.

podatke. Takav uzrono-posledini odnos proizvodi niz dogaaja.

Dodatak N / Vremenski dijagramiN

-3

Binarno 1
Binarno 0
Prednja Zadnja
ivica ivica

Vremenski razmak

Vreme

(a) Signal kao funkcija vremena

Sve linije
na 0

Svaka linija moe


biti 0 ili 1

Sve linije
na 0

(b) Grupa signala


Komanda
Odziv
(c) Uzrono-posledine zavisnosti

(d) Signal generatora takta

Slika N.1 Vremenski dijagrami

Slika N.1 Vremenski dijagrami


Da bi se prikazale takve zavisnosti, na vremenskim dijagramima se koriN-3
ste strelice (slika N.1c).
Na slici N.1c, crta nadvuena iznad naziva signala oznaava da je
taj signal aktivan na niskoj vrednosti, kao to je prikazano. Na primer,
Komanda je aktivna, ili potvrena, na 0 Volti. To znai da se Komanda =
0 tumai kao logiko 1, ili istinito.
Linija signala generatora takta (engl. clock) esto je deo sistemske magistrale. Elektronski generator takta prikljuen je na tu liniju i daje ponavljajuu, pravilnu sekvencu prelaza (slika N.1d). Drugi dogaaji mogu da budu
sinhronizovani sa signalom generatora takta.

Dodatak O
Stekovi

William Stallings
O.1 STEKOVI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
O.2 IMPLEMENTACIJA STEKA . . . . . . . . . . . . . . . . . . . . . . . . 4
O.3 ODREIVANJE VREDNOSTI IZRAZA . . . . . . . . . . . . . . . . . 7

Dopuna knjige
Organizacija i arhitektura raunara
Prevod devetog izdanja
CET 2012. god.
ISBN: 978-86-7991-361-6

Prevod sa engleskog: Dr Radomir Jankovi

CET

O - 2Dodatak O / Stekovi
U ovom dodatku daje se pregled dve najire koriene arhitekture protokola.

O.1 STEKOVI
Stek je ureeni skup elemenata, od kojih se samo jednom moe pristupiti istovremeno. Taka pristupa se zove vrh steka. Broj elemenata u steku, ili
duina steka, promenljiv je. Poslednji element steka je njegova baza. Stavke
mogu da se dodaju na vrh steka, ili da se sa njega uklanjaju. Iz tog razloga,
stek je takoe poznat i kao lista za umetanje nanie1 (engl. pushdown list) ili
lista poslednji-unutra-prvi napolje (engl. last-in-first-out, LIFO).
Na slici O.1 prikazane su osnovne operacije steka. Poinjemo od nekog
vremenskog trenutka kada stek sadri izvestan broj elemenata. Operacija
PUSH dodaje novu stavku na vrh steka. Operacija POP uklanja stavku
sa vrha steka. U oba sluaja, vrh steka se pomera na odgovarajui nain.
Binarni operatori, koji zahtevaju dva operanda (na primer mnoenje, delenje, sabiranje ili oduzimanje), koriste dve gornje stavke steka kao operande,
uklanjaju obe stavke i stavljaju rezultat natrag na stek. Unarne operacije,
koje zahtevaju samo jedan operand (na primer, logiko NE), koriste stavku
na vrhu steka. Sve te operacije su ukratko prikazane u tabeli O.1.

1Bolji termin bio bi lista sa mestom-na-vrhu, zato to se postojei elementi sa liste ne pomeraju u memoriji, ve se
novi element dodaje na sledeoj raspoloivoj memorijskoj adresi.

-3

Opadajue adrese

Dodatak O / StekoviO

Poetno stanje

Posle PUSH

Posle POP

Posle operacije
mnoenja

SP = pokaziva steka
BP = pokaziva baze

Slika
O.1O.1
Osnovna
steka(pun/opadajui)
(pun/opadajui)
Slika
Osnovnaoperacija
operacija steka

Tabela O.1 Operacije orijentisane na stek


Tabela
O.1 Operacije orijentisane na stek
PUSH
DodajeDodaje
nov element
na vrh steka.
PUSH
nov element
na vrh steka.
POP
Uklanja
vrha steka.
POP
Uklanja
elementelement
sa vrhasa
steka.
Unarna operacija
Izvodi operaciju na elementu na vrhu steka.
Unarna
Izvodi Menja
operaciju
na elementu
vrhu steka.
element
na vrhunarezultatom.
operacija
Menja Izvodi
element
na vrhu rezultatom.
Binarna operacija
operaciju
na dva gornja elementa steka.
Uklanja dva elementa steka. Stavlja rezultat
Binarna
Izvodi operaciju na dva gornja elementa steka.
operacije na vrh steka.
operacija
Uklanja dva elementa steka. Stavlja rezultat operacije na
vrh steka.

O3

O - 4Dodatak O / Stekovi

O.2IMPLEMENTACIJA STEKA
Stek je korisna struktura koja moe da se ostvari kao deo implementacije procesora. Jedna od njegovih upotreba, o kojoj se govori u odeljku
12.4, jeste da upravlja pozivima procedura i povratcima iz njih. Stekovi
takoe mogu da budu korisni za programera. Primer za to je odreivanje
vrednosti izraza, o emu se govori dalje u ovom odeljku.
Implementacija steka delimino zavisi od njegovih potencijalnih upotreba. Ako se eli da se operacije steka uine dostupnim programeru,
tada e skup instrukcija ukljuiti operacije orijentisane na stek, kao to su
PUSH, POP i operacije koje koriste jedan ili dva gornja elementa steka
kao operande. S obzirom na to da se sve takve operacije referenciraju na
jedinstvenu lokaciju, odnosno vrh steka, adresa operanda ili operanada je
implicitna i nema potrebe da se ukljui u instrukciju. To su instrukcije sa
nula adresa o kojima se govori u odeljku 12.1.
Ako mehanizam steka treba da koristi samo procesor, za takve svrhe
kao to je rukovanje procesima, onda u skupu instrukcija nee biti eksplicitnih instrukcija orijentisanih na stek. U oba sluaja, implementacija steka
zahteva da postoji neki skup lokacija koje se koriste za skladitenje elemenata steka. Tipian pristup ilustrovan je na slici O.2. Blok susednih lokacija
rezervie se za stek u glavnoj memoriji (ili u virtuelnoj memoriji). Blok je
u najveem delu vremena delimino popunjen elementima steka, a njegov
ostatak je na raspolaganju za porast steka.

Dodatak O / StekoviO

Registri
procesora

-5

Glavna
memorija

Granica
steka

Baza
steka

Slobodno

U
upotrebi

Blok
rezervisan
za stek

Opadajue adrese

Pokaziva
steka

Slika
O.2Tipima
Tipima organizacija
steka (pun/opadajui)
Slika
O.2
organizacija
steka (pun/opadajui)
Za ispravan rad potrebne su tri adrese i one se esto skladite u regi-

Zastrima
ispravan
rad potrebne su tri adrese i one se esto skladite u registr
procesora:
procesora:

Pokaziva steka (SP): Sadri adresu vrha steka. Ako se neka stavka
dodaje na stek ili uklanja sa njega, pokaziva se poveava ili smanjuje da bi sadrao adresu novog vrha steka.

Pokaziva steka (SP): Sadri adresu vrha steka. Ako se neka stavka do

na stek ili uklanja sa njega, pokaziva se poveava ili smanjuje da bi sadr


adresu novog vrha steka.

O - 6Dodatak O / Stekovi
Baza steka: Sadri adresu lokacije na dnu rezervisanog bloka. Ako se
pokua izvrenje instrukcije POP kada je stek prazan, izvetava se o
greci.
Granica steka: Sadri adresu suprotnog kraja rezervisanog bloka.
Ako se pokua izvrenje instrukcije PUSH kada je blok potpuno
upotrebljen za stek, izvetava se o greci.
Implementacije steka imaju dva kljuna atributa:
Rastui/opadajui: Rastui stek raste u pravcu rastuih adresa,
poevi od najnie i napredujui ka najvioj. Dakle, rastui stek je
onaj u kome se SP poveava kada se stavke umeu i opada kada
se stavke izvlae. Opadajui stek raste u pravcu opadajuih adresa,
poevi od vie i napredjujui ka nioj adresi. Veina maina ima
opadajue stekove kao pretpostavljene.
Pun/prazan: Ova terminologija zbunjuje, zato to se ne odnosi na to
da li je stek sasvim pun ili prazan. Umesto toga, SP moe da pokae
ili na stavku na vrhu steka (pun metod), ili na sledei slobodan prostor na steku (prazan metod). Za pun metod, kada je stek sasvim
popunjen, SP pokazuje na gornju granicu steka. Za prazan metod,
kada je stek potpuno prazan, SP pokazuje na bazu steka.
Slika O.1 je primer implementacije opadajui/pun (pod pretpostavkom
da su numeriki nie adrese nacrtane vie na stranici). Arhitektura ARM
doputa programeru sistema da odredi upotrebu operacija rastueg ili opadajueg, praznog ili punog steka. Arhitektura x86 koristi konvenciju opadajui/prazan.

Dodatak O / StekoviO

-7

O.3ODREIVANJE VREDNOSTI IZRAZA


Matematike formule se obino izraavaju na nain koji je poznat kao
infix notacija. U tom obliku, a binarni operator se pojavljuje izmeu operanada (na primer, a + b). Za sloene izraze, koriste se zagrade, da bi se utvrdio redosled izraunavanja izraza. Na primer, a + (b c) e dati drugaiji
rezultat od (a + b) c. Da bi se na najmanju meru svela upotreba zagrada,
operacije imaju implicitnu prednost. Obino, mnoenje ima prednost nad
sabiranjem, tako da je a + b c ekvivlentno a + (b c).
Alternativna tehnika je poznata kao obrnuta Poljska, ili postfix notacija.
U toj notaciji, operator sledi svoja dva operanda. Na primer,
a + b

postaje

ab+

a + (b c)

postaje

abc+

(a + b) c

postaje

ab+c

Zapazite da se, bez obzira na sloenost izraza, ne zahtevaju nikakve


zagrade kada se koristi obrnuta Poljska notacija.
Prednost postfix notacije je da se vrednost izraza u tom obliku lako
odreuje korienjem steka. Izraz u postfix notaciji skenira se sa leva na
desno. Za svaki element izraza primenjuju se sledea pravila:
1. Ako je element promenljiva ili konstanta, stavlja se na stek.
2. Ako je element operator, uzmu se dve gornje stavke sa steka, izvede
operacija i rezultat stavi na stek.

O - 8Dodatak O / Stekovi
Stek
Push a
Push b
Subtract
Push c
Push d
Push e
Multiply
Add
Divide
Pop f
Broj instrukcija 10
Pristup memoriji 10 op + 6 d

Opti registri
Load R1, a
Subtract R1, b
Load R2, d
Multiply R2, e
Add R2, c
Divide R1, R2
Store R1, f

Jedan registar
Load d
Multiply e
Add c
Store f
Load a
Subtract b
Divide f
Store f

7
7 op + 6 d

8
8 op + 6 d

Slika O.3 Poreenje tri programa za raunanje

Kada se skenira ceo izraz, rezultat je na vrhu steka.


Jednostavnost tog algoritma ini ga pogodnim za odreivanje vrednosti izraza. Prema tome, mnogi kompajleri e uzeti izraz u jeziku visokog
nivoa, pretvoriti ga u postfix notaciju, a zatim generisati mainske instrukcije iz te notacije. Na slici O.3 prikazana je sekvenca mainskih instrukcija
za odreivanje vrednosti f = (a b)/(c + d e) korienjem instrukcija
orijetisanih na stek. Slika takoe prikazuje upotrebu jednoadresnih i dvoadresnih instrukcija. Zapazita da je, ak iako pravila orijentisana na stek
nisu koriena u poslednja dva sluaja, postfix notacija sluila kao vodi
za generisanje mainskih instrukcija. Sekvenca dogaaja za stek program
prikazana je na slici O.4.

Dodatak O / StekoviO

-9

Slika
O.4
Upotreba
stekazazaraunanje
raunanje
(a b)/[(de)
Slika
O.4
Upotreba steka
f = (af =b)/[(de)
+ c] + c]
Processpretvaranje
pretvaranje infix
infix izraza
izraza uu postfix
najlake
obavProcess
postfix izraz
izrazsesei sam
i sam
najlake
obavlja
lja korienjem steka. Za sledei algoritam zasluan je Dijkstra [DIJK63].
Izraz u infix
notaciji
se skenira
sa leva
na desno,
a postfix[DIJK63].
izraz se razvija
korienjem
steka.
Za sledei
algoritam
zasluan
je Dijkstra
Izraz ui infix
izlazi za vreme skeniranja. Koraci algoritma su sledei:
notaciji se skenira sa leva na desno, a postfix izraz se razvija i izlazi za vreme
1. Ispitati sledei element na ulazu.
skeniranja. Koraci algoritma su sledei:
2. Ako je operand, uputiti ga na izlaz.
1. 3.
Ispitati
ulazu.
Akosledei
je leva element
zagrada,na
staviti
ga na stek.

je operator,
onda
2. 4.
AkoAko
je operand,
uputiti
ga na izlaz.
3. Ako je leva zagrada, staviti ga na stek.
4. Ako je operator, onda

O9

O - 10Dodatak O / Stekovi
Ako je na vrhu steka leva zagrada, staviti operator na stek.
Ako ima vii prioritet od vrha steka (mnoenje i deljenje imaju vii
prioritet od sabiranja i oduzimanja), onda staviti operator na stek.
Inae, skinuti operaciju sa steka uputiti je na izlaz i ponoviti korak 4.
5. Ako je desna zagrada, skinuti operatore sa steka i uputiti ih na izlaz sve
dok se ne naie na levu zagradu. Skinuti i odbaciti levu zagradu.
6. Ako ima jo ulaza, otii na korak 1.
7. Ako vie nema ulaza, skinuti preostale operande sa steka.
Na slici O.5 ilustrovana je upotreba ovog algoritma. Ovaj primer bi
trebalo da itaocu prui izvestan oseaj o snazi algoritama zasnovanih na
steku.

Reference
DIJK63 Dijkstra, E. Making an ALGOL Translator for the X1. In
Annual Review of Automatic Programming, Volume 4. Pergamon,
1963.

Dodatak O / StekoviO

Ulaz

Izlaz

Stek (vrh
desno)
prazan

prazan

prazan

prazan
prazan

- 11

prazan

Slika O.5 Pretvaranje izraza iz Infix u Postfix notaciju

Вам также может понравиться