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 tražila 16-bitni mikroprocesor (zamenu za 6502 procesor) za novu verziju svog desktop računara. Kako ni jedna od na tržištu 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 izvršavanje pojedinih trajalo nekoliko stotina taktova, tako da je dizajniranje novog procesora bilo neophodno. Originalna ideja potiče od projekta Barkley RISC (Reduced Instruction Set Computer) (1981. g.), u kome je grupa studenata pokazala da je moguće 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. Sadržao 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 unapreñenje u odnosu na prvu predstavlja koprocesorska podrška. 1990. godine mnoge kompanije postaju zainteresovane za ARM procesore, a kompanija Apple počinje da koristi ARM procesore za svoje PDA ureñaje. Iz saradnje kompanija Acorn i Apple nastaje kompanija Advanced RISC Machine Ltd, ili samo ARM Ltd. Potom nastaje treća generacija procesora, pa četvrta, peta,... Svaka nova generacija procesora donela je izvesna unapreñenja, naravno, kao na primer: prelazak na 32-bitnu arhitekturu, uvoñenje “kompresovanog” seta instrukcija (Thumb), multiprocesiranje, ...

1

ARM je. Kompanije u čije ureñaje su ugrañeni ARM procesori su još i: Alcatel. Koriste se u potrošačkoj elektronici.… 1.2 PRIMENA ARM PROCESORA Jednostavnost. biće govoreno u narednim poglavljima. a proizvode ih firme koje od ARM-a kupuju licencu za njihov dizajn. gde operacije za rad sa podacima manipulišu samo sa sadržajem registara. ST Microelectronics. uključujući PDA ureñaje. iPOD ureñeje i druge digitalne media plejere. Texas Instruments. stoga je ARM arhitektura najšire primenjena 32-bitna RISC arhitektura. kalkulatore.MSREAL ARM mikrokontroleri O nekim od unapreñenja koja predstavljaju najvažnije karakteristike savremenih ARM procesora. VLSI Technology. a ne direktno sa sadržajem memorije. performanse i mala potrošnja su glavni atributi u razvoju ARM arhitekture. kompanija ARM ne proizvodi čipove. intellectual property company). dobre performanse i niska potrošnja čine ARM procesore veoma pogodnim za primenu u embedded sistemima. Inače. Freescale. pa tako imamo Intel-ove ARM procesore. LG. kao i o najvažnijim karakteristikama ARM arhitekture uopšte. godine ARM procesori čine oko 90% od svih embedded 32-bitnih RISC procesora. Atmel. 2 . Yamaha. NEC.2 1. Sharp. Reduced Instruction Set Computer (RISC) i karakterišu ga sledeće tipične osobine RISC arhitekture: . kao što je već napomenuto. 2009.učitaj / smesti (load / store) arhitektura. Samsung. mobilne telefone.2. 1. mala veličina čipova.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 potrošnje. Philips-ove ARM procesore i sl. već samo pravi dizajn procesora (oni su tzv. ali i kompjuterske periferije kao što su hard diskovi i ruteri. Broadcom. ručne konzole za igrice. NVIDIA. Dakle.1.

1. dok su kod Harvard arhitekture (slika 1.a) u istu memoriju su smeštene i instrukcije i podaci. . R1 .R2 + R3 M[adr1] <.b) memorija za instrukcije i memorija za podatke fizički odvojene. a sve ostale instrukcije rade sa operandima koji su smešteni u registrima.R1 Registarsko-registarski skup instrukcija veoma je jednostavan jer je pristup memoriji dozvoljen samo instrukcijama prenosa sadržaja. a ARM9 koristi Harvard arhitekturu. R3 MOV adr1. Organizacija memorije Što se tiče organizacije memorije. kod ovakvog skupa instrukcija operandi iz memorije se prvo moraju preneti u registre. Load / Store arhitektura Sve instrukcije ARM procesora su registarsko-registarske. . potrebno je izvršiti sledeće instrukcije: MOV R2. za sabiranje operanada koji se nalaze u memoriji na adresama adr2 i adr3. R2 <. a zatim obaviti aritmetičko-logička operacija. .M[adr2] R3 <. Kod von Neuman-ove arhitekture (slika 1. a rezultat treba smestiti u memorijsku lokaciju sa adresom adr1.sve instrukcije su iste dužine (32 bita). Ovakav skup instrukcija ne engleskom se naziva load-store. . Na primer. ARM7 koristi von Neumann-ovu arhitekturu. a operacija prenosa sadržaja iz registra u memoriju se naziva store.mogućnost uslovnog izvršavanja skoro svih instrukcija. Tako npr. kod registarsko-registarskih instrukcija mesta svih operanada moraju biti u registrima. Za razliku od registarsko-memorijskih instrukcija kod kojih mesto jednog ili više operanada može biti u memoriji. adr3 MOV R1.jednostavani modovi adresiranja.1. . R2. 3 . zato što se operacija prenosa operanada iz memorije u registar naziva load.MSREAL ARM mikrokontroleri . različite familije ARM kontrolera koriste različite arhitekture.M[adr3] R1 <. Dakle. adr2 MOV R3.

2.32-bitne (word) 1.3 MODOVI RADA PROCESORA.16-bitne (halfword) .8-bitne (byte) . 4 .1 Uopšteni prikaz arhitekrure kontrolera a) von Neumann-ova b) Harvard b) 1.2 TIPOVI PODATAKA ARM procesori podržavaju sledeće tipove podataka: . REGISTRI Na slici 1.2 pikazani su registri ARM procesora u različitim modovima rada procesora.MSREAL ARM mikrokontroleri a) Slika 1.2.

MSREAL ARM mikrokontroleri Slika 1. Svi modovi osim User moda i System moda služe za procesiranje izuzetaka. privilegovani modovi jer imaju potpuni pristup resursima sistema. većina programa se izvršava u ovom modu. 7) System (SYS) – privilegovani mod za operativni sistem. 5 . Svi modovi osim User moda su tzv. Promena moda se može uraditi softverski ili može biti izazvana spoljašnjim prekidima ili do nje dolazi radi procesiranja izuzetaka. Modovi rada ARM procesora su: 1) User mode (USR) – osnovni mod. 6) Undifined (UND) – mod koji se aktivira kada se pokuša dekodirati nedefinisana instrukcija. 2) Fast Interrupt (FIQ) – mod koji omogućava procesiranje prekida visokog prioriteta. 4) Supervisor (SVC) –mod u slučaju reseta ili softverskog prekida. 5) Abort (ABT) – mod koji se aktivira prilikom grešaka u pristupu memoriji (load / store). 3) Interrupt (IRQ) – mod namenjen prekidima niskog prioriteta.2 Registri ARM procesora ARM arhitektura podržava 7 modova rada procesora.

neki od standardnih registara zamenjuju se registrima namanjenim za rad u tom modu (osenčeni registri na slici 1. instrukcije su smeštene na adesama 0. pa su poslednja dva bita ovog registra uvek “0“. od kojih neki imaju i specijalnu namenu.2). 4. čime se izbegava pamćenje sadržaja odgovarajućeg registra pri svakom izuzetku. Link register (LR) Registar R14 je link register. R14 se koristi kao registar opšte namene. 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. a koriste ga instrukcije PUSH i POP. U Thumb modu instrukcije su 16-bitne. 16 itd.. 8. Pored registara opšte namene. S obzirom na to da su sve instrukcije u ARM modu1 dužine 32 bita (4 bajta). On sadrži uslovne flegove (conditional flags).R15) i jedan ili dva statusna registra su vidljivi u svakom trenutku. 16 registara opšte namene (R0. Ovaj registar sadrži adresu sledeće instrukcije posle instrukcija kojima se pozivaju potprogrami. Program counter (PC) Registar R15 je program counter.MSREAL ARM mikrokontroleri Kada se desi promena moda. R14 i R15. Stack pointer (SP) Registar R13 se koristi kao stack pointer. U svim drugim situacijama. Takoñe se koristi za skaldištenje povratne adrese prilikom ulaska u modove izuzetaka.3 6 . Current Program Status Register (CPSR) CPSR registru je moguće pristupiti u svim modovima rada procesora. 3 registra imaju specijalnu namenu – to su registri R13. 12. ARM ima 31 registar opšte namene i 6 statusnih registara. a ostali se koriste za ubrzavanje procesiranja izuzetaka. On se može koristiti u mnogim instrukcijama kao pokazivač na instrukciju koja treba da se izvrši dve instrukcije nakon instrukcije koja se trenutno izvršava. postoji i statusni registar u kome se nalaze informacije o trenutnom statusu procesora. Od pomenutih 16 registara. u zavisnosti od moda rada.

F – interrupt disable bits M [4 : 0] – determine the mode in which processor operates (A.3. informaciju o modu rada procesora i druge statusne i kontrolne informacije. Slika 1.F i M bitovi mogu biti upisani u bilo kom privilegovanom modu rada procesora) 7 . user-writable bitova ovog registra) A. N – Negative result from ALU Z – Zero result from ALU C – ALU operation Caried out V – ALU operation oVerflowed Q – Q flag.3 CPSR registar U nastavku je opisana funkcija pojedinih bita ovog registra.I.MSREAL ARM mikrokontroleri bits). I. 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. Svaki mod izuzetaka ima svoj Saved Program Status Register (SPSR) u kome se čuva vrednost CPSR registra kada se odgovarajući izuzetak dešava. Izgled CPSR registra prikazan je na slici 1.

prelazi u mod za obradu izuzetka . procesor: .u CPSR upisuje vrednost koja je sačuvana u SPSR_<mod> . 5) greška prilikom uzimanja instrukcije (Prefetch Abort).MSREAL ARM mikrokontroleri T i J – select the current instruction set ARM arhitektura podržava 7 tipova izuzetaka i privilegovan mod rada za svaki od njih.zabranjuje prekide . Izuzeci su: 1) reset.u PC upisuje povratnu adresu koja je sačuvana u LR_<mod> 8 . 6) softverski prekid (Software Interrupt). Kada se desi izuzetak.povratnu adresu upisuje u LR_<mod> .postavlja odgovarajuće CPSR bite .prelazi na ARM stanje . procesor: . 2) greška u pristupu memoriji (Data Abort).u PC upisuje adresu vektora prekida Posle obrade izuzetka.kopira CPSR u SPSR_<mod> . 3) spoljašnji prekid visokog prioriteta (FIQ). 4) spoljašnji prekid niskog prioriteta (IRQ). 7) pokušaj dekodiranja nedefinisane instrukcije (Undefined Instruction).

Ako uslov nije zadovoljen. Svaka instrukcija sadrži 4-bitno polje za definisanje uslova. Na slici 1. što znači da njihovo izvršavanje zavisi od toga da li odreñeni bitovi u CPSR registru (N.3 1. instrukcija se ponaša kao NOP. C. Slika 1. njihovo značenje i vrednosti bita CPSR registra koje treba da budu postavljene u datom trenutku da bi se instrukcija izvršila.1 SET INSTRUKCIJA USLOVNO IZVRŠAVANJE INSTRUKCIJA Većina instrukcija ARM-a se može izvršavati uslovno.3.4 Polje za definisanje uslova i kodovi uslova 9 .MSREAL ARM mikrokontroleri 1.4 prikazano je polje za definisanje uslova i date su potencijalne vrednosti istog. V) zadovoljavaju uslov definisan u instrukciji. Z.

2 ARM SET INSTRUKCIJA U nastavku su opisane neke od instrukcija ARM procesora. R0 <. Ostale instrukcije ne mogu imati memorijske operadne. STR R0.MSREAL ARM mikrokontroleri Uslovnim izvršavanjem instrukcija postiže se povećenje gustine koda i poboljšanje performansi. #4] [R1. LDR R0. 2) 16-bitni Thumb set instrukcija. [R1. ostatak se proširuje nulama 2) Čuvanje u memoriju: STR – smešta 32-bitni podatak u memoriju STRB – smešta jedan bajt (LSB) u memoriju STRH – smešta jedan 16-bitni podatak (niži) u memoriju ARM load / store adresni modovi: 1) Offset (bazni registar + ofset +/.drugi registar koji opciono može biti šiftovan) LDR R0.3. 1. Load/Store instrukcije Svi memorijski transferi se obavljaju instrukcijama iz ove grupe.M[R1 + 4] . #-8] [R1. M[R1 + R2] <-R0 10 .8] . 1) Učitavanje iz memorije: LDR – učitava jedan 32-bitni podatak LDRB – učitava jedan bajt. a ostatak registra je proširen nulama LDRH – učitava 16-bitni podatak. R2] . R0 <. Većina ARM procesora podržava dva seta instrukcija: 1) 32-bitni ARM set instrukcija.M[R1 .12-bitna konstanta ili +/.

R0. R1 <. samo što se bazni registar ažurira nakon što se njegova originalna vrednost upotrebi kao adresa) STR R0. samo se bazni registar ažurira na izračunatu adresu) LDR R0. [R1]. R0.R1 + 4 Instrukcije za obradu podataka 1) Instrukcije za izračunavanje: ADD – sabiranje dva operanda ADC – sabiranje sa prethodnim prenosom SUB – oduzimanje SBC – oduzimanje sa pozajmicom AND – logičko I ORR – logičko ILI 2) Instrukcije poreñenja i testiranja: CMP – uporeñivanje (oduzimanjem) i ažuriranje flegova TST – testiranje (bitovskom konjunkcijom) i ažuriranje flegova 3) Instrukcije transfera meñu registrima: MOV – premeštanje iz registra u registar MVN – premeštanje uz prethodno komplementiranje ADD SUB AND MOV R0. R0. R1.R0 * LSL je logičko šiftovanje u levo (množenje) 2) Pre-indexed (isto kao offset. LSL #2] .4 * R2] <. R0 <. M[R1 .MSREAL ARM mikrokontroleri STR R0. R0 R0 R0 R0 <<<<R0 R1 R1 R0 + – & * 1 R2 (R2 * 2^R3) 4 11 .R1 + 8 3) Post-indexed (isto kao ofset. . #1 R2 R2. R0. . LSR R3 LSL #2 . #8]! . R1. R0.M[R1 + 8]. M[R1] <. .R0. [R1. #4 . [R1. -R2. R1 <.

tada ažuriraju flegove. instrukcije grananja. T = 1 => Thumb mod.3. Iako Thumb kod koristi 40% više instrukcija nego ekvivalentan ARM kod.R7). ARM procesori podržavaju i instrukcije množenja. instrukcije za rad sa grupama registara. ove 16-bitne instrukcije mogu biti dekompresovane na 32-bitne instrukcije ili mogu biti izvršene direktno koristeći Thumb dekodnu jedinicu.R2 – R3 samo ako je prethodno bilo “jednako” Ako instrukcije imaju sufiks S. Pored navedenih tipova instrukcija. Link Register (R14) i Stack Pointer (R13). PC se uvećava za 2. instrukcije za generisanje izuzetaka.Thumb predstavlja podskup ARM seta instrukcija koji čine najčešće korišćene instrukcije kompresovane sa 32 na 16 bita. 12 . Thumb kod je za oko 40% sporiji od ARM koda.3): T = 0 => ARM mod. Neke Thumb instrukcije takoñe koriste i Program Counter (R15). R1 .R1 <. Koji set instrukcija je trenutno aktivan definiše bit T u CPSR registru (slika 1. tako da se uglavnom koristi u ne previše zahtevnim rutinama sa cilljem smanjenja potrošnje sistema i zauzetosti memorije. Prilikom izvršavanja.. R3 . PC se uvećava za 4.MSREAL ARM mikrokontroleri Dodavanjem odgovarajućeg uslovnog koda kao sufiksa (tabela sa slike 1. on zahteva oko 30% manje prostora.. uzimaju se (fetch) 16-bitne instrukcije. instrukcije pristupa statusnom registru.. postiže se uslovno izvršavanje instrukcija: ADDGT R0. Mnemonic extension).. R2. R0 <. R0. 1.3 THUMB SET INSTRUKCIJA Ovaj set instrukcija je ugrañen u ARM arhitekturu sa ciljem da obezbedi veću gustinu koda i bolje performanse za embedded aplikacije.4. Kada se procesor nalazi u Thumb modu. dostupno je 8 registara opšte namene (R0.R0 + R1 samo ako je prethodno bilo ”veće” SUBEQ R1. uzimaju se (fetch) 32-bitnim instrukcijama.

5 ADC instrukcija u Thumb i ARM modu Za Thumb ADC: Rd – informacija o registru koji sadrži prvi operand i u koji će biti smešten rezultat operacije Rm – informacija o registru koji sadrži drugi operand Primetimo da su prva 4 bita u 32-bitnoj instrukciji 1110.isti registar se koristi za smeštanje operanda i rezultata koji nastaje obradom tog operanda.. vidimo da se naredba izvršava bezuslovno. .5 prikazan je izgled jedne Thumb instrukcije (ADC) i njoj ekvivalentne ARM instrukcije.. . .. 13 . a ta 4 bita definišu uslov izvršavanja naredbe. Na slici 1. ako pogledamo tabelu sa slike 1. Slika 1. pa.uslovno izvršavanje se ne koristi. Kompresovanje 32-bitnih instrukcija u 16-bitne moguće je jer kod većine instrukcija: .MSREAL ARM mikrokontroleri Prelazak u Thumb mod se radi izvršavanjem naredbe BX (Branch and Exchange) ili setovanjem T bita u CPSR registru.4.koristi se samo nižih 16 bitova registara.

Ptethodno pomenuto zapravo predstavlja osnovnu osobinu i osnovnu prednost protočne obrade – preklapanje u izvršenju delova različitih instrukcija (slika 1. posle drugog perioda postiže se puno preklapanje jer svaki stepen protočne obrade obrañuje različitu instrukciju. jasno je da kada je jedna instrukcija u stepenu dekodiranja.4 PROTOČNA OBRADA (PIPELINE) ARM procesori (ARM7 i stariji) koriste 3-stepenu protočnu obradu. Paralelizam u obradi značajno ubrzava izvršavanje instrukcija u odnosu na obradu bez paralelizma. stepen za čitanje je potpuno slobodan i može se iskoristiti za uzimanje naredne instrukcije. Slika 1. Svaki korak protočne obrade traje tačno jedan period sinhronizacionog signala. 14 . Odnosno.6 Protočna obrada Kao što se vidi sa slike. tako sa ćemo prednost protočne obrade instrukcija objasniti na opštem primeru protočne obrade u 3 koraka. posle punjena svih stepeni protočne obrade postiže se puni paralelizam na nivou obrade instrukcija.MSREAL ARM mikrokontroleri 1. grugi korak je dekodiranje instrukcije (decode) i treći korak je izvršenje (execute). Prvi korak je čitanje instrukcije (fetch).6). Pošto su stepeni protočne obrade striktno odvojeni i svaki stepen ima na raspolaganju sve informacije i sve operande.

povećava broj izvršenih instrukcija u jedinici vremena. ubrzanje koje se postiže protočnom obradom u odnosu na isti processor koje ne koristi protočnu obradu jednako 3. ako je potrebno. zbog preklapanja odnosno paralelizma u obradi delova instrukcija. izvršava aritmetičko-logičke operacije. Tako je u slučaju 3-stepene protočne obrade.7 nalazi se prikaz originalne ARM protočne obrade u 3 koraka koja je ostala gotovo neizmenjena od prvog ARM procesora pa do jednog od savremenih ARM procesora ARM7TDMI. ubrzanje koje se postiže protočnom obradom jednako je broju stepeni protočne obrade. čita iz memorije ili upisuje u nju. U idealnom slučaju. Ista ta vrednost se smešta i u programski brojač. Prvi segment protočne obrade čita instrukciju iz memorije i uvećava vrednost u instrukcijskom adresnom registru. Treći segment čita operande iz registara. To znači da je u idealnom slučaju izvršenje programa na procesoru sa protočnom obradom 3 puta brže u odnosu na isti procesor bez protočne obrade. To je klasična fetch-decode-execute protočna obrada. u kome se sada nalazi adresa sledeće instrukcije.MSREAL ARM mikrokontroleri Protočna obrada ne skraćuje vreme izvršenja instrukcija (sa slike se vidi da se sve instrukcije izvršavaju u tri perioda takta). ali. i konačno upisuje nazad modifikovane vrednosti registara. Na slici 1. 15 . Sledeći segment dekodira (dešifruje) instrukciju i priprema kontrolne signale potrebne za izvršavanje iste. koja izvršava jednu instrukciju po taktu.

pa čak i 13 koraka. 9.7 Protočna obrada kod ARM7TDMI procesora Novije generacije ARM procesora imaju protočnu obradu koja je podeljena na 5. 8. 16 . 6. 7.MSREAL ARM mikrokontroleri Slika 1.

Sign up to vote on this title
UsefulNot useful