arhitektura procesora...arhitektura procesora m inimalan skup komponenti od kojih je sastavljen neki...

15
Arhitektura procesora M inimalan skup komponenti od kojih je sastavljen neki raˇ cunarski sistem, naziva se mikroraˇ cunar . U okviru ovog predavanja upozna´ cemo se sa osnovnom strukturom mikroraˇ cunarskog sistema, nakon ˇ cega ´ cemo viˇ se paˇ znje posvetiti arhitekturi procesora. Na kraju predavanja, osvrnu´ cemo se na AVR arhitekturu Atmel mikrokontrolera. 1 Uvod - osnovna struktura mikroraˇ cunarskog sistema Minimalna hardverska konfiguracija mikroraˇ cunarskog sistema se sastoji od tri fundamentalne komponente: centralne procesorske jedinice (eng. Central Processing Unit - CPU), sistemske memorije i nekog oblika ulazno/izlaznog podsistema. Ove komponente su povezane viˇ sestrukim linijama grupisanim u skladu sa njihovim funkcionalnostima. Linije koje povezuju osnovne elemente mikroraˇ cunarskog sistema se nazivaju sistemske magistrale (eng. system buses ). Kao dodatak, osim tri osnovna elementa mikroraˇ cunarskog sistema, dodatne komponente obezbe duju neophodno napajanje sistema ali i vremensku sinhronizaciju neophodnu za normalnu funkcionalnost sistema. Na slici 1 moˇ ze se videti osnovna arhitektura mikroraˇ cunarskog sistema. Slika 1: Osnovna arhitektura mikroraˇ cunarskog sistema Komponente mikroraˇ cunarskog sistema mogu biti implementirane na najrazliˇ citije naˇ cine. Jedna implementacija podrazumeva da su svi elementi mikroraˇ cunarskog sistema nezavisne komponente 1

Upload: others

Post on 24-Dec-2020

20 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Arhitektura procesora...Arhitektura procesora M inimalan skup komponenti od kojih je sastavljen neki ra cunarski sistem, naziva se mikrora cunar. U okviru ovog predavanja upozna cemo

Arhitektura procesora

Minimalan skup komponenti od kojih je sastavljen neki racunarski

sistem, naziva se mikroracunar . U okviru ovog predavanja upoznacemo

se sa osnovnom strukturom mikroracunarskog sistema, nakon cega cemo vise

paznje posvetiti arhitekturi procesora. Na kraju predavanja, osvrnucemo se na AVR

arhitekturu Atmel mikrokontrolera.

1 Uvod - osnovna struktura mikroracunarskog sistema

Minimalna hardverska konfiguracija mikroracunarskog sistema se sastoji od tri fundamentalne

komponente: centralne procesorske jedinice (eng. Central Processing Unit - CPU), sistemske

memorije i nekog oblika ulazno/izlaznog podsistema. Ove komponente su povezane visestrukim

linijama grupisanim u skladu sa njihovim funkcionalnostima. Linije koje povezuju osnovne

elemente mikroracunarskog sistema se nazivaju sistemske magistrale (eng. system buses). Kao

dodatak, osim tri osnovna elementa mikroracunarskog sistema, dodatne komponente obezbeduju

neophodno napajanje sistema ali i vremensku sinhronizaciju neophodnu za normalnu

funkcionalnost sistema. Na slici 1 moze se videti osnovna arhitektura mikroracunarskog sistema.

Slika 1: Osnovna arhitektura mikroracunarskog sistema

Komponente mikroracunarskog sistema mogu biti implementirane na najrazlicitije nacine. Jedna

implementacija podrazumeva da su svi elementi mikroracunarskog sistema nezavisne komponente

1

Page 2: Arhitektura procesora...Arhitektura procesora M inimalan skup komponenti od kojih je sastavljen neki ra cunarski sistem, naziva se mikrora cunar. U okviru ovog predavanja upozna cemo

(cipovi), dok bi alternativno resenje bilo integracija svih komponenti u okviru jednog cipa, strukturi

koja se naziva Mikrokontroler.

Nezavisno od toga kako je realizovan mikroracunarski sistem, svaka od komponenti tog sistema

ima specificnu funkciju i namenu:

1. Centralna procesorska jedinica (CPU) cini jezgro svakog mikroracunarskog sistema. CPU

prima instrukcije iz programske memorije, dekoduje ih i izvrsava ih. Osim toga, CPU je

zaduzen i za adekvatno koriscenje periferijskih jedinica koje sacinjavaju ulazno/izlazni

podsistem.

2. Sistemska memorija je zaduzena za smestanje programa i podataka, koji se koriste od strane

centralne procesorske jedinice. Dva tipa memorijskih elementata se najcesce mogu pronaci

u okviru sistema: programska memorija i memorija podataka. Programska memorija ima

ulogu da skladisti programe u formi sekvence instrukcija koje ce se izvrsavati. Ovi programi

odreduju funkcionalnost celokupnog sistema. Memorija za podatke ima ulogu da skladisti

podatke koji se koriste tokom izvrsavanja programa.

3. Ulazno/Izlazni podsistem se cesto naziva i Periferijski podsistem i on ukljucuje sve

komponente, tj. periferije koje omogucavaju centralnom procesoru da razmenjuje

informacije sa drugim komponentama sistema i spoljasnim svetom.

4. Sistemske magistrale su skup linija koje povezuju CPU, memoriju i ulazno/izlazni podsistem.

Grupe ovih linija sistema imaju razlicite funkcije unutar sistema pa se one mogu podeliti na

adresnu magistralu, magistralu podataka i kontrolnu magistralu.

1.1 Razlike mikrokontrolera i mikroprocesora

Mikroprocesorska jedinica (ili skraceno mikroprocesor, eng. MPU) sadrzi centralnu procesorsku

jedinicu opste namene. Da bi se dizajnirao mikroracunarski sistem baziran na mikroprocesoru, svi

elementi sistema prikazani na slici 1 (magistrale, memorije i periferijske jedinice) moraju se povezati

kao eksterne komponente. Osim toga, karakteristike mikroprocesora su i:

• optimizovana arhitektura u cilju preuzimanja programa i podataka iz eksterne memorije

(skrivena memorija, eng. cache);

• mogucnost obradivanja vise instrukcija istovremeno;

• predvidanje grananja (eng. branch prediction);

• postojanje numerickih ko-procesora, itd.

Najtipicniji primeri mikroracunarskog sistema baziranog na mikroprocesorima su personalni

racunari (eng. Personal Computer, PC) kao i takozvani mainframe racunari. Najpoznatiji

proizvodaci mikroprocesora su Intel, Freescale, Zilog, Fujitsu, Siemens i mnogi drugi. Dizajn

mikroprocesora je znatno napredovao u poredenju sa prvobitnim modelima koji su se pojavili

pocetkom 70-tih godina proslog veka. Intel-ov prvobitni 4004 iz 1971. godine je bio napravljen u

10um tehnologiji, koristio je takt na 400kHz i bio je sacinjen od 2250 tranzistora. Intel-ov Xeon

2

Page 3: Arhitektura procesora...Arhitektura procesora M inimalan skup komponenti od kojih je sastavljen neki ra cunarski sistem, naziva se mikrora cunar. U okviru ovog predavanja upozna cemo

Slika 2: Arhitektura mikrokontrolera

E7 mikroprocesor, predstavljen 2011. godine, napravljen je u 32nm tehnologiji, koristi takt od

2GHz i sadrzi oko 2.6x109 tranzistora.

Mikrokontroleri (skraceno MCU od engleskog Micro Controller Unit), bazirani su na jezgru

mikroprocesora, odnosno centralnoj procesorskoj jedinici (CPU), uglavnom manje slozenosti u

poredenju sa mikroprocesorom. Ovakvom jednom CPU je dodata memorija (kako programska

tako i memorija za podatke) i nekoliko tipova periferijskih jedinica. Svi ovi elementi su integrisani

u jedno integrisano kolo (cip) i nazivaju se mikrokontroler.

Ovakva struktura mikrokontrolera omogucava fleksibilnost i minimalan broj eksternih

komponenti u cilju implementacije kompletnog sistema. Brojaci i tajmeri, ulazno/izlazni portovi,

blokovi za obradu prekida i konvertori podataka (analogno/digitalni i digitalno/analogni)

uglavnom spadaju u periferijske jedinice koje su sadrzane u vecini savremenih mikrokontrolera.

Na slici 2 prikazana je tipicna arhitektura mikrokontrolera.

Iako mikrokontroleri imaju vrlo slicne karakteristike kao i mikroprocesori opste namene, znatno

su manje kompleksnosti i vise su prilagodeni aplikaciji za koju su namenjeni. Mikrokontroleri su

uglavnom grupisani u kategorije (familije) koje karakterisu zajednicke karakteristike (struktura

registara, set instrukcija, modovi adresiranja, itd). Na trzistu je danas dostupan ogroman broj

najrazlicitijih mikrokontrolera, od preko hiljadu razlicitih proizvodaca. Jedan od njih je Atmel, a

njihova AVR familija u koju spada i mikrokontroler ATmega328P koji cemo mi koristiti u okviru

nastave, je najpopularnija familija mikrokontrolera danasnjice.

3

Page 4: Arhitektura procesora...Arhitektura procesora M inimalan skup komponenti od kojih je sastavljen neki ra cunarski sistem, naziva se mikrora cunar. U okviru ovog predavanja upozna cemo

1.2 RISC i CISC arhitektura

Mikroracunarski sistem sluzi za izvrsavanje softvera koji je podrzan od strane hardverske

arhitekture sistema. Mikroracunarski sistemi se uglavnom optimizuju tako da su optimizovani ili

sa stanovista softvera, ili sa stanovista hardvera. U skladu sa tim, postoje dve standardne

arhitekture mikroracunara: CISC i RISC.

CISC (Complex Instruction Set Computing) masine karakterise:

• promenljiva duzina instrukcijske reci (razlicit broj bita se koristi za kodovanje instrukcija);

• mala velicina programa i

• instrukcije koje se izvrsavaju tipicno u nekoliko sukcesivnih perioda sistemskog takta.

CISC arhitektura ima za cilj izvrsavanje sto vise operacija u okviru svake instrukcije, u cilju

generisanja jednostavnih programa (cesto prihvat iz memorije, izvrsavanje aritmeticke ili logicke

operacije i smestanje rezultata nazad u memoriju).

RISC (Reduced Instruction Set Computing) masine, sa druge strane, su dizajnirane sa fokusom

na jednostavnim instrukcijama, cak i po cenu vece velicine programa koji ce se izvrsavati. Ovakav

pristup pojednostavljuje strukturu hardvera. Kod RISC arhitekture, izvrsavanje svake pojedinacne

instrukcije je znatno skraceno u poredenju sa CISC arhitekturama.

2 Centralna procesorska jedinica (CPU)

Centralna procesorska jedinica je jezgro mikroracunarskog sistema. CPU je zaduzen za

izvrsavanje instrukcija, odnosno njegova uloga je da pretvara instrukcije u signale i akcije

izvrsavane na hardveru mikroracunarskog sistema. Minimalan skup komponenti koje definisu

arhitekturu centralne procesorske jedinice su:

• Hardverske komponente

– Aritmeticko-Logicka jedinica (eng. Arithmetic Logic Unit, ALU)

– Kontrolna jedinica (eng. Control Unit, CU)

– Skup registara

– Kontrola interfejsa magistrale

• Softverske komponente

– Set instrukcija

– Modovi adresiranja

Instrukcije i modovi adresiranja su determinisani i definisani specificnostima hardverskih jedinica

ALU i CU. Ovde cemo vise paznje posvetiti hardverskoj strukturi centralne procesorske jedinice.

Slika 3 prikazuje pojednostavljeni model centralne procesorske jedinice sa njenim internim

hardverskim blokovima. Ovi blokovi omogucavaju da CPU pristupa programu i podacima koji su

smesteni u memoriji i/ili periferijskim jedinicama. Sam program se sastoji od sekvence

pojedinacnih instrukcija koje su sadrzane u setu podrzanih instrukcija datog CPU. Program

4

Page 5: Arhitektura procesora...Arhitektura procesora M inimalan skup komponenti od kojih je sastavljen neki ra cunarski sistem, naziva se mikrora cunar. U okviru ovog predavanja upozna cemo

Slika 3: Centralna procesorska jedinica

smesten u memoriji odreduje sekvencu operacija koje ce se izvrsiti na sistemu. Prilikom obrade

podataka, svaka komponenta centralne procesorske jedinice igra vaznu ulogu i zaduzena je tacno

za jednu vrstu operacija koje ne mogu biti izvrsene od stane drugih komponenata, alternativno.

Hardverske komponente u okviru CPU koje izvrsavaju operacije na podacima su ALU, interna

magistrala podataka, ali i ostali funkcionalni blokovi kao sto su jedinica za aritmetiku u

pokretnom zarezu (eng. floating-point unit), hardverski mnozaci itd. Hardverske komponente

koje vrse operacije vezane za kontrolu sistema nazivaju se Kontrolna jedinica (eng. Control Unit).

Jedinica za kontrolu magistrale, kao i komponente za sinhronizaciju se takode najcesce

posmatraju kao deo Kontrolne jedinice.

2.1 Kontrolna jedinica (CU)

Kontrolna jedinica (CU) upravlja funkcionalnoscu centralne procesorske jedinice, implementirajuci

konacni automat (eng. Finite State Machine tj. FSM) koji ciklicno ponavlja tri stanja: Prihvat

(eng. Fetch), Dekodovanje (eng. Decode) i Izvrsavanje (eng. Execute), kao sto je prikazano na

slici 4. Ova tri stanja predstavljaju elementarne operacije koje se koriste prilikom izvrsavanja svake

pojedinacne instrukcije i odnose se na:

• prihvat instrukcije iz memorije

• dekodovanje instrukcije nakon cega CPU “zna” koja instrukcija treba da se izvrsi

• izvrsavanje instrukcije.

Prihvati-dekoduj-izvrsi ciklus se cesto u literaturi naziva i instrukcijski ciklus (eng. instruction

cycle ili CPU cycle). Kompletan instrukcijski ciklus tipicno zahteva nekoliko taktova procesora da

5

Page 6: Arhitektura procesora...Arhitektura procesora M inimalan skup komponenti od kojih je sastavljen neki ra cunarski sistem, naziva se mikrora cunar. U okviru ovog predavanja upozna cemo

Slika 4: Konacni automat Kontrolne jedinice

se izvrsi, u zavisnosti od same instrukcije i operanada koji se u njoj koriste (konstante, varijable iz

memorije ili sadrzaji lokalnih registara). Neretko se desava da CPU ima svoj interni takt koji je

vise ucestanosti od sistemskog takta (cak i do cetiri puta vise). U takvim slucajevima, u literaturi

se moze videti da je za izvrsenje instrukcije dovoljan jedan sistemski takt, sto je naravno tacno,

ali treba imati u vidu da se zapravo instrukcija izvrsi nakon cetiri (ili vise) internih taktova.

Nekoliko blokova ucestvuje u instrukcijskom ciklusu, medu kojima specijalnu ulogu imaju registri

PC (programski brojac, eng. Program Counter) i IR (instrukcijski registar, eng. Instruction

Register). Kompletan ciklus se moze opisati kao:

1. Stanje Prihvata instrukcije: tokom stanja prihvatanja nove instrukcije, koriscenjem bloka

kontrole interfejsa magistrale (eng. Bus Interface Logic - BIL), instrukcija iz memorije stize

do CPU. Programski brojac (PC) obezbeduje adresu u memoriji sa koje se instrukcija cita.

Novo procitana instrukcija se cita koriscenjem magistrale podataka i smesta se u instrukcijski

registar (IR);

2. Stanje Dekodovanja instrukcije: nakon prihvata instrukcije, CU prelazi u stanje dekodovanja,

u kome se znacenje instrukcije “desifruje”. Dekodovana informacija se koristi kako bi se slali

odgovarajuci signali ka odgovarajucim CPU komponentama u cilju izvrsavanja aktivnosti

predvidenih samom dekodovanom instrukcijom;

3. Stanje Izvrsavanja instrukcije: u ovom stanju, CU salje komande odgovarajucim

funkcionalnim jedinicama u okviru CPU u cilju izvrsavanja aktivnosti odredenih

instrukcijom. Na kraju ove faze izvrsavanja, sadrzaj programskog brojaca se inkrementira,

kako bi pokazivao na adresu sledece instrukciju koja ce se izvrsiti u narednom

instrukcijskom ciklusu.

Nakon izvrsne faze, CU salje komande bloku kontrole interfejsa magistrale, kako bi ona koristeci

sadrzaj programskog brojaca preuzela narednu instrukciju iz memorije, cime se inicira naredni

6

Page 7: Arhitektura procesora...Arhitektura procesora M inimalan skup komponenti od kojih je sastavljen neki ra cunarski sistem, naziva se mikrora cunar. U okviru ovog predavanja upozna cemo

Slika 5: Jednostavna aritmeticko-logicka jedinica

instrukcijski ciklus (novi prihvat instrukcije).

Ciklus moze obuhvatati medu-cikluse slicne instrukcijskom ciklusu, u slucaju kada je tokom

dekodovanja instrukcije potrebno preuzeti iz memorije dodatne podatke (npr. za instrukciju koja

sabira dva broja, brojeve koje treba sabrati). Ovo takode zavisi i od moda adresiranja koji se

koristi, ali o ovome cemo vise pricati kasnije.

Obzirom na to da je Kontrolna jedinica realizovana kao konacan automat, neophodan je Reset

signal kako bi se inicirao ciklus na pocetku izrsavanja prve istrukcije. U cilju preuzimanja prve

instrukcije iz memorije, sadrzaj programskog brojaca nakon reseta je uvek takav da pokazuje na

prvu instrukciju koja treba da se izvrsava (u slucaju mikrokontrolera, to je uglavnom adresa 0).

Adresa prve instrukcije se cesto naziva reset vektor.

2.2 Aritmeticko Logicka jedinica (ALU)

Aritmeticko logicka jedinica je CPU komponenta zaduzena za sve aritmeticke i logicke operacije

koje treba izvrsiti u datom mikroracunarskom sistemu. Osnovne aritmeticke operacije kao sto su

sabiranje, oduzimanje i komplement (predstava negativnih brojeva), podrzane su od strane svih

ALU. Neke slozenije, sa druge strane, ukljucuju i hardverske komponente za kompleksnije

operacije, kao sto su mnozenje i deljenje. Ipak, u vecini slucajeva ove operacije se vrse ili

softverski (koriscenjem nekog od algoritama i vec postojecih elementarnih aritmetickih operacija)

ili koriscenjem dodatnih periferijskih jedinica, kao sto je na primer hardverski mnozac.

Logicke operacije koje se tipicno izvrsavaju od strane ALU su operacije koje rade sa pojedinacnim

bitima u okviru bajta ili reci (I, ILI, NE, EX-ILI). Takode, u ove operacije spadaju i pomeranje i

rotiranje. Ove operacije su izuzetno znacajne jer omogucavaju promenu odredenih bita u registrima,

bez uticaja na ostale bite.

Kontrolna jedinica upravlja aritmeticko-logickom jedinicom tako sto specificira koja operacija

7

Page 8: Arhitektura procesora...Arhitektura procesora M inimalan skup komponenti od kojih je sastavljen neki ra cunarski sistem, naziva se mikrora cunar. U okviru ovog predavanja upozna cemo

Slika 6: AND, OR i sabirac/oduzimac koji se koriste unutar ALU

treba da se izvrsi, prosleduje joj promenljive nad kojima se vrsi operacija, i obezbeduje prostor gde

ce biti sacuvan rezultat. Kapacitet ALU je odreden arhitekturom mikroprocesora: na primer, za

16-bitni mikroprocesor ALU ima mogucnosti izvrsavanja operacija na 16-bitnim podacima. Ovo

uveliko odreduje i samu strukturu mikroprocesora, jer podrazumeva da je sirina magistrale podataka

takode 16, kao i velicina registara koji se koriste.

Primer aritmeticko logicke jedinice je prikazan na slici 5. Ova jednostavna ALU ima mogucnost

izvrsavanja jedne od cetiri operacije: sabiranje, oduzimanje, logicko AND i logicko OR. Ulaz op

odreduje koja ce se operacija izvrsavati u skladu sa tabelom:

op Operacija

00 AND

01 sabiranje

10 OR

11 oduzimanje

Slika 6 prikazuje strukturu kombinacionih mreza koje se koriste za izvrsavanja aritmetickih i

logickih operacija u okviru ALU.

2.3 Kontrola interfejsa magistrala

Kontrola interfejsa magistrala je struktura u okviru centralno procesorske jedinice koja koordinira

interakciju izmedu internih magistrala i sistemskih magistrala. Ovaj blok definise nacin na koji

eksterne adrese, podaci i kontrolna magistrala funkcionisu. U slucaju jednostavnih sistema ovaj blok

je sadrzan u okviru CPU, dok je u slucaju slozenijih sistema najcesce potrebno dodavanje eksternih

modula koji su zaduzeni da obezbede ovu funkcionalnost. Primeri ovih modula su periferije za

kontrolu magistrala, mostovi (eng. bridges) i hardverski moduli za arbitriranje na magistralama.

2.4 Registri

CPU registri omogucavaju privremeno smestanje podataka, memorijskih adresa i kontrolnih

informacija na nacin da im se moze brzo i jednostavno pristupiti. Oni predstavljaju najbrzu

memoriju u mikroracunarskom sistemu, ali sa druge strane imaju i najmanji kapacitet. Sadrzaj

8

Page 9: Arhitektura procesora...Arhitektura procesora M inimalan skup komponenti od kojih je sastavljen neki ra cunarski sistem, naziva se mikrora cunar. U okviru ovog predavanja upozna cemo

registara u okviru CPU se gubi nakon nestanka napajanja. U nacelu, registri se mogu podeliti u

dve grupe: registri opste namene i specijalizovani registri.

Registri opste namene su registri koji nisu “vezani” za specificne funkcije procesora i mogu da

se koriste za smestanje podataka, promenljivih ili pokazivaca na adrese, po potrebi. U skladu sa

ovim, cesto se u literaturi klasifikuju kao adresni ili registri za podatke. U zavisnosti od arhitekture

procesora, CPU moze sadrzati do nekoliko desetina registara opste namene.

Registri specijalne namene su registri koji su zaduzeni za specificne funkcije u radu CPU.

Najosnovniji registri koji su sadrzani u okviru CPU strukture su:

• Instrukcijski registar (IR)

• Programski brojac (PC) koji se cesto naziva i Instrukcijski pokazivac (eng. Instruction

Pointer -IP)

• Pokazivac steka (eng. Stack Pointer -SP)

• Statusni registar (eng. Status Register -SR)

2.4.1 Instrukcijski registar (IR)

Instrukcijski registar cuva instrukciju koja se trenutno dekoduje i izvrsava od strane CPU. Akcija

prenosa instrukcije iz memorije u IR se naziva Prihvat instrukcije.

2.4.2 Programski brojac (PC)

Ovaj registar cuva adresu instrukcije koja ce biti prihvacena iz memorije od strane centralne

procesorske jedinice. Cesto se naziva i instrukcijski pokazivac. Svaki put kada se instrukcija

prihvata i dekoduje, kontrolna jedinica inkrementira vrednost PC registra kako bi pokazivao na

narednu instrukciju koja ce se izvrsavati iz memorije. Ovakvo ponasanje se moze promeniti tokom

izvrsavanja programa, na vise nacina (npr. instrukcijama grananja kada se sadrzaj programskog

brojaca zamenjuje novom adresom na koju treba skociti). Obzirom da PC sadrzi adresu, njegova

sirina mora biti uskladena sa velicinom programske memorije.

Programski brojac nije predviden da mu se sadrzaj menja direktno iz programa koji se izvrsava.

Ovog pravila se pridrzavaju tradicionalne arhitekture, jer ne omogucavaju da PC bude dostupan kao

operand instrukcija. Novije RISC arhitekture su postale malo fleksibilnije u tom smislu u pokusaju

da pojednostave programiranje. Ipak, i u slucaju novijih RISC arhitektura, ova fleksibilnost treba

biti koriscena oprezno kako se ne bi narusio korektan tok izvrsavanja programa.

2.4.3 Pokazivac steka (SP)

Stek je specijalizovan memorijski segment koji se koristi za privremeno smestanje podataka u

specificnom redosledu. Sama operacija smestanja i prihvatanja podataka u skladu sa ovim

redosledom upravljana je od strane CPU koriscenjem pokazivaca steka. Nekolicina

mikrokontrolera koristi fiksnu poziciju steka u memorijskom prostoru, dok je u vecini slucajeva

dozvoljeno korisniku da definise poziciju steka u okviru RAM sekcije (ukoliko to ne uradi korisnik,

automatski ce se dodeliti prostor tokom procesa kompajliranja). Sadrzaj pokazivaca steka se

9

Page 10: Arhitektura procesora...Arhitektura procesora M inimalan skup komponenti od kojih je sastavljen neki ra cunarski sistem, naziva se mikrora cunar. U okviru ovog predavanja upozna cemo

Slika 7: Stek i pokazivac steka

odnosi na vrh stek memorije. Ova pozicija govori CPU gde se nalazi poslednje smesteni podatak.

Operacija smestanja podatka na stek se u literaturi najcesce naziva push operacija, dok se citanje

podatka sa steka naziva pop operacija. Svaki put prilikom koriscenja steka, sadrzaj pokazivaca

steka se menja.

Termin stek (eng. stack) je preuzet iz analogije slaganja tanjira koje se vrsi u prirodnom LIFO

(Last-In-First-Out) maniru: tanjir koji je poslednji stavljen na gomilu je onaj koji mora prvi biti

uzet sa gomile, u suprotnom ce vrlo verovatno tanjiri pasti i razbiti se. Upravo se iz tog razloga

sadrzaj steka upravo odnosi na vrh steka.

Medutim, u vecini implementacija, popunjavanjem steka, on raste na “dole” umesto na “gore”.

To zapravo znaci da se vrednost SP smanjuje svaki put kada se na stek stavi novi podatak, a

povecava se kada se podatak podigne sa steka. SP se obicno inicijalizuje na poslednju (najvisu)

adresu u RAM memoriji, da bi ovakav mehanizam bio omogucen. Na primeru sa slike 7 cemo videti

kako funkcionise stek.

Prilikom inicijalizacije, stek je prazan i pokazivac pokazuje na adresu 10. Nakon postavljanja

nekoliko podataka na stek (njih 5), pokazivac steka je pomeren na 5. Ukoliko bi se jos jedan podatak

stavljao na stek, on bi bio postavljen na adresu 5 (broj 8 sa slike). Ipak, ukoliko se cita podatak sa

steka (operacijom pop), pokazivac steka se pomera na 6, jer je poslednje procitan podatak uklonjen

sa steka (broj 67). Nakon jos jednog uklanjanja, pokazivac steka se povecava na 7, nakon sto se

podatak sa vrha steka uklanja (broj 125).

Osnovna uloga steka je kontrola toka programa u slucaju pozivanja procedura (funkcija kako se

one nazivaju u nekim programskim jezicima). Procedure (funkcije) su skupovi instrukcija grupisani

u celine, u cilju smanjenja ukupne velicine programa. Da bismo ilustrovali problem, posmatramo

sledeci primer: ukupna velicina memorije je 256 bajtova, glavni program je velicine 100 bajtova, za

sabiranje dva broja potrebno je 10 bajtova i neka je tokom izvrsavanja glavnog programa potrebno

5 puta sabrati dva broja (Slika 8).

Ukoliko ne bismo koristili procedure, samo za ovakvo sabiranje bi nam bilo potrebno 50 bajtova.

Ako, pak, definisemo proceduru za sabiranje brojeva, i nju samo pozivamo kad god zelimo da

saberemo dva broja, potrebna memorija u tom slucaju je samo 10 bajtova (ako se zanemari velicina

same instrukcije za poziv procedure, koja je uglavnom zanemarljiva u odnosu na velicinu same

procedure). U primeru sa slike 8, glavni program pocinje na adresi 0 i zavrsava se na adresi 99

(ukupna velicina glavnog programa je 100 bajtova), dok procedura Saberi pocinje na adresi 145.

Stek se nalazi na dnu memorijskog prostora i popunjava se na “gore”.

10

Page 11: Arhitektura procesora...Arhitektura procesora M inimalan skup komponenti od kojih je sastavljen neki ra cunarski sistem, naziva se mikrora cunar. U okviru ovog predavanja upozna cemo

Slika 8: Sadrzaj memorije u primeru poziva procedure Saberi

Problem koji ovde nastaje se odnosi na mesto povratka nakon sto se izvrsi procedura, jer procesor

nakon sto izvrsi proceduru do kraja, mora da se vrati na ono mesto sa koga je procedura bila

pozvana. Kao sto je receno, ovo se desava na 5 razlicitih mesta u nasem programu, i procesor svaki

put nakon izvrsenja procedure mora da zna na koju lokaciju u memoriji mora da se vrati kako bi

nastavio sa radom. Tok izvrsavanja programa koji poziva proceduru Saberi prikazan je u sledecim

koracima:

1. Na pocetku izvrsavanja glavnog programa sadrzaj programskog brojaca je PC=0 i program

pocinje da se izvrsava pocevsi sa adresom 0;

2. PC se uvecava nakon izvrsenja svake instrukcije i nakon odredenog vremena dode do 30. Na

adresi 30 se nalazi prvi poziv procedure Saberi. U ovom trenutku pokazivac steka ima sadrzaj

255 (0xFF) sto znaci da je stek prazan;

3. Da bi procesor znao gde treba da se vrati nakon sto se izvrsi procedura Saberi, na vrh steka se

stavlja adresa povratka, koja je jednaka trenutnoj vrednosti PC uvecanoj za 1. Dakle, nakon

ovog koraka na lokaciju na koju pokazuje pokazivac steka se upisuje broj 31 (slika 9 levo);

4. Pokazivac steka se umanjuje za 1 kako bi pokazivao na sledecu lokaciju na koju ce se upisati

sledeci podatak na stek (SP=0xFE, tj SP=254);

5. U PC se upisuje adresa pocetka procedure Saberi, koja je jednaka 145 (0x91);

6. Posto PC uvek pokazuje na instrukciju koja ce sledeca da se izvrsi, nakon ovoga ce krenuti

da se izvrsava prva instrukcija iz procedure Saberi;

7. PC se uvecava nakon izvrsenja svake instrukcije, slicno kao u koraku 2. Kada dode do kraja

procedure, imace vrednost PC=154 (0x9A);

11

Page 12: Arhitektura procesora...Arhitektura procesora M inimalan skup komponenti od kojih je sastavljen neki ra cunarski sistem, naziva se mikrora cunar. U okviru ovog predavanja upozna cemo

Slika 9: Stavljanje povratne adrese na vrh steka (levo) i preuzimanje adrese sa steka (desno)

8. U ovom trenutku izvrsavanje treba da se vrati na mesto u glavnom programu gde je bilo

prekinuto pozivom procedure Saberi, a to ce se desiti tako sto se sa vrha steka podigne adresa

koja je prethodno bila upisana i ta vrednost se upise u PC. Da bi se ovo uradilo potrebno

je najpre uvecati vrednost pokazivaca steka za 1 kako bismo se vratili na poslednji upisani

podatak: SP = 0xFF (slika 9 desno);

9. Vrednost sa adrese na koju pokazuje SP se upisuje u PC: PC = 31 (0x1F);

10. Nakon ovoga, stek je ponovo prazan, SP = 0xFF, a naredna instrukcija koja ce se izvrsavati je

prva instrukcija koja sledi nakon prvog poziva procedure Saberi, tj. instrukcija koja pocinje

na adresi 31 (0x1F);

11. Na slican nacin, kada sledeci put bude bila pozvana procedura Saberi (pozivom sa adrese 48)

mikroprocesor ce znati da, kada se zavrsi procedura, treba da se vrati na adresu 49, kada se

pozove sa adrese 60 da se vrati po zavrsetku na adresu 61 itd...

Stek omogucava ugnjezdavanje poziva procedura. Na primer, stek bi omogucio pozivanje neke

druge procedure (npr. Oduzmi) tokom izvrsavanja procedure Saberi. U tom slucaju nakon poziva

procedure Oduzmi iz procedure Saberi, na steku bi se nalazile dve povratne adrese:

1. na vrhu steka bi bila adresa koja se odnosi na adresu unutar procedure Saberi gde se treba

vratiti nakon izvrsenja procedure Oduzmi;

2. ispod nje je druga adresa koja predstavlja adresu u okviru glavnog programa, na koju se treba

vratiti kada se izvrsi do kraja procedura Saberi.

12

Page 13: Arhitektura procesora...Arhitektura procesora M inimalan skup komponenti od kojih je sastavljen neki ra cunarski sistem, naziva se mikrora cunar. U okviru ovog predavanja upozna cemo

Slika 10: Primeri elementarnih aritmetickih operacija

2.4.4 Statusni registar (SR)

Statusni registar na engleskom se cesto naziva i Processor Status Word (PSW) registar ili Flag

registar i on sadrzi skup indikatorskih bita (eng. flags). Indikatorski biti su zapravo biti koji

predstavljaju specificno stanje u kome se nalazi procesor.

Broj statusnih bita kao i uslovi koji su signalizirani takvim statusnim bitima su najcesce zavisni

od samog mikrokontrolera ili, u opstem slucaju, centralne procesorske jedinice. Vecina indikatorskih

bita predstavlja stanje neposredno nakon izvrsavanja instrukcije koja je poslednja izvrsena od strane

ALU, iako, u nacelu, oni mogu biti menjani direktno iz programa. Najcesci indikatorski biti koji

se mogu naci u slucaju vecine platformi su:

• Indikator nule (Zero flag-ZF) se postavlja na logicko 1 kada je rezultat ALU jednak nuli, u

suprotnom je postavljen na 0

• Indikator prenosa (Carry flag-CF) je postavljen na 1 u slucajevima da je ALU operacija

proizvela rezultat sa prenosom (npr. sabiranjem dva 8-bitna broja je dobijen 9-bitni broj).

Postoje i instrukcije koje imaju uticaj na ovaj indikator, a nisu vezane za elementarne

aritmeticke operacije

• Indikator znaka (Negative flag ili Sign flag, NF) se postavlja na 1 kada je rezultat ALU

operacije negativan, dok je 0 u suprotnom.

• Indikator prekoracenja (Overflow flag-VF) signalizira prekoracenje prilikom operacije

sabiranja ili oduzimanja oznacenih brojeva (koji mogu biti kako pozitivni tako i negativni)

• Indikator prekida (Interrupt flag-IF) sluzi da dozvoli/zabrani zaustavljanje programa nakon

pojave eksternog dogadaja (prekida).

Osim gore navedenih indikatorskih bita, razlicite familije mikrokontrolera mogu imati znatno vise

indikatora na raspolaganju. Na slici 10 je prikazan primer postavljanja indikatorskih bita prilikom

aritmetickih operacija.

U gornjem primeru vrednosti statusnih bita su:

• 4Ah + 79h = C3h : C = 0, N = 1, Z = 0 i V = 1

• B4h + 4Ch = 100h : C = 1, N = 0, Z = 1 i V = 0

• 9Ah + B9h = 153h : C = 1, N = 0, Z = 0 i V = 1

• CAh + 1Bh = E5h : C = 0, N = 1, Z = 0 i V = 0

13

Page 14: Arhitektura procesora...Arhitektura procesora M inimalan skup komponenti od kojih je sastavljen neki ra cunarski sistem, naziva se mikrora cunar. U okviru ovog predavanja upozna cemo

Slika 11: AVR CPU arhitektura

Treba obratiti paznju da se prekoracenje ne desava u slucajevima kada su oba operanda prilikom

sabiranja razlicitog znaka, tj. kada im se razlikuju MSB (bitovi najvece znacajnosti). N i V

indikatorski biti se uglavnom odnose na oznacene brojeve u aritmetickim operacijama oduzimanja

i sabiranja. Indikator nule ovek pokazuje, nezavisno od operacije, da li je rezultat 0 ili nije.

3 AVR CPU arhitektura

Arhitektura AVR familije mikrokontrolera je prikazana na slici 11.

U cilju maksimizovanja performansi i povecanja paralelizma, AVR familija mikrokontrolera

koristi Harvard arhitekturu, sa odvojenim memorijskim prostorom i magistralama za programsku

i memoriju podataka. Instrukcije iz programske memorije se izvrsavaju u protocnoj obradi prvog

nivoa: dok se jedna instrukcija izvrsava, naredna instrukcija se prihvata iz programske memorije.

Ovaj koncept omogucava da se u svakom taktu izvrsi jedna instrukcija. Programska memorija je

realizovana kao fles memorija koja moze da se reprogramira direktno u sistemu (eng.

In-System-Programmable).

32 8-bitna registra opste namene sa brzim pristupom omogucavaju pristup podacima u jednom

ciklusu sistemskog takta. Ovo omogucava aritmeticko-logickoj jedinici izvrsavanje takode u jednom

taktu. ALU tipicno preuzima dva operanda iz registara opste namene, izvrsava potrebnu operaciju

i rezultat smesta nazad u registre opste namene, sve u jednom taktu. ALU, osim toga, omogucava

aritmeticke i logicke operacije izmedu registara ili izmedu registra i konstante. Takode, operacije sa

14

Page 15: Arhitektura procesora...Arhitektura procesora M inimalan skup komponenti od kojih je sastavljen neki ra cunarski sistem, naziva se mikrora cunar. U okviru ovog predavanja upozna cemo

jednim registrom se mogu izvrsiti od strane aritmeticko-logicke jedinice. Nakon svake aritmeticke

operacije, statusni registar se azurira kako bi adekvatno prikazao informacije u vezi sa rezultatom

operacije.

Tokom prekidnih rutina i poziva pod-procedura, povratna adresa programskog brojaca (PC) se

smesta na stek. Stek se nalazi u okviru SRAM memorije za podatke, te je samim tim njegov

kapacitet ogranicen samo kapacitetom SRAM memorije. Svi korisnicki programi moraju

inicijalizovati pokazivac steka (SP) tokom reset rutine (pre nego sto se prva pod-procedura ili

prekidna rutina izvrse).

Statusni registar sadrzi informacije u vezi sa rezultatom poslednje izvrsene aritmeticke

instrukcije. Ova informacija se moze iskoristiti da promeni tok programa koriscenjem

kondicionalnih operacija. Sadrzaj statusnog registra se ne cuva automatski prilikom ulaska u

prekidnu rutinu (niti se restaurira nakon zavrsetka iste), te ovo mora da se obavlja iz korisnickog

programa. Statusni biti koji sacinjavaju statusni registar u AVR arhitekturi su:

• I - Bit za globalnu dozvolu prekida (eng. Global Interrupt Enable bit). Ovaj statusni bit se

koristi da zabrani/dozvoli sve prekide

• T - Bit Copy Storage se koristi za operacije sa bitima (prilikom kopiranja bita, kao izvoriste

i odrediste)

• H - Indikator polu-prenosa (eng. Half Carry bit) se koristi u nekim aritmetickim

instrukcijama, a posebno je koristan u BCD aritmetici

• S - Indikator znaka (eng. Sign bit) je u svakom trenutku jednak N ⊕ V (gde je ⊕ simbol za

operaciju Ekskluzivno ILI)

• V - Indikator prekoracenja komplementa dvojke (eng. Two’s Complement Overflow Flag)

omogucava aritmetiku sa komplementom dvojke

• N - Indikator negativnog (eng. Negative Flag) se koristi da signalizira negativan rezultat

aritmeticke ili logicke operacije

• Z - Indikator nule (eng. Zero Flag) signalizira da je rezultat poslednje aritmeticke ili logicke

operacije nula

• C - Indikator prenosa (eng. Carry Flag) se koristi kao prenos u aritmetickim i logickim

operacijama.

15