24
2 2. MicroBlaze procesor 2.1. Arhitektura MicroBlaze procesora MicroBlaze procesor je RISC procesor optimizovan za primenu na Xilinx FPGA čipovima[1]. Slika 1. Blok-dijagram MicroBlaze jezgra MicroBlaze procesor je izuzetno konfigurabilan, što omogućava korisniku da izabere željene karakteristike procesora potrebne za određenu namenu. Standardne karakteriskike procesora obuhvataju: Trideset dva 32-bitna registra opšte namene, 32-bitne instukcijske reči sa tri operanda i dva načina adresiranja, 32-bitnu adresnu magistralu, Jednostruki pipeline Pored ovih standardnih karakteristika, MicroBlaze procesoru se, pomoću određenih parametara, može selektivno dodati čitav niz dodatnih funkcija.

Bitno o Microblaze Procesoru

Embed Size (px)

DESCRIPTION

VHDL

Citation preview

Page 1: Bitno o Microblaze Procesoru

Ljubomir Papuga Diplomski rad

2

2. MicroBlaze procesor

2.1. Arhitektura MicroBlaze procesora

MicroBlaze procesor je RISC procesor optimizovan za primenu na Xilinx FPGA čipovima[1].

Slika 1. Blok-dijagram MicroBlaze jezgra

MicroBlaze procesor je izuzetno konfigurabilan, što omogućava korisniku da

izabere željene karakteristike procesora potrebne za određenu namenu. Standardne karakteriskike procesora obuhvataju:

• Trideset dva 32-bitna registra opšte namene, • 32-bitne instukcijske reči sa tri operanda i dva načina adresiranja, • 32-bitnu adresnu magistralu, • Jednostruki pipeline

Pored ovih standardnih karakteristika, MicroBlaze procesoru se, pomoću

određenih parametara, može selektivno dodati čitav niz dodatnih funkcija.

Page 2: Bitno o Microblaze Procesoru

Ljubomir Papuga Diplomski rad

3

2.1.1. Tipovi podataka

MicroBlaze koristi Big-Endian način prikazivanja podataka i podržava reč, polu-reč i bajt tipove podataka.

2.1.2. Instrukcije

Sve instrukcije su 32-bitne i definišu se kao tip A ili tip B. Tip A instrukcije imaju do dva izvorna operanda i jedan odredišni operand. Tip B instrukcije imaju jedan izvorni registarski operand i 16-bitni trenutni operand, koji se može proširiti na 32-bitni korišćenjem imm instrukcije pre instrukcije tipa B. Tip B instrukcije imaju jedan odredišni registarski operand. Instrukcije se mogu podeliti u sledeće funkcionalne kategorije:

• aritmetičke, • logičke, • instrukcije grananja, • učitaj / upiši instrukcije, • specijalne, itd.

2.1.3. Registri

MicroBlaze procesor sadrži trideset dva 32-bitna registra opšte namene i do osamnaest 32-bitnih registara posebne namene, u zavisnosti od podešenih opcija. Registri opšte namene (R0 – R31)

• R0 : ima uvek vrednost 0, sve što se upisuje u R0 se odbacuje • R1-R13 : 32-bitni registi opšte namene • R14 : 32-bitni registar namenjen za upisivanje povratne adrese interrupt

prekida • R15 : 32-bitni registar opšte namene. Preporuka je da se koristi za upisivanje

povratne adrese korisničkog vektora • R16 : 32-bitni registar namenjen za čuvanje povratne adrese break prekida • R17 : ako je procesor konfigurisan da podržava hardverske izuzetke, u njega

se upisuje adresa instrukcije koja sledi nakon instrukcije koja uzrokuje hardverski izuzetak

• R18-R31 : 32-bitni registri opšte namene Registri posebne namene

Programski brojač (PC – Program Counter) – predstavlja 32-bitnu adresu izvršne instrukcije.

Page 3: Bitno o Microblaze Procesoru

Ljubomir Papuga Diplomski rad

4

Mašinski statusni registar (MSR – Machine Status Register) – sadrži statusne i kontrolne bite za procesor

• bit0 (CC – Arithmetic Carry Copy) - kopija bita prenosa (bita 29) • bit1-bit16 – rezervisani biti • bit17 (VMS – Virtual Protected Mode Save) – dostupan samo kada je

konfigurisan sa MMU • bit18 (VM – Virtual Protected Mode) – kontrola dozvole prevođenja i pristupa

MMU adresi • bit19 (UMS – User Mode Save) – dostupan samo kada je konfigurisan sa

MMU • bit20 (UM – User Mode) – kontrola korisničkog moda • bit21 (PVR – Processor Version Register exists) – označava da li postoji

registar verzije procesora • bit22 (EIP – Exception In Progress) – označava da li je u toku hardverski

izuzetak • bit23 (EE – Exception Enable) – kontrola dozvole hardverskih izuzetaka • bit24 (DCE – Data Cache Enable) – kontrola dozvole korišćenja keš

memorije podataka • bit25 (DZ – Division by Zero) – označava da li se dogodilo deljenje s nulom • bit26 (ICE – Instruction Cache Enable) – kontrola dozvole korišćenja keš

memorije instrukcija • bit27 (FSL – FSL Error) – označava da li je bilo FSL greške i dostupan je

samo kada se koristi FSL link • bit28 (BIP – Break In Progress) – označava da li je break prekid u toku • bit29 (C - Carry) – bit prenosa • bit30 (IE – Interrupt Enable) – kontrola dozvole interrupt prekida • bit31 (BE – Buslock Enable) – kontrola dozvole zatvaranja magistrale

Registar adrese izuzetaka (EAR – Exception Address Register) – čuva punu

adresu koja je uzrokovala izuzetak.

Statusni registar izuzetaka (ESR – Exception Status Register) – sadrži statusne bite za procesor, koji su vezani za izuzetke.

• bit0-bit18 – rezervisani biti • bit19 (DS – Delay Slot Exception) – označava da li je izuzetak uzrokovan

instrukcijom vremenskog kašnjenja • bit20-bit26 (ESS – Exception Specific Status) – sadrži statusne podatke vezane

za specifične tipove izuzetaka • bit27-bit31 (EC – Exception Cause) – sadrži podatke vezane za uzrok

izuzetka.

Registar ciljne adrese grananja (BTR – Branch Target Register) – postoji samo ako je MicroBlaze procesor konfigurisan da podržava izuzetke. Ako je izuzetak uzrokovan instrukcijom u vremenskom kašnjenju, upravljač izuzetkom treba da vrati izvršavanje na adresu iz ovog registra umesto na povratnu adresu izuzetka koja je upisana u registar opšte namene R17.

Page 4: Bitno o Microblaze Procesoru

Ljubomir Papuga Diplomski rad

5

Floating Point statusni registar (FSR – Floating Point Status Register) – sadrži statusne bite za Floating Point jedinicu.

• bit0-bit26 – rezervisani biti, • bit27 (IO – Invalid Operation) – nevažeća operacija, • bit28 (DZ – Divide-by-Zero) – deljenje nulom, • bit29 (OF - Overflow) – prekoračenje, • bit30 (UF - Underflow) – potkoračenje, • bit31 (DO – Denormalized Operand error) – greška usled denormalizovanog

operanda.

Registar podataka izuzetaka (EDR – Exception Data Register) – čuva podatke sa FSL linka koji je prouzrokovao FSL izuzetak.

Identifikator Procesa (PID – Process Identifier Register) – koristi se da jedinstveno identifikuje softverski proces prilikom prevođenja MMU adrese.

Registar zaštićenih zona (ZPR – Zone Protection Register) – koristi se da zaobiđe MMU memorijsku zaštitu definisanu u TLB unosima. Primena registarskih bita zavisi od broja navedenih zaštićenih memorijskih zona.

TLBLO i TLBHI (Translation Look-Aside Buffer Low i High) registri služe za pristup MMU UTLB (Unified Translation Look-Aside Buffer) unosima za prevođenje adresa, dok TLBX (Translation Look-Aside Buffer Index) registar služi kao indeks za UTLB prilikom pristupa TLBLO i TLBHI registrima. TLBSX (Translation Look-Aside Buffer Search Index) registar služi za pronalaženje virtuelnog broja stranice u UTLB.

Registar verzije procesora (PVR – Processor Version Register) – kontrolisan je pomoću C_PVR opcije za konfigurisanje na MicroBlaze procesorima. U zavisnosti od konfiguracije mogu se koristiti jedan, dva ili svih dvanaest PVR registara, ili pak nijedan od njih.

2.1.4. Pipeline arhitektura

Izvršavanje instrukcija u MicroBlaze procesoru je u obliku pipeline-a. Za većinu instrukcija svaka faza izvršavanja traje jedan mašinski ciklus. Broj ciklusa potreban za izvršavanje određene instrukcije je jednak broju faza unutar pipeline strukture, a u svakom mašinskom ciklusu se izvršava jedna instrukcija. Za izvršavanje pojedinih instrukcija potrebno je više mašinskih ciklusa , što se postiže zadržavanjem pipeline-a.

Pri izvršavanju iz sporijih memorija, prikupljanje instrukcija može da potraje više mašinskih ciklusa, što utiče na efikasnost pipeline-a. U MicroBlaze arhitekturi je primenjen bafer za preuzimanje instrukcija koji smanjuje uticaj kašnjenja usled ovih višecikličnih instrukcija. Dok se pipeline zadržava zbog višecuiklusnih instrukcija u fazi izvršavanja, ovaj bafer nastavlja da preuzima sekvencijalne instrukcije. Kada pipeline nastavi normalno izvršavanje, u fazi preuzimanja uzimaju se instrukcije direktno iz bafera bez čekanja na pristup memoriji instrukcija.

Page 5: Bitno o Microblaze Procesoru

Ljubomir Papuga Diplomski rad

6

Trofazni pipeline

Kada je dozvoljena optimizacija prostora, pipeline je podeljen u tri faze: preuzimanje (Fetch), dekodiranje (Decode) i izvršavanje (Execute).

Slika 2. Izvršavanje instrukcija u trofaznom pipeline-u

Petofazni pipeline

Kada optimizacija prostora nije dozvoljena, pipeline je podeljen u pet faza: preuzimanje (IF), dekodiranje (OF), izvršavanje (EX), pristup memoriji (MEM) i upisivanje (WB).

Slika 3. Izvršavanje instrukcija u petofaznom pipeline-u

2.1.5. Grananje

Uobičajeno je da se instrukcije u fazama preuzimanja i dekodiranja (kao i bafera za preuzimanje instrukcija) odbacuju kada se izvršava određena grana. Tada se faza preuzimanja u pipeline-u popunjava novom instrukcijom iz izračunate adrese grananja. Grana u MicroBlaze-u se izvršava u tri mašinska ciklusa, od čega su dva potrebna za popunjavanje pipeline-a. Da bi se smanjilo kašnjenje, MicroBlaze podržava grane sa delay slot-ovima.

Pri izvršavanju grane sa delay slot-om odbacuje se samo feza prihvatanja u pipeline-u, dok se dozvoljava instrukciji u fazi dekodiranja da bude izvršena. Ova tehnika smanjuje kašnjenje na jedan mašinski ciklus.

Page 6: Bitno o Microblaze Procesoru

Ljubomir Papuga Diplomski rad

7

2.1.6. Arhitektura memorije

U MicroBlaze-u se primenjuje Harvard memorijska arhitektura; instrukcijama i podacima se pristupa u odvojenim adresnim prostorima. Svaki adresni prostor ima 32-bitni opseg (npr. obhvata do 4Gb adresnog prostora za instrukcije i podatke respektivno). Opsezi memorije instrukcija i podataka se mogu preklapati mapiranjem obe vrste memorija na istu fizičku memoriju, što je korisno kod debagovanja.

Pristup podacima mora biti poravnat (pristup podacima tipa reč mora biti u granicama reči itd.), osim ako procesor nije konfigurisan da radi sa neporavnatim izuzecima.

MicroBlaze procesor ima do tri interfejsa za pristup memoriji:

• Lokalna memorijska magistrala (LMB - Local Memory Bus) • Procesorska lokalna magistrala (PLB - Processor Local Bus) ili Periferna

magistrala na čipu (OPB - On-Chip Peripheral Bus) • Xilinx Cache Link (XCL) LMB memorijski prostor se ne sme preklapati sa PLB, OPB ili XCL prostorima.

MicroBlaze ima kašnjenje od jednog mašinskog ciklusa prilikom pristupa

lokalnoj memoriji (LMB) i čitanja iz keša, osim kada je dozvoljena optimizacija kada pristup memoriji i čitanje keša unose kašnjenje od dva mašinska ciklusa. Upisivanje podataka u keš obično unosi kašnjenje od dva mašinska ciklusa.

MicroBlaze instrukcijski i keš podataka može biti konfigurisan da koristi keš linije od 4 ili 8 reči. Kada se koristi duža keš linija više bajtova se stavlja u prihvatni bafer, što poboljšava preformanse za kod sa sekvencijalnim oblikom pristupa. Za kod sa dominantno slučajnim oblikom pristupa, performanse se smanjuju sa veličinom linije, što je uzrokovano smanjenom brzinom pristupa kešu usled manje slobodnih keš linija.

2.1.8. Privilegovane instrukcije

U MicroBlaze-u su privilegovane sledeće instrukcije:

• GET, PUT, NGET, NPUT, CGET, CPUT, NCGET, NCPUT • WIC, WDC • MTS • MSRCLR, MSRSET (osim kada se utiče na C bit) • BRK • RTID, RTBD, RTED • BRKI (osim prilikom skoka na fizičku adresu 0x8 ili 0x18)

Pokušaj koriščćenja ovih instrukcija u korisničkom modu dovodi do izuzetaka.

Page 7: Bitno o Microblaze Procesoru

Ljubomir Papuga Diplomski rad

8

Postoji šest načina izlaza iz korisničkog i virtuelnog moda:

• Hardverski generisani reset • Hardverski izuzetak • Nemaskirani break prekid ili hardverski break prekid • Interrupt prekid • Izvršavanjem instrukcije “BRALID Re, 0x8“ izazivajući korisnički vektorski

izuzetak • Izvršavanjem instrukcije softverskog prekida “BRKI” izazivajući skok na

fizičku adresu 0x8 ili 0x18

U svim ovim slučajevima, osim u slučaju hardverski generisanog reseta, status korisničkog i virtuelnog moda se čuvaju u MSR, UMS i VMS bitima.

Aplikacija (korisnički mod) prebacuje kontrolu sistemskim servisnim rutinama (privilegovani mod) korišćenjem BRALID ili BRKI instrukcija, skačući na fizičku adresu 0x8 ili 0x18. Izvršavanje ovih instrukcija uzrokuje pojavu izuzetka sistemskog poziva. Upravljač izuzecima određuje koja se sistemska servisna rutina poziva i da li aplikacija ima dozvolu za poziv date rutine. Ukoliko je dozvola odobrena, upravljač izuzecima upućuje poziv sistemske servisne rutine.

Izvršno okruženje očekivano od strane sistemske servisne rutine zahteva izvršavanje uvodnih instrukcija za podešavanje tog okruženja. Te instrukcije obično stvaraju skladišne blokove koji sadrže proceduralne informacije, pokazivače inicijalizacije i ažuriranja i registre koje koristi sistemska servisna rutina. Uvodni kod se može ubaciti od strane linkera pri stvaranju izvršnog modula ili može biti uvršćen kao ostatak koda u upravljaču interapta sistemskog poziva ili u rutinama sistemskih biblioteka.

Postupci povratka iz sistemski servisnih rutina su obratni gore opisanom procesu. Izvršava se zaključni kod kako bi se preuredili i dealocirali aktivacioni podaci, povratili pokazivači i registri korišćeni u sistemskoj servisnoj rutini. Upravljač interrupt prekida izvršava instrukciju povratka iz izuzetka (RTED) za povratak na izvršavanje aplikacije.

2.1.9. Upravljanje virtuelnom memorijom

Programi izvršavani na MicroBlaze-u koriste efektivnu adresu da pristupe ravnom adresnom prostoru od 4Gb. Procesor može da tumači taj adresni prostor na dva načina, zavisno od načina prevođenja:

• U realnom modu, efektivna adresa se koristi za direktan pristup fizičkoj memoriji.

• U virtuelnom modu, efektivna adresa se prevodi u fizičku adresu pomoću harvera za upravljanje virtuelnom memorijom unutar procesora.

Virtuelni mod obezbeđuje sistemskom softveru mogućnost premeštanja

programa i podataka bilo gde unutar fizičkog adresnog prostora. Sistemski sofver može da izbaci neaktivne programe i podatke iz fizičke memorije ukoliko aktivni programi i podaci zahtevaju veći memorijski prostor. Ovo premeštanje utiče na to da program vidi memorijski prostor većim nego što on to zapravo jeste, što oslobađa programera rada unutar granica nametnutih veličinom fizičke memorije unutar

Page 8: Bitno o Microblaze Procesoru

Ljubomir Papuga Diplomski rad

9

sistema. Programer ne mora da zna koje su fizičke adrese dodeljene drugim softverskim procesima i uređajima, već sam procesor prevodi adrese koje vidi program u fizičke adrese..

Virtuelni mod omogućava veću kontrolu nad zaštitom memorije. Memorijski blokovi veličine i do 1 KB se mogu posebno zaštititi od nedozvoljenog pristupa. Zaštita memorije i sposobnost premeštanja podataka unutar nje omogućava sistemskom softveru da podržava multitasking, tj. istovremeno ili skoro istovremeno izvršavanje više programa.

U MicroBlaze-u se virtuelni mod izvršava pomoću jedinice za upravljanje memorijom (MMU – Memory Management Unit) i dostupan je kada je C_USE_MMU podešen na vrednost 3. MMU kontroliše mapiranje efektivnih u fizičke adrese i podržava zaštitu memorije.

Implementacija MMU u MicroBlaze-u je bazirana na PowerPC 405 procesoru. Karakteristike MMU ukratko obuhvataju:

• prevođenje efektivne adrese u fizičku adresu • kontrola pristupa prilikom prevođenja adresa • dodatna kontrola zaštite korišćenjem zona • nezavisna kontrola nad prevođenjem adresa instrukcija i adresa podataka i

zaštite • podržava osam veličina stranica: 1kB, 4kB, 16kB, 64kB, 256kB, 1MB, 4MB i

16MB. Sistemski softver može koristiti bilo koju kombinaciju ovih veličina stranica.

• sofverska kontrola strategije zamene stranica Realni mod

Procesor se obraća memoriji prilikom prihvatanja instrukcija i pri pristupanju podacima prilikom instrukcija učitavanja ili skladištenja. Obraćanje memorijskim lokacijama se vrši pomoću 32-bitne efektivne adrese koju izračunava procesor. U realnom modu fizička adresa je identična efektivnoj adresi i nju koristi procesor za pristup fizičkoj memoriji. Nakon reseta procesora, on radi u realnom modu. Takođe, realni mod se omogućava postavljanjem VM bita na 0 u mašinskom statusnom registru (MSR).

U realnom modu nema prevođenja virtuelne adrese, ali postoji potpuna zaštita pristupa memoriji, kada je C_USE_MMU>1. Realizacija upravljanja memorijom u realnom modu je jednostavnija nego u virtuelnom modu. Realan mod je često dobro rešenje za upravljanje memorijom u jednostavnom okruženju, kada je neophodna zaštita pristupu memoriji, ali nema potrebe za prevođenjem virtualne adrese. Virtuelni mod

U virtuelnom modu, procesor prevodi efektivnu adresu u fizičku korišćenjem procesa prikazanog na slici 4.

Page 9: Bitno o Microblaze Procesoru

Ljubomir Papuga Diplomski rad

10

Slika 4. Postupak prevođenja efektivne adrese

U virtuelni mod se prelazi postavljanjem VM bita na 1 u mašinskom statusnom registru (MSR).

Svaka adresa sadrži polje broja stranice i ofset polje. Broj stranice predstavlja deo adrese koji prevodi MMU, dok ofset predstavlja ofest bajta u stranici i njega MMU ne prevodi. Virtuelna adresa sadrži dodatno polje, koje se naziva PID (identifikator procesa) i koje se preuzima iz PID registra. Kombinacija PID-a i efektivnog broja stranice (EPN) upućuje na virtuelni broj stranice (VPN). Vrednost broja n se utvrđuje na osnovu veličine stranice.

Sistemski softver vodi tabelu prevođenja stranica koja sadrži unose potrebne za prevođenje svake virtuelne stranice u fizičku stranicu.Veličina stranice definisana ovim unosima određuje veličinu broja stranice i ofset polja.

Najčešće korišćeni prevodi stranica se smeštaju u specijalno namenjen bafer (TLB). Pri prevođenju virtuelne adrese MMU pregleda unose za podudaranje VPN-a (PID i EPN). Samo unosi koji postoje u TLB registru procesora se pregledaju, umesto pregledanja celokupne tabele. Kada se pronađe unos sa istim VPN, čita se odgovarajuća fizička adresa i zajedno sa ofsetom formira se 32-bitna fizička adresa, pomoću koje procesor pristupa memoriji.

Sistemski softver koristi PID da jednoznačno prepozna softverske procese koje procesor izvršava. Nezavisno kompajlirani procesi mogu da rade nad regionima efektivnih adresa koji se međusobno preklapaju. Sistemski softver mora da razreši ovo preklapanje ukoliko je podržan multitasking. To se postiže dodelom PID-a svakom procesu čime se oni premeštaju u jedinstvene regione unutar virtuelnog adresnog prostora. Mapiranje virtuelnog adresnog prostora omogućava nezavisno prevođenje svakog procesa u fizički adresni prostor.

Page 10: Bitno o Microblaze Procesoru

Ljubomir Papuga Diplomski rad

11

Tabela prevođenja stranica

Tabela prevođenja stranica je softverski definisana i softverski upravljana struktura podataka koja sadrži prevode stranica. Zahtevi za softverski upravljanim prevodom stranica predstavljaju kompromis u arhitekturi Embedded sistema, koji su skloni strogo kontrolisanom radnom okruženju i dobro definisanom skupu aplikacija. Takvo okruženje omogućava optimizaciju upravljanja virtuelnom memorijom za svaki sistem, i to na sledeće načine:

• Tabela prevođenja stranica se može organizovati tako da maksimizuje performanse pretrage tabele stranica (Table Walking), tako da se dati unos brzo pronađe. Većina procesora opšte namene poseduju ili indeksiranu tabelu stranica (jednostavan način pretrage, velika tabela stranica) ili mešovitu tabelu stranica (komplikovan način pretrage, mala tabela stranica). Pomoću softverskog Table Walking-a svako hibridno uređenje može se koristiti tako da odgovara određenom sistemu na takav način da se optimizuju i veličina tabele i brzina pristupa.

• Mogu se koristiti nezavisne veličine stranica za module aplikacije, drajvere uređaja, sistemske servisne rutine i podatke. Nezavisne veličine stranica omogućavaju sistemskom softveru efikasnije korišćenje memorije smanjenjem fragmentacije (neiskorišćene memorije).

• Postupak zamene stranica se može podesiti tako da minimizira pojavu nedostatka prevoda stranica. Najčešće korišćeni prevodi se smeštaju u TLB bafer, pri čemu je na softveru da odluči koji prevodi se stavljaju u TLB i koji se izbacuju kada je potreban novi prevod. Strategija zamene prevoda se može podesiti tako da se izbegnu stalna ubacivanja i izbacivanja prevoda stranica u i iz TLB-a, a takođe se može sprečiti izbacivanje kritičnih prevoda stranica (Page Locking).

Translation Look-Aside Buffer (TLB)

MicroBlaze MMU koristi TLB za prevođenje stranica kada procesor radi u virtuelnom modu sa zaštitom memorije i kontrolonm skladištenja podataka. Svaki unos unutar TLB sadrži informaciju potrebnu da se odredi virtuelna stranica (PID i efektivni broj stranice), specifikuje njeno prevođenje u fizičku stranicu, određuje zaštitne karakteristike stranice i navodi skladišne atribute stranice.

MicroBlaze TLB je fizički realizovan kao tri odvojena TLB-a:

• Jedinstveni TLB (UTLB) sadrži 64 unosa i pseudo-asocijativan je. Prevodi stranica instrukcija i stranica podataka se mogu smestiti u bilo koji unos unutar UTLB. UTLB se inicijalizuje i upravlja u potpunosti softverski.

• Instrukcijski TLB (ITLB) sadrži prevode stranica i u potpunosti je asocijativan. Unosi unutar ITLB predstavljaju najskorije pristupane prevode stranica instrukcija iz UTLB. ITLB se koristi da bi se minimizovala preklapanja između prevoda instrukcija i operacija ažuriranja UTLB-a. ITLB se inicijalizuje i upravlja u potpunosti hardverski i transparentan je u odnosu na softver.

• TLB podataka (DTLB) sadrži prevode stranica podataka i potpuno je asocijativan. Unosi unutar DTLB predstavljaju najskorije pristupane prevode

Page 11: Bitno o Microblaze Procesoru

Ljubomir Papuga Diplomski rad

12

stranica podataka iz UTLB. DTLB se koristi da bi se minimizovala preklapanja između prevoda podataka i operacija ažuriranja UTLB-a. DTLB se inicijalizuje i upravlja u potpunosti hardverski i transparentan je u odnosu na softver.

TLB pristupi

Kada MMU prevodi virtuelnu adresu u fizičku, najpre pregleda odgovarajući TLB (ITLB ili DTLB) tražeći unos prevoda stranice. Ukoliko se pronađe unos, on se koristi za pristup fizičkoj memoriji, a ako se ne pronađe MMU traži unos unutar UTLB-a. Svaki put kada je potrebno pristupiti UTLB-u nastaje kašnjenje usled nedostatka unosa unutar specijalizovanih TLB-a i ovo kašnjenje iznosi između 2 i 32 ciklusa. DTLB ima prioritet u odnosu na ITLB ukoliko oba istovremeno pristupaju UTLB-u. Zaštita pristupa

Sistemski softver koristi zaštitu pristupa kako bi zaštitio osetljive memorijske lokacije od nepropisnog pristupa. Sistemski sofver je u mogućnosti da ograniči pristup memoriji i za softver u korisničkom modu i za softver u privilegovanom modu. Ograničenja se mogu postaviti na pozive čitanja, pisanja i pozive intsrukcija. Zaštita pristupa je dostupna kada je dozvoljen rad u virtuelnom modu.

Kontrola pristupa se odnosi na instrukcijske pozive kao i učitavanje i upisivanje podataka. TLB unos za virtuelnu stranicu određuje tip pristupa koji je dozvoljen za datu stranicu. TLB unos takođe određuje i polje zaštićenih zona u registru zaštićenih zona koji se koristi da zaobiđe kontrole pristupa određene TLB unosom. Svaki TLB unos kontroliše tri vrste pristupa:

• Proces – procesi su zaštićeni od nedozvoljenog pristupa dodelom jedinstvenog

identifikatora svakom procesu (PID). Prilikom izvršavanja aplikacije prevode se samo one adrese čije se TID polje unutar bafera za prevođenje poklapa sa identifikatorom procesa (PID).

• Izvršenje – procesor izvršava instrukcije samo ako se one pozivaju sa virtuelne stranice koja je označena kao izvršna.

• Čitaj / piši – podaci se upisuju samo na one virtuelne stranice koje su označene kao upisujuće.

TLB unosi se ne mogu koristiti za sprečavanje čitanja stranica od strane

programa. U virtuelnom modu se koristi zaštita zona za zaštitu čitanja stranica. Samo programima koji se izvršavaju u korisničkom modu se može zabraniti čitanje stranica. Privilegovani programi uvek imaju pravo pristupa čitanju stranica. Zaštita zona

Zaštita zona se koristi kako bi se zaobišla zaštita pristupa navedena unutar TLB unosa. Zone predstavljaju proizvoljne grupacije virtuelnih stranica sa zajedničkom zaštitom pristupa. Zone mogu sadržati bilo koji broj stranica u bilo kojoj kombinaciji njihove veličine. Ne postoji zahtev za zone da moraju da sadrže susedne

Page 12: Bitno o Microblaze Procesoru

Ljubomir Papuga Diplomski rad

13

stranice. Registar zaštite zona (ZPR) je 32-bitni registar koji opisuje način obilaženja zaštite koji je primenjen na svaku od 16 mogućih zona. Upravljanje UTLB-a

UTLB služi kao interfejs između MMU unutar procesora i softvera za upravljanje memorijom. Sistemski softver rukovodi UTLB-om opisujući MMU-u na koji način da prevodi virtuelne adrese u fizičke. Kada se dogodi problem usled nedostatka prevoda ili prekršaja pristupa MMU o tome obaveštava sistemski softver pomoću mehanizma izuzetaka. Sistemski softver je odgovoran da obezbedi sistem prekida da bi se prevazišli ovi problemi kako bi MMU mogao da nastavi sa prevođenjem adresa. Snimanje pristupa stranicama i izmena stranica

Softversko upravljanje virtuelnom memorijom postavlja nekoliko izazova:

• U okruženju sa virtuelnom memorijom, sofver i podaci često troše više momorijskih resursa no što je fizički na raspolaganju. Neke izvršne stranice i stranice podataka moraju se smestiti izvan fizičke memorije kada nisu u upotrebi. Idealno, najčešće korišćene stranice ostaju unutar fizičke memorije a one koje to nisu se smeštaju na drugo mesto.

• Kada se stranice iz fizičke memorije izmeštaju kako bi napravile mesto za nove stranice, potrebno je znati da li su zamenjene (stare) stranice bile izmenjene. Ako jesu, moraju se sačuvati pre učitavanja novih stranica. Ukoliko nisu bile menjane, nove stranice se mogu učitati bez prethodnog čuvanja starih.

• Unutar UTLB se čuva ogranicen broj prevoda stranica. Preostali prevodi se moraju čuvati unutar tabele prevoda stranica. Kada se prevod ne nalazi unutar UTLB, sistemski softver mora da odluči koji će UTLB unos da izbaci kako bi nedostajući unos mogao da se učita. Poželjno je da sistemski softver izbacuje najmanje korišćene prevode, a da zadržava one koji se koriste najčešće.

Rešavanje ovih problema na efikasan način zahteva vođenje evidencije o

pristupu stranicama i njihovim izmenama. MicroBlaze ne vodi ovakvu evidenciju unutar hartdvera, već sistemski softver korišćenjem mehanizama izuzetaka sakuplja ove informacije. Prikupljanjem informacija one se mogu organizovati u strukturu podataka koja se povezuje sa tabelom prevoda stranica.

Page 13: Bitno o Microblaze Procesoru

Ljubomir Papuga Diplomski rad

14

2.1.9. Reset, interrupt i break prekidi i izuzeci

MicroBlaze podržava reset, interrupt prekide, korisničke izuzetke, break prekide i hardverske izuzetke. Relativni prioritet počev od najvišeg je:

1. Reset 2. Hardverski izuzetak 3. Nemaskirani break prekid 4. Break prekid 5. Interrupt prekid 6. Korisnički vektor (izuzetak)

Reset

Kada se dogodi reset, MicroBlaze odbacuje pipeline i počinje prihvatanje instrukcija od reset vektora (adresa 0x0). Oba eksterna reset signala su aktivna na visok nivo i trebalo bi da su aktivna minimum 16 ciklusa. Hardverski izuzeci

MicroBlaze se može konfigurisati tako da zaustavi sledeće unutrašnje greške: nedozvoljene instrukcije, greške magistrale instrukcija i podataka i neporavnati pristup. Izuzeci deljenja nulom se mogu omogućiti samo ukoliko je procesor konfigurisan sa hardverskim deliteljem. Kada je procesor konfigurisan sa hardverskom floating point jedinicom može zaustaviti i sledeće specifične izuzetke: podkoračenje, prekoračenje, deljenje nulom, nedozvoljene operacije i greške denormalizovanih operanda. Kada je konfigurisan sa hardverskom jedinicom za upravljanje memorijom MicroBlaze može da zaustavi i izuzetke specifične za upravljanje memorijom, kao što su: izuzeci nedozvoljenih instrukcija, izuzeci skladištenja podataka, izuzeci skladištenja instrukcija, kao i izuzeci vezani za greške instrukcijskog TLB i TLB podataka.

Hardverski izuzetak uzrokuje odbacivanje pipeline-a i grananje na vektor hardverskog izuzetka (adresa 0x20). Pri tome se izvršna faza instrukcije u ciklusu izuzetka ne izvršava. Izuzetak takođe ažurira registr opšte namene R17 na sledeći način:

• Za MMU izuzetak u registar R17 se učitava odgovarajuća vrednost

programskog brojača kako bi se ponovno izvršila instrukcija koja je uzrokovala izuzetak nakon povratka.

• Za sve ostale izuzetke u registar R17 se učitava vrednost programskog brojača naredne instrukcije, osim ako je izuzetak uzrokovan instrukcijom u grani sa delay slot-om.

Page 14: Bitno o Microblaze Procesoru

Ljubomir Papuga Diplomski rad

15

Break prekidi

Postoje dve vrste break prekida: hardverski (spoljašnji) i softverski (unutrašnji).

Hardverski break prekidi

Hardverski break prekidi se izvršavaju pojavom spoljašnjeg signala prekida. Prilikom prekida izvršava se instrukcija u izvršnoj fazi dok se instrukcija u fazi dekodovanja zamenjuje granom ka vektoru prekida (adresa 0x18). Adresa povratka iz prekida se automatski učitava u registar opšte namene R16 i setuje se bit Break In Progress (BIP) unutar mašinskog statusnog registra (MSR). Normalni hardverski break prekid se obrađuje ukoliko nema drugog prekida u toku, dok se nemaskirani break prekid uvek obrađuje momentalno. Softverski prekidi

Da bi se izvršio softverski prekid, koriste se BRK i BRKI instrukcije. Vreme potrebno da MicroBlaze uđe u prekidnu servisnu rutinu od pojave prekida zavisi od instrukcije koja je trenutno u fazi izvršavanja i vremena pristupa memoriji koja čuva vektor prekida. Interrupt prekidi

MicroBlaze podržava jedan spoljni izvor interrupt prekida. Procesor reaguje na interrupt prekid samo ako je Interrupt Enable (IE) bit unutar mašinskog statusnog registra (MSR) setovan na 1. Prilikom interrupt prekida izvršava se instrukcija u izvršnoj fazi dok se instrukcija u fazi dekodovanja zamenjuje granom ka vektoru prekida (adresa 0x10). Adresa povratka iz prekida se automatski učitava u registar opšte namene R14. Dodatno, procesor automatski zabranjuje dalje interrupt prekide postavljanjem IE bita na 0. IE bit se automatski setuje na 1 prilikom izvršavanja instrukcije povratka iz prekida.

Vreme potrebno da MicroBlaze uđe u servisnu rutinu prekida od pojave interrupt prekida zavisi od konfiguracije procesora i vremena kašnjenja memorijskog kontrolera koji čuva vektor prekida. Ukoliko je MicroBlaze konfigurisan da poseduje hardverski delitelj, najveće kašnjenje nastupa kada se interrupt prekid dogodi prilikom izvršavanja instrukcije deljenja. Korisnički vektor (izuzetak)

Vektor korisničkog izuzetka se nalazi na adresi 0x8. Korisnički izuzetak je prouzrokovan ubacivanjem instrukcije ‘BRALID Rx, 0x8’ u kod aplikacije. Iako Rx može biti bilo koji registar opšte namene, Xilinx preporučuje korišćenje R15 za čuvanje povratne adrese korisničkog izuzetka i korišćenje instrukcije RTSD pri povratku iz rutine korisničkog izuzetka.

Page 15: Bitno o Microblaze Procesoru

Ljubomir Papuga Diplomski rad

16

2.1.10. Instrukcijski keš

MicroBlaze se može koristiti sa opcionim instrukcijskim kešom za unapređenje performansi kada se izvršava kod koji se nalazi izvan LMB adresnog prostora. Funkcionalnost instrukcijskog keša

Kada se koristi instrukcijski keš, memorijski adresni prostor se deli na dva segmenta, keširani i nekeširani. Keširan segment je određen sa dva parametra: C_ICACHE_BASEADDR i C_ICACHE_HIGHADDR. Sve adrese u ovom opsegu odgovaraju keširanom adresnom prostoru.

Adresa keš instrukcije sadrži dva dela: keš adresu i adresu oznake. Instrukcijski keš može se konfigurisati od 64 bajta do 64 kB, što odgovara keš adresi između 6 i 16 bita. Adresa oznake zajedno sa keš adresom treba da odgovara punoj adresi keš memorije.

Slika 5. Organizacija instrukcijskog keša

Način rada instrukcijskog keša

Za svaku instrukciju koja se prihvata, instrukcijski keš ustanovljava da li adresa instrukcije pripada keširanom segmentu. Ako to nije slučaj, keš kontroler zanemaruje instrukciju i obradu zahteva prepušta PLB-u, OPB-u ili LMB-u. Ukoliko instrukcija pripada keširanom segmentu, vrši se pregled oznaka u memoriji kako bi se utvrdilo da li je zatražena adresa trenutno keširana. Ukoliko nije, keš kontroler zahteva novu instrukciju preko instrukcijskog CacheLink (IXCL) interfejsa.

2.1.11. Keš podataka

MicroBlaze se može koristiti sa opcionim kešom podataka radi postizanja boljih performansi. Opseg keš memorije ne sme da uključuje adrese iz LMB adresnog prostora.

Page 16: Bitno o Microblaze Procesoru

Ljubomir Papuga Diplomski rad

17

Funkcionalnost keša podataka

Pri korišćenju keša podataka, meorijski adresni prostor se deli na dva segmenta, keširani i nekeširani. Keširani prostor je određen sa dva parametra: C_DCACHE_BASEADDR i C_DCACHE_HIGHADDR. Sve adrese u ovom opsegu adresa pripadaju keširanom adresnom prostoru.

Adresa keš podatka sadrži dva dela: keš adresu i adresu oznake. Keš podataka može se konfigurisati od 64 B do 64 kB, što odgovara keš adresi između 6 i 16 bita. Adresa oznake zajedno sa keš adresom treba da odgovara punoj adresi keš memorije.

Slika 6. Organizacija keša podataka

Način rada keša podataka

MicroBlaze keš podataka primenjuje Write-through protokol. Ukoliko je keš omogućen, memorisanje na adresi unutar keširanog adresnog prostora proizvodi upis odgovarajućeg bajta, polureči ili reči preko CacheLink-a (DXCL) podataka do spoljne memorije. Upis takođe ažurira keširani podatak ukoliko je reč sa ciljne adrese unutar keša.

Ukoliko je keš omogućen, učitavanje sa adrese unutar keša pokreće proveru radi utvrđivanja da li je zahtevani podatak unutar keša. Ukoliko jeste, on se preuzima iz keša, a ako nije zahteva se adresa preko CacheLink-a podataka (DXCL) i zaustavlja se pipeline procesora sve dok se keš linija koja odgovara zahtevanoj adresi ne vrati iz kontrolera spoljne memorije.

2.1.12. Floating-point jedinica (FPU)

MicroBlaze floating-point jedinica se zasniva na IEEE 754 standardu:

• Koristi IEEE 754 floating-point jedinicu jednostruke tačnosti, uključujući definicije za beskonačnost, nije broj (NaN) i nulu.

• Podržava sabiranje, oduzimanje, množenje, deljenje, poredjenje, konverziju i operaciju kvadratnog korenovanja.

• Primenjuje zaokruživanje na najbliži broj model. • Generiše statusne bite za prekoračenje, podkoračenje i nedozvoljene operacije.

Page 17: Bitno o Microblaze Procesoru

Ljubomir Papuga Diplomski rad

18

Zbog boljih performansi, učinjena su sledeća nestandardna pojednostavljenja:

• Denormalizovani operandi nisu podržani. Hardverska floating-point operacija

na denormalizovanom operandu vraća NaN (nje broj) i postavlja bit za grešku denormalizovanog operanda u FSR.

• Denormalizovan rezultat se čuva kao 0 sa setovanim bitom za podkoračenje u FSR. Ovaj metod se uobičajeno naziva Flush-to-Zero (FTZ).

• Prekoračenje kao rezultat floating-point operacije uvek vraća označeno ∞ čak i ako se time pokreće izuzetak.

Format

IEEE 754 floating point broj sa jednostrukom tačnošću se sastoji iz tri polja:

• 1-bitno polje za znak, • 8-bitno polje povišenog eksponenta, • 23-bitno polje mantise.

Vrednost floating point broja n u MicroBlaze-u ima vrednost:

• Ako je eksponent = 255 i mantisa <> 0, tada je n = NaN, bez obzira na bit

znak • Ako je eksponent = 255 i mantisa = 0, tada je n = (-1)znak * ∞ • Ako je 0 < eksponent < 255, tada je n = (-1)znak * 2(eksponent – 127) * (1,mantisa) • Ako je eksponent = 0 i mantisa <> 0, tada je n = (-1)znak * 2-126 * (0,mantisa) • Ako je eksponent = 0 i mantisa = 0, tada je n = (-1)znak * 0

Za praktičnu namenu samo formati 3 i 5 su značajni, dok ostali formati

predstavljaju ili grešku ili brojeve koji se ne mogu predstaviti u 32-bitnom obliku sa punom tačnošću. Zaokruživanje

MicroBlaze FPU primenjuje samo podrazumevani metod zaokruživanja na najbliži broj, naznačen u standardu IEEE 754. Po definiciji, rezultat bilo koje floating point operacije daje najbližu vrednost sa jednostruklom tačnošću beskonačno preciznom rezultatu. Ako su dve najbliže odgovarajuće vrednosti jednako blizu, vraća se ona kod koje je LSB bit 0. Operacije

Sve MicroBlaze FPU operacije koriste registre opšte namene.

Page 18: Bitno o Microblaze Procesoru

Ljubomir Papuga Diplomski rad

19

Aritmetičke operacije

FPU primenjuje sledeće aritmetičke operacije:

• sabiranje, FADD • oduzimanje, FSUB • množenje, FMUL • deljenje, FDIV • kvadratno korenovanje, FSQRT (dostupno ako je C_USE_FPU = 2)

Poređenja

FPU primenjuje sledeća floating point poređenja:

• manje od, FCMP,LT • jednako, FCMP,EQ • manje ili jednako, FCMP,LE • vece od, FCMP,GT • nije jednako, FCMP,NE • veće ili jednako, FCMP,GE • nesređeno, FCMP,UN (koristi se za NaN)

Konverzije

FPU primenjuje sledeće floating point konverzije (dostupno ako je C_USE_FPU = 2):

• pretvori iz celobrojne vrednosti sa predznakom u floating point, FLT • pretvori iz floating point vrednosti u celobrojnu vrednost s predznakom, FINT

Izuzeci

Floating point jedinica koristi redovan mehanizam izuzetaka u MicroBlaze. Kada su omogućeni, izuzeci se događaju za sve IEEE standardne uslove: podkoračenje, prekoračenje, deljenje nulom i nedozvoljena operacija, kao i za specifičan izuzetak za MicroBlaze: greška denormalizovanog operanda. Floating point izuzetak sprečava upis u odredišni registar (Rd), što dozvoljava upravljaču floating point izuzetaka da deluje na ispravnoj registarskoj datoteci.

2.1.13. Fast Simplex Link (FSL)

MicroBlaze može biti konfigurisan da koristi do 16 Fast Simplex Link (FSL) interfejsa, od čega se svaki sastoji iz jednog ulaznog i jednog izlaznog porta. FSL kanali su namenjeni jednosmernom prenosu podataka od tačke do tačke. FSL interfejsi u MicroBlaze-u su 32 bita široki. Zaseban bit naznačuje da li je poslata, tj. primljena reč kontrolnog tipa ili tipa podataka. Instrukcijom get se prenosi informacija sa FSL porta u registar opšte namene, dok se instrukcijom put prenosi podatak u

Page 19: Bitno o Microblaze Procesoru

Ljubomir Papuga Diplomski rad

20

suprotnom smeru. Postoje četiri tipa za obe instrukcije: blokirajući podatak, neblokirajući podatak, blokirajuća kontrola, neblokirajuća kontrola. Hardversko ubrzanje pomoću FSL

Svaki FSL obezbeđuje procesorskom pipeline-u okruženje s malim kašnjenjem, zbog čega su idealni za proširenje procesorske izvršne jedinice ubrzivačima hardvera. Ovakav metod je sličan proširenju seta instrukcija sa proilagođenim instrukcijama, ali ima prednost u tome što ne čini celokupnu brzinu procesorskog pipeline-a zavisnu od funkcije prilagođenja. Takođe, ovakva vrsta funkcionalnog proširenja ne zahteva nikakve dodatne zahteve u pogledu softverskih alata.

2.2. Opis MicroBlaze signalnog interfejsa

MicroBlaze jezgro je organizovano kao Harvard arhitektura sa posebnim interfejsom magistrala za pristup podacima i instrukcijama. Podržana su tri memorijska interfejsa: Local Memory Bus (LMB), IBM Processor Local Bus (PLB) ili IBM On-chip Peripheral Bus (OPB) i Xilinx CacheLink (XCL). PLB omogućava jednociklusni pristup blok RAM-u sa dva porta smeštenom na samom čipu. PLB i OPB interfejsi obezbeđuju vezu sa periferijama i memorijom kako na čipu, tako i van njega. XCL interfejs je namenjen za korišćenje sa specijalizovanim kontrolerima spoljašnje memorije. Takođe, MicroBlaze podržava do 16 Fast Simplex Link (FSL) portova, pri čemu svaki od njih ima po jedan master i slave FSL interfejs.

2.2.1. Karakteristike

MicroBlaze se može konfigurisati sa sledećim magistralni interfejsima:

• 32-bitna verzija PLB V4.6 interfejs • 32-bitna verzija OPB V2.0 magistralni interfejs • LMB omogućava jednostavan sinhroni protokol za efikasan pristup blok

RAM-u • FSL omogućava brz, nenagledani mehanizam komunikacije • XCL omogućava brz mehanizam protoka između keša i kontrolera spoljašnje

memorije, nadgledan sa slave strane • Interfejs debagovanja za rad as MDM (Microprocessor Debug Module)

jezgrom • Interfejs traganja za analizu performansi

2.2.2. PLB interfejs PLB v4.6 podržava 32-bitnu adresnu magistralu. Magistrale za upisivanje i čitanje su razdvojene i mogu biti širine 32, 64 ili 128 bita. Prenos podataka preko PLB v4.6 je podeljen u dve faze, adresnu fazu i fazu podataka. U adresnoj fazi se šalju

Page 20: Bitno o Microblaze Procesoru

Ljubomir Papuga Diplomski rad

21

zahtevana adresa i parametri prenosa, dok se u fazi podataka vrši sam prenos podataka[2].

2.2.3. OPB interfejs OPB je deo IBM CoreConnect arhitekture i predstavlja sinhronu magistralu opšte namene radi jednostavnog povezivanja različitih periferija. Neke od karakteristika OPB-a su:

• 32-bitna ili 64-bitna magistrala • Adrese do 64-bita • Podržava 8-bitne, 16-bitne, 32-bitne i 64-bitne slave uređaje • Podržava 32-bitne i 64-bitne master uređaje • Dinamička veličina magistrale • Distribuirana multipleksirana magistrala umesto 3-state drajvera

OPB predstavlja magistralnu arhitekturu sa mnoštvom opcija za poboljšanje performansi magistrale. Većina ovih opcija se može efikasno upotrebiti unutar FPGA arhitekture, ali neke od njih mogu prouzrokovati neefikasno raspolaganje resursima FPGA ili smanjiti brzinu rada[3].

2.2.4. LMB interfejs

LMB predstavlja sinhronu magistralu namenjenu prevashodno za pristup blok RAM-u smeštenom na čipu. Ona koristi minimalan broj kontrolnih signala i jednostavan protokol kako bi osigurala pristup blok RAM-u unutar jednog mašinskog ciklusa.

MicroBlaze magistralni interfejs sa strane podataka izvršava upravljanje čitanjem i upisivanjem tako da se podrže sledeći prenosi: prenosi podataka tipa bajt, polureč i reč na uređaje tipa reč, prenosi podataka tipa bajt i polureč na uređaje tipa puloreč i prenosi tipa bajt na uređaje tipa bajt. Samim tim, MicroBlaze ne podržava prenose podataka koji su veći od adresiranog uređaja. Ovakvi tipovi prenosa zahtevaju dinamičku promenu veličine magistrale i konverzije koje nisu podržane od strane MicroBlaze magistralnog interfejsa.

2.2.5. FSL interfejs

FSL magistrala obezbeđuje komunikacioni kanal od tačke do tačke između izlazne FIFO i ulazne FIFO. MicroBlaze može da ima do 16 master i slave FSL signalnih interfejsa.

Upisivanje na FSL magistralu MicroBlaze vrši pomoću instrukcija PUT ili PUTD. Operacija upisivanja prebacuje sadržaj registra na izlaznu FSL magistralu. Prebacivanje se vrši unutar jednog mašinskog ciklusa za upise u FSL u blokirajućem modu (instrukcije PUT i CPUT), pod uslovom da FSL FIFO nije pun. Ako je FSL FIFO pun, procesor se zaustavlja sve dok se ne poništi flag koji ukazuje da je FSL pun. Neblokirajuće instrukcije (sa prefiksom n) se uvek obavljaju unutar jednog mašinskog ciklusa, čak i ako je FSL pun. Ukoliko je FSL pun, zabranjuje se upis i postavlja se bit prenosa u MSR.

Page 21: Bitno o Microblaze Procesoru

Ljubomir Papuga Diplomski rad

22

Čitanje sa FSL magistrale MicroBlaze vrši pomoću instrukcija GET ili GETD. Operacija čitanja prebacuje sadržaj ulaznog FSL u registar opšte namene. Prebacivanje se obično obavlja u dva mašinska ciklusa za čitanje sa FSL u blokirajućem modu, ukoliko postoje podaci u FSL FIFO. Ako je FSL FIFO prazan, procesor se zaustavlja na toj instrukciji sve dok je setovan flag koji to označava. U neblokirajućem modu, prebacivanje se vrši u dva mašinska ciklusa, bez obzira da li je FSL prazan ili ne. Ukoliko je FSL prazan, ne vrši se prebacivanje podataka i setuje se carry bit u MSR.

2.2.6. XCL interfejs

Xilinx CacheLink (XCL) omogućava visoke performanse za pristup spoljašnjoj memoriji i projektovan je da se direktno poveže na memorijski kontroler sa integrisanim FSL baferima. Ovakav način povezivanja obezbeđuje minimalno kašnjenje. Ovaj interfejs je dostupan u MicroBlaze-u samo kada je dozvoljen keš. Dozvoljeno je korišćenje CacheLink keša na strani instrukcija ili na strani podataka bez keširanja druge strane. Memorijskim lokacijama izvan keširanog opsega se pristupa preko PLB, OPB ili LMB. Keširanom memorijskom opsegu se pristupa preko PLB ili OPB kada je keš softverski onesposobljen. CacheLink transakcije

Svi pojedinačni CacheLink pristupi izvršavaju se na osnovu FSL FIFO protoklola:

• Pristupna informacija se kodira preko FSL podataka i kontrolnih signala. • Informacija se šalje (upisuje) podizanjem signala za dozvolu upisa. • Pošiljaocu je dozvoljen upis samo ako je pun signal primaoca neaktivan.

Instrukcijski keš kontroler ne koristi pun signal. • Informacije se primaju (učitavaju) podizanjem signala čitanja. • Primaocu je dozvoljeno čitanje samo ako pošiljalac signalizira da postoje novi

podaci.

CacheLink koristi jedan dolazni (slave) i jedan odlazni (master) FSL po keš kontroleru. Odlazni FSL se koristi za slanje zahteva za pristup, dok se dolazni FSL koristi za prijem zahtevanih keš linija. CacheLink takođe koristi specifičan način kodiranja razmenjenih podataka preko FSL podataka i kontrolnih signala.

2.2.7. Interfejs za debagovanje

Interfejs za debagovanje na MicroBlaze-u je projektovan da radi sa Xilinx Microprocessor Debug Module (MDM) IP jezgrom. MDM je kontrolisan od strane Xilinx Microprocessor Debugger (XMD) preko JTAG porta na FPGA: MDM može da kontroliše više MicroBlaze procesora istovremeno.

Page 22: Bitno o Microblaze Procesoru

Ljubomir Papuga Diplomski rad

23

2.2.8. Interfejs trasiranja

MicroBlaze jezgro generiše nekoliko internih signala koji se namenjuju za trasiranje. Ovaj interfejs signala nije standardizovan i preporučljivo je da se ovi signali koriste u skladu sa dokumentacijom Xilinx-a.

2.2.9. Podešljivost MicroBlaze jezgra

MicroBlaze jezgro je razvijeno tako da podržava visok stepen podešljivosti od strane korisnika. To omogućava projektovanje procesora u cilju zadovoljavanja određenih zahteva u pogledu odnosa troškova i performansi. Podešavanje se vrši preko parametara koji dozvoljavaju, selektuju ili određuju veličinu određenih karakteristika procesora.

2.3. MicroBlaze binarni interfejs aplikacija

2.3.1. Tipovi podataka

MicroBlaze asembleri koriste tipove podataka date u tabeli. Tipovi podataka kao što su data8, data16 i data32 su dati umesto uobičajenih bajt, polu-reč i reč registara.

MicroBlaze tip podataka Odgovarajući ANSI C tip podataka Veličina (bajt)

data8 char 1 data16 short 2 data32 int 4 data32 long int 4 data32 float 4 data32 enum 4 data16/data32 pointer 2/4

Tabela 1. Tipovi podataka u MicroBlaze asembleru

2.3.2. Konvencije o korišćenju registara

MicroBlaze arhitektura definiše 32 registra opšte namene. Ovi registri se dele na promenljive, nepromenljive i namenske.

• Promenljivi registri se koriste kao privremeni i ne oni ne zadržavaju vrednosti izvan funkcijskih poziva. Registri R3 do R12 su promenljivi, od kojih se R3 i R4 koriste za vraćanje vrednosti pozivnoj funkciji. Registri R5 do R10 se koriste za prosleđivanje parametara između podrutina.

• Registri R19 do R31 zadržavaju svoj sadržaj izvan funkcijskih poziva, te se stoga nazivaju nepromenljivim registrima. Pozvana funkcija ima zadatak da

Page 23: Bitno o Microblaze Procesoru

Ljubomir Papuga Diplomski rad

24

sačuva sadržaj ovih nepromenljivih registara koji se koriste. Ove vrednosti se obično čuvaju na steku.

• Određeni registri se koriste kao namenski i programeri ne bi trebalo da ih koriste za druge namene.

• Registi R14 do R17 se koriste za čuvanje povratne adrese iz interrupt prekida, podrutina i izuzetaka, datim redosledom. Podrutine se pozivaju korišćenjem branch i link instrukcija, koje čuvaju trenutni sadržaj programskog bojača (PC) u registru R15.

• Pokazivači na male oblasti podataka se koriste za pristup određenim memorijskim lokacijama sa 16-bitnom neposrednom vrednošću.

• Registar R1 čuva vrednost pokazivača steka i on se ažurira prilikom ulaska i izlaska iz funkcija.

• Registar R18 se koristi kao privremeni registar za asemblerske operacije. • MicroBlaze sadrži registre posebne namene kao što su: programski brojač

(PC), mašinski statusni registar (MSR), registar statusa izuzetaka (RESR), registar adrese izuzetaka (REAR), floating point statusni registar (RFSR), registar odredišta grananja (RBTR), registar podataka izuzetaka (REDR), registre za upravljanje memorijom (RPID, RZPR, RTLBLO, RTLBHI, RTLBX, RTLBSX) i registre verzije procesora (RPVR0-RPVR11). Ovi registri nisu mapirani direktno u registarskom fajlu, te je korišćenje ovih registara drugačije od korišćenja registara opšte namene. Vrednosti registara posebne namene se mogu prebaciti u i iz registara opše namene korišćenjem MTS i MFS instrukcija respektivno.

2.3.3. Memorijski model

Memorijski model za MicroBlaze deli podatke na četiri različita dela: oblast malih podataka, oblast podataka, oblast uobičajenih neinicijalizovanih podataka, oblast konstanti. Oblast malih podataka

Globalno inicijalizovane promenljive koje su male po veličini se čuvaju u ovoj oblasti. Prag za određivanje veličine promenljive koja se čuva u oblasti malih podataka je postavljen na 8 bajtova u MicroBlaze C kompajleru, ali se on može promeniti zadavanjem komandne opcije komplajleru. Oblasti malih podataka se pristupa korišćenjem registra R13 i 16-bitnog ofseta. Raspodela malih promenljivih unutar ove oblasti umanjuje potrebu za dodavanje IMM instrukcija unutar koda radi pristupa globalnim promenljivima. Svakoj promenljivoj unutar oblasti malih podataka se može pristupiti i korišćenjem apsolutne adrese. Oblast podataka

Relativno velike inicijalizovane promenljive se smeštaju u oblast podataka, kojoj se može pristupiti ili preko registra R13 ili korišćenjem apsolutne adrese, u zavisnosti od komandne opcije date kompajleru.

Page 24: Bitno o Microblaze Procesoru

Ljubomir Papuga Diplomski rad

25

Neinicijalizovana oblast

Neinicijalizovane globalne promenljive se raspodeljuju unutar ove oblasti kojoj se pristupa ili preko registra R13 ili preko apsolutne adrese. Oblast konstanti

Konstante se smeštaju u read-only oblast malih podataka kojem se pristupa pomoću registra R2. Kompajler generiše odgovarajuće globalne pokazivače koji imaju ulogu baznih pokazivača. Vrednosti osnova oblasti malih podataka (koje se čuvaju u registru R2) određuje linker u poslednjoj fazi linkovanja.

2.3.4. Upravljanje interrupt prekidima i izuzecima

MicroBlaze rezerviše određene adrese za upravljanje interrupt prekidima i izuzecima, kao što pokazuje tabela. Na ovim lokacijama se upisuje kod odgovarajućih rukovodilaca.

Adresa skoka Oznaka Start / Reset 0x0 _start Korisnički izuzetak 0x8 _exception_handler Interapt 0x010 _interrupt_handler Prekid (HW / SW) 0x18 - Hardverski izuzetak 0x20 _hw_exception_handler Rezervisano za buduću upotrebu 0x28 – 0x4F -

Tabela 2. Upravljanje interrupt prekidima i izuzecima