You are on page 1of 16

MSREAL

ARM mikrokontroleri

1
1.1
1.1.1

ARM mikrokontroleri
UVOD
O NASTANKU ARM PROCESORA

ARM procesorska jezgra vode poreklo od britanske kompanije Acorn. 1983. godine ova kompanija je traila 16-bitni mikroprocesor (zamenu za 6502 procesor) za novu verziju svog desktop raunara. Kako ni jedna od na tritu dostupnih 16-bitnih arhitektura nije zadovoljavala njihove zahteve, oni su dizajnirali svoj 32-bitni procesor. Procesori su bili sporiji od dostupnih memorijskih modula, imali su komplikovan set instrukcija od kojih je izvravanje pojedinih trajalo nekoliko stotina taktova, tako da je dizajniranje novog procesora bilo neophodno. Originalna ideja potie od projekta Barkley RISC (Reduced Instruction Set Computer) (1981. g.), u kome je grupa studenata pokazala da je mogue napraviti veoma jednostavan procesor sa performansama uporedivim sa naprednim CISC (Complex Instruction Set Computer) procesorima. Acorn usvaja taj pristup i 1985. godine realizuje svoj prvi 26-bitni ARM (Acron RISC Machine), koji ujedno postaje prvi komercijalni RISC procesor. Sadrao je manje od 25000 tranzistora, to je veoma mali broj, a po performansama je bio uporediv, ili ak bolji od Intel 80286 procesora koji je proizveden u isto vreme. Druga verzija proizvedena je 1987. godine, a unapreenje u odnosu na prvu predstavlja koprocesorska podrka. 1990. godine mnoge kompanije postaju zainteresovane za ARM procesore, a kompanija Apple poinje da koristi ARM procesore za svoje PDA ureaje. Iz saradnje kompanija Acorn i Apple nastaje kompanija Advanced RISC Machine Ltd, ili samo ARM Ltd. Potom nastaje trea generacija procesora, pa etvrta, peta,... Svaka nova generacija procesora donela je izvesna unapreenja, naravno, kao na primer: prelazak na 32-bitnu arhitekturu, uvoenje kompresovanog seta instrukcija (Thumb), multiprocesiranje, ...

MSREAL

ARM mikrokontroleri

O nekim od unapreenja koja predstavljaju najvanije karakteristike savremenih ARM procesora, kao i o najvanijim karakteristikama ARM arhitekture uopte, bie govoreno u narednim poglavljima.

1.1.2

PRIMENA ARM PROCESORA

Jednostavnost, dobre performanse i niska potronja ine ARM procesore veoma pogodnim za primenu u embedded sistemima, stoga je ARM arhitektura najire primenjena 32-bitna RISC arhitektura. 2009. godine ARM procesori ine oko 90% od svih embedded 32-bitnih RISC procesora. Koriste se u potroakoj elektronici, ukljuujui PDA ureaje, mobilne telefone, iPOD ureeje i druge digitalne media plejere, rune konzole za igrice, kalkulatore, ali i kompjuterske periferije kao to su hard diskovi i ruteri. Inae, kompanija ARM ne proizvodi ipove, ve samo pravi dizajn procesora (oni su tzv. intellectual property company), a proizvode ih firme koje od ARM-a kupuju licencu za njihov dizajn, pa tako imamo Intel-ove ARM procesore, Philips-ove ARM procesore i sl. Kompanije u ije ureaje su ugraeni ARM procesori su jo i: Alcatel, Atmel, Broadcom, Freescale, LG, NEC, NVIDIA, Samsung, Sharp, ST Microelectronics, Texas Instruments, VLSI Technology, Yamaha,

1.2
1.2.1

ARHITEKTURA ARM PROCESORA


OSNOVNE KARAKTERISTIKE

Jednostavnost arhitekture ARM procesora kao posledicu ima male dimenzije ipova na koje je dizajn implementiran, a male dimenzije dovode do vrlo male potronje. Dakle, mala veliina ipova, performanse i mala potronja su glavni atributi u razvoju ARM arhitekture. ARM je, kao to je ve napomenuto, Reduced Instruction Set Computer (RISC) i karakteriu ga sledee tipine osobine RISC arhitekture: - uitaj / smesti (load / store) arhitektura, gde operacije za rad sa podacima manipuliu samo sa sadrajem registara, a ne direktno sa sadrajem memorije,

MSREAL

ARM mikrokontroleri

- jednostavani modovi adresiranja, - sve instrukcije su iste duine (32 bita), - mogunost uslovnog izvravanja skoro svih instrukcija.

Load / Store arhitektura Sve instrukcije ARM procesora su registarsko-registarske. Za razliku od registarsko-memorijskih instrukcija kod kojih mesto jednog ili vie operanada moe biti u memoriji, kod registarsko-registarskih instrukcija mesta svih operanada moraju biti u registrima. Dakle, kod ovakvog skupa instrukcija operandi iz memorije se prvo moraju preneti u registre, a zatim obaviti aritmetiko-logika operacija. Na primer, za sabiranje operanada koji se nalaze u memoriji na adresama adr2 i adr3, a rezultat treba smestiti u memorijsku lokaciju sa adresom adr1, potrebno je izvriti sledee instrukcije:
MOV R2, adr2 MOV R3, adr3 MOV R1, R2, R3 MOV adr1, R1 ; ; ; ; R2 <- M[adr2] R3 <- M[adr3] R1 <- R2 + R3 M[adr1] <- R1

Registarsko-registarski skup instrukcija veoma je jednostavan jer je pristup memoriji dozvoljen samo instrukcijama prenosa sadraja, a sve ostale instrukcije rade sa operandima koji su smeteni u registrima. Ovakav skup instrukcija ne engleskom se naziva load-store, zato to se operacija prenosa operanada iz memorije u registar naziva load, a operacija prenosa sadraja iz registra u memoriju se naziva store.

Organizacija memorije to se tie organizacije memorije, razliite familije ARM kontrolera koriste razliite arhitekture. Tako npr. ARM7 koristi von Neumann-ovu arhitekturu, a ARM9 koristi Harvard arhitekturu. Kod von Neuman-ove arhitekture (slika 1.1.a) u istu memoriju su smetene i instrukcije i podaci, dok su kod Harvard arhitekture (slika 1.1.b) memorija za instrukcije i memorija za podatke fiziki odvojene.

MSREAL

ARM mikrokontroleri

a) Slika 1.1 Uopteni prikaz arhitekrure kontrolera a) von Neumann-ova b) Harvard

b)

1.2.2

TIPOVI PODATAKA

ARM procesori podravaju sledee tipove podataka: - 8-bitne (byte) - 16-bitne (halfword) - 32-bitne (word)

1.2.3

MODOVI RADA PROCESORA, REGISTRI

Na slici 1.2 pikazani su registri ARM procesora u razliitim modovima rada procesora.

MSREAL

ARM mikrokontroleri

Slika 1.2 Registri ARM procesora ARM arhitektura podrava 7 modova rada procesora. Promena moda se moe uraditi softverski ili moe biti izazvana spoljanjim prekidima ili do nje dolazi radi procesiranja izuzetaka. Modovi rada ARM procesora su: 1) User mode (USR) osnovni mod, veina programa se izvrava u ovom modu, 2) Fast Interrupt (FIQ) mod koji omoguava procesiranje prekida visokog prioriteta, 3) Interrupt (IRQ) mod namenjen prekidima niskog prioriteta, 4) Supervisor (SVC) mod u sluaju reseta ili softverskog prekida, 5) Abort (ABT) mod koji se aktivira prilikom greaka u pristupu memoriji (load / store), 6) Undifined (UND) mod koji se aktivira kada se pokua dekodirati nedefinisana instrukcija, 7) System (SYS) privilegovani mod za operativni sistem. Svi modovi osim User moda su tzv. privilegovani modovi jer imaju potpuni pristup resursima sistema. Svi modovi osim User moda i System moda slue za procesiranje izuzetaka.

MSREAL

ARM mikrokontroleri

Kada se desi promena moda, neki od standardnih registara zamenjuju se registrima namanjenim za rad u tom modu (oseneni registri na slici 1.2), ime se izbegava pamenje sadraja odgovarajueg registra pri svakom izuzetku.

ARM ima 31 registar opte namene i 6 statusnih registara. 16 registara opte namene (R0..R15) i jedan ili dva statusna registra su vidljivi u svakom trenutku, u zavisnosti od moda rada, a ostali se koriste za ubrzavanje procesiranja izuzetaka. Od pomenutih 16 registara, 3 registra imaju specijalnu namenu to su registri R13, R14 i R15. Stack pointer (SP) Registar R13 se koristi kao stack pointer, a koriste ga instrukcije PUSH i POP. Link register (LR) Registar R14 je link register. Ovaj registar sadri adresu sledee instrukcije posle instrukcija kojima se pozivaju potprogrami. Takoe se koristi za skalditenje povratne adrese prilikom ulaska u modove izuzetaka. U svim drugim situacijama, R14 se koristi kao registar opte namene. Program counter (PC) Registar R15 je program counter. On se moe koristiti u mnogim instrukcijama kao pokaziva na instrukciju koja treba da se izvri dve instrukcije nakon instrukcije koja se trenutno izvrava. S obzirom na to da su sve instrukcije u ARM modu1 duine 32 bita (4 bajta), instrukcije su smetene na adesama 0, 4, 8, 12, 16 itd, pa su poslednja dva bita ovog registra uvek 0. U Thumb modu instrukcije su 16-bitne.

Pored registara opte namene, od kojih neki imaju i specijalnu namenu, postoji i statusni registar u kome se nalaze informacije o trenutnom statusu procesora. Current Program Status Register (CPSR) CPSR registru je mogue pristupiti u svim modovima rada procesora. On sadri uslovne flegove (conditional flags), bite za zabranjivanje prekida (interrupt disable
1

O ARM i Thumb modu, odnosno o ARM i Thumb setu instrukcija e biti govoreno u poglavlju 1.3

MSREAL

ARM mikrokontroleri

bits), informaciju o modu rada procesora i druge statusne i kontrolne informacije. Svaki mod izuzetaka ima svoj Saved Program Status Register (SPSR) u kome se uva vrednost CPSR registra kada se odgovarajui izuzetak deava. Izgled CPSR registra prikazan je na slici 1.3.

Slika 1.3 CPSR registar U nastavku je opisana funkcija pojedinih bita ovog registra. N Negative result from ALU Z Zero result from ALU C ALU operation Caried out V ALU operation oVerflowed Q Q flag, indicate whether overflow and/or saturation has occured in some instructions GE [3:0] Greater then or Equal (prethodno pomenuti bitovi mogu biti upisivani u bilo kom modu rada procesora i spadaju u grupu tzv. user-writable bitova ovog registra) A, I, F interrupt disable bits M [4 : 0] determine the mode in which processor operates (A,I,F i M bitovi mogu biti upisani u bilo kom privilegovanom modu rada procesora)

MSREAL

ARM mikrokontroleri

T i J select the current instruction set

ARM arhitektura podrava 7 tipova izuzetaka i privilegovan mod rada za svaki od njih. Izuzeci su: 1) reset, 2) greka u pristupu memoriji (Data Abort), 3) spoljanji prekid visokog prioriteta (FIQ), 4) spoljanji prekid niskog prioriteta (IRQ), 5) greka prilikom uzimanja instrukcije (Prefetch Abort), 6) softverski prekid (Software Interrupt), 7) pokuaj dekodiranja nedefinisane instrukcije (Undefined Instruction). Kada se desi izuzetak, procesor: - kopira CPSR u SPSR_<mod> - postavlja odgovarajue CPSR bite - prelazi na ARM stanje - prelazi u mod za obradu izuzetka - zabranjuje prekide - povratnu adresu upisuje u LR_<mod> - u PC upisuje adresu vektora prekida Posle obrade izuzetka, procesor: - u CPSR upisuje vrednost koja je sauvana u SPSR_<mod> - u PC upisuje povratnu adresu koja je sauvana u LR_<mod>

MSREAL

ARM mikrokontroleri

1.3
1.3.1

SET INSTRUKCIJA
USLOVNO IZVRAVANJE INSTRUKCIJA

Veina instrukcija ARM-a se moe izvravati uslovno, to znai da njihovo izvravanje zavisi od toga da li odreeni bitovi u CPSR registru (N, Z, C, V) zadovoljavaju uslov definisan u instrukciji. Ako uslov nije zadovoljen, instrukcija se ponaa kao NOP. Svaka instrukcija sadri 4-bitno polje za definisanje uslova. Na slici 1.4 prikazano je polje za definisanje uslova i date su potencijalne vrednosti istog, njihovo znaenje i vrednosti bita CPSR registra koje treba da budu postavljene u datom trenutku da bi se instrukcija izvrila.

Slika 1.4 Polje za definisanje uslova i kodovi uslova

MSREAL

ARM mikrokontroleri

Uslovnim izvravanjem instrukcija postie se poveenje gustine koda i poboljanje performansi. Veina ARM procesora podrava dva seta instrukcija: 1) 32-bitni ARM set instrukcija, 2) 16-bitni Thumb set instrukcija.

1.3.2

ARM SET INSTRUKCIJA

U nastavku su opisane neke od instrukcija ARM procesora.

Load/Store instrukcije Svi memorijski transferi se obavljaju instrukcijama iz ove grupe. Ostale instrukcije ne mogu imati memorijske operadne. 1) Uitavanje iz memorije: LDR uitava jedan 32-bitni podatak LDRB uitava jedan bajt, a ostatak registra je proiren nulama LDRH uitava 16-bitni podatak, ostatak se proiruje nulama 2) uvanje u memoriju: STR smeta 32-bitni podatak u memoriju STRB smeta jedan bajt (LSB) u memoriju STRH smeta jedan 16-bitni podatak (nii) u memoriju

ARM load / store adresni modovi: 1) Offset (bazni registar + ofset +/- 12-bitna konstanta ili +/- drugi registar koji opciono moe biti iftovan)
LDR R0, LDR R0, STR R0, [R1, #4] [R1, #-8] [R1, R2] ; R0 <- M[R1 + 4] ; R0 <- M[R1 - 8] ; M[R1 + R2] <-R0

10

MSREAL

ARM mikrokontroleri

STR R0, [R1, -R2, LSL #2] ; M[R1 - 4 * R2] <- R0 * LSL je logiko iftovanje u levo (mnoenje)

2) Pre-indexed (isto kao offset, samo se bazni registar aurira na izraunatu adresu)
LDR R0, [R1, #8]! ; R0 <- M[R1 + 8], R1 <- R1 + 8

3) Post-indexed (isto kao ofset, samo to se bazni registar aurira nakon to se njegova originalna vrednost upotrebi kao adresa)
STR R0, [R1], #4 ; M[R1] <- R0, R1 <- R1 + 4

Instrukcije za obradu podataka 1) Instrukcije za izraunavanje: ADD sabiranje dva operanda ADC sabiranje sa prethodnim prenosom SUB oduzimanje SBC oduzimanje sa pozajmicom AND logiko I ORR logiko ILI 2) Instrukcije poreenja i testiranja: CMP uporeivanje (oduzimanjem) i auriranje flegova TST testiranje (bitovskom konjunkcijom) i auriranje flegova 3) Instrukcije transfera meu registrima: MOV premetanje iz registra u registar MVN premetanje uz prethodno komplementiranje
ADD SUB AND MOV R0, R0, R0, R0, R0, R1, R1, R0, #1 R2 R2, LSR R3 LSL #2 ; ; ; ; R0 R0 R0 R0 <<<<R0 R1 R1 R0 + & * 1 R2 (R2 * 2^R3) 4

11

MSREAL

ARM mikrokontroleri

Dodavanjem odgovarajueg uslovnog koda kao sufiksa (tabela sa slike 1.4, Mnemonic extension), postie se uslovno izvravanje instrukcija:
ADDGT R0, R0, R1 ; R0 <- R0 + R1 samo ako je prethodno bilo vee SUBEQ R1, R2, R3 ;R1 <- R2 R3 samo ako je prethodno bilo jednako

Ako instrukcije imaju sufiks S, tada auriraju flegove. Pored navedenih tipova instrukcija, ARM procesori podravaju i instrukcije mnoenja, instrukcije grananja, instrukcije pristupa statusnom registru, instrukcije za rad sa grupama registara, instrukcije za generisanje izuzetaka,...

1.3.3

THUMB SET INSTRUKCIJA

Ovaj set instrukcija je ugraen u ARM arhitekturu sa ciljem da obezbedi veu gustinu koda i bolje performanse za embedded aplikacije.Thumb predstavlja podskup ARM seta instrukcija koji ine najee koriene instrukcije kompresovane sa 32 na 16 bita. Prilikom izvravanja, ove 16-bitne instrukcije mogu biti dekompresovane na 32-bitne instrukcije ili mogu biti izvrene direktno koristei Thumb dekodnu jedinicu. Iako Thumb kod koristi 40% vie instrukcija nego ekvivalentan ARM kod, on zahteva oko 30% manje prostora. Thumb kod je za oko 40% sporiji od ARM koda, tako da se uglavnom koristi u ne previe zahtevnim rutinama sa cilljem smanjenja potronje sistema i zauzetosti memorije. Kada se procesor nalazi u Thumb modu, dostupno je 8 registara opte namene (R0..R7). Neke Thumb instrukcije takoe koriste i Program Counter (R15), Link Register (R14) i Stack Pointer (R13). Koji set instrukcija je trenutno aktivan definie bit T u CPSR registru (slika 1.3): T = 0 => ARM mod, uzimaju se (fetch) 32-bitnim instrukcijama, PC se uveava za 4, T = 1 => Thumb mod, uzimaju se (fetch) 16-bitne instrukcije, PC se uveava za 2.

12

MSREAL

ARM mikrokontroleri

Prelazak u Thumb mod se radi izvravanjem naredbe BX (Branch and Exchange) ili setovanjem T bita u CPSR registru. Kompresovanje 32-bitnih instrukcija u 16-bitne mogue je jer kod veine instrukcija: - uslovno izvravanje se ne koristi, - isti registar se koristi za smetanje operanda i rezultata koji nastaje obradom tog operanda, - koristi se samo niih 16 bitova registara, - ... Na slici 1.5 prikazan je izgled jedne Thumb instrukcije (ADC) i njoj ekvivalentne ARM instrukcije.

Slika 1.5 ADC instrukcija u Thumb i ARM modu Za Thumb ADC: Rd informacija o registru koji sadri prvi operand i u koji e biti smeten rezultat operacije Rm informacija o registru koji sadri drugi operand Primetimo da su prva 4 bita u 32-bitnoj instrukciji 1110, a ta 4 bita definiu uslov izvravanja naredbe, pa, ako pogledamo tabelu sa slike 1.4, vidimo da se naredba izvrava bezuslovno.

13

MSREAL

ARM mikrokontroleri

1.4

PROTONA OBRADA (PIPELINE)

ARM procesori (ARM7 i stariji) koriste 3-stepenu protonu obradu, tako sa emo prednost protone obrade instrukcija objasniti na optem primeru protone obrade u 3 koraka. Svaki korak protone obrade traje tano jedan period sinhronizacionog signala. Prvi korak je itanje instrukcije (fetch), grugi korak je dekodiranje instrukcije (decode) i trei korak je izvrenje (execute). Poto su stepeni protone obrade striktno odvojeni i svaki stepen ima na raspolaganju sve informacije i sve operande, jasno je da kada je jedna instrukcija u stepenu dekodiranja, stepen za itanje je potpuno slobodan i moe se iskoristiti za uzimanje naredne instrukcije. Ptethodno pomenuto zapravo predstavlja osnovnu osobinu i osnovnu prednost protone obrade preklapanje u izvrenju delova razliitih instrukcija (slika 1.6).

Slika 1.6 Protona obrada Kao to se vidi sa slike, posle drugog perioda postie se puno preklapanje jer svaki stepen protone obrade obrauje razliitu instrukciju. Odnosno, posle punjena svih stepeni protone obrade postie se puni paralelizam na nivou obrade instrukcija. Paralelizam u obradi znaajno ubrzava izvravanje instrukcija u odnosu na obradu bez paralelizma.

14

MSREAL

ARM mikrokontroleri

Protona obrada ne skrauje vreme izvrenja instrukcija (sa slike se vidi da se sve instrukcije izvravaju u tri perioda takta), ali, zbog preklapanja odnosno paralelizma u obradi delova instrukcija, poveava broj izvrenih instrukcija u jedinici vremena. U idealnom sluaju, ubrzanje koje se postie protonom obradom jednako je broju stepeni protone obrade. Tako je u sluaju 3-stepene protone obrade, ubrzanje koje se postie protonom obradom u odnosu na isti processor koje ne koristi protonu obradu jednako 3. To znai da je u idealnom sluaju izvrenje programa na procesoru sa protonom obradom 3 puta bre u odnosu na isti procesor bez protone obrade.

Na slici 1.7 nalazi se prikaz originalne ARM protone obrade u 3 koraka koja je ostala gotovo neizmenjena od prvog ARM procesora pa do jednog od savremenih ARM procesora ARM7TDMI. To je klasina fetch-decode-execute protona obrada, koja izvrava jednu instrukciju po taktu. Prvi segment protone obrade ita instrukciju iz memorije i uveava vrednost u instrukcijskom adresnom registru, u kome se sada nalazi adresa sledee instrukcije. Ista ta vrednost se smeta i u programski broja. Sledei segment dekodira (deifruje) instrukciju i priprema kontrolne signale potrebne za izvravanje iste. Trei segment ita operande iz registara, izvrava aritmetiko-logike operacije, ita iz memorije ili upisuje u nju, ako je potrebno, i konano upisuje nazad modifikovane vrednosti registara.

15

MSREAL

ARM mikrokontroleri

Slika 1.7 Protona obrada kod ARM7TDMI procesora Novije generacije ARM procesora imaju protonu obradu koja je podeljena na 5, 6, 7, 8, 9, pa ak i 13 koraka.

16

You might also like