Integrisani raunarski sistemi 2 IRS 2 20192020 Nenad



























































- Slides: 59
Integrisani računarski sistemi 2 - IRS 2 2019/2020 Nenad Jovičić Marija Janković
Cortex familije
Cortex familije �R serija se često susreće kao So. C, jer poseduje hardver za neke specifične zadata (HDD na primer). �Od Cortex-M familije imamo Cortex-M 0, Cortex-M 0+, Cortex-M 1, Cortex-M 3, Cortex-M 4, and Cortex-M 7. �Cortex-M 1 je tzv. Softcore procesor namenjen FPGA imlementaciji
Cortex familije
Cortex-M segment
Trust. Zone
Cortex M varijante procesora �Cortex-M 3 se prvi pojavio i to je mainstream model. �Cortex-M 4 je jači po tome što ima proširen insrukcijski set sa nekim DSP instrukcijama, kao i podršku za hardverski FPU. �Najjači je Cortex-M 7 koji se značajno ralikuje od prethodnika ali ima isti programerski model, tako da je softver praktično vertikalno kompatibilan.
Cortex u odnosu na starije familije � 90 -tih su postojala ARM 7 i ARM 9 CPU jezgra. Iako je svaki CPU bio identičan, ipak je to bio samo CPU i svaki proizvođač je na svoj način dodavao sve periferije. �To je uzrokovalo teškoće u migracijama između različitih AMR baziranih platformi. �Cortex-M je to izmenio jer je to jedna potpuna mikrokontrolerska platforma (MCU), a ne samo procesorsko jezgro CPU. �Standardizovani su BUS arhitektura, prekidni kontroler, MPU, kontrola najapanja, debug interfejs. . .
Odakle početi sa proučavanjem? �Cortex-M 3 je osnova sa koje se lako silazi i podiže na Cortex-M 0 ili Cortex-M 4. �Cortex-M 7 ima kompleksniji memorijski interfejs.
Cortex-M 3 �Trostepeni pajplajn koji je dobar kada nema skokova a instrukcije su jednostavne. �Problem se javlja pri svakom skoku jer se pipeline prazni, tj. Prekida se kontinuitet, a to sve efektivno povećava potrošnju i smanjuje brzinu.
Pipeline �Ipak Cortex-M 3 i M 4 imaju prefetch buffer koji omogućava speculative branch što znatno popravlja stvar. (učitava u prefetch buffer sa obe adrese) BEQ label 1 label 2: �Cortex-M 7 ima full Branch Target Address što je još naprednije. (skok se vrši još u decode fazi) �Cortex-M 3 i Cortex-M 4 postižu 1. 25 DMIPS/MHz dok. Cortex-M 7 postiže 2. 14 DMIPS/MHz. �DMIPS/MHz je rezultat tzv. Dhrystone testa koji predstavlja skup testova namenjenih celobrojnoj aritmetici.
Cortex-M 3 �Hardverski množač i delitelj �NVIC sa 240 ulaza, sa determinističkim odzivom od tačno 12 ciklusa. �Systick tajmer u okviru samog procesora realizovan kao 24 -bitni brojač �Uz NVIC tu je i WIC (wakeup interrupt controller) koji omogućava buđenje iz lowpower režima.
Cortex-M 3
Debug �Core. Sight tehnologija. �JTAG koji je ranije bio dostupan na ARM 7 i ARM 9 je omogućavao samo 2 breakpoint-a a najvažnije je da je CPU postajao blackbox kada se aktivira run komanda. �Coresight to menja i mogućava 8 brakpoint-a kako u Code tako i u Data prostoru. �Data watchpoint and trace (DWT) unit prati memoriju ili registre bez uticanja na rad procesora (on the fly) �Instrumentation trace macrocell (ITM) unit omogućava da se poruke poslate sa printf() funkcijom ispisuju na terminalskom prozoru u debuger-u. Dakle, PC postaje kao nekakav instrument za posmatranje rada hardvera. �ITM podseća na UART ali je znatno komplikovaniji i poseduje 32 fizicka kanala. . .
Debug �Embedded trace macrocell (ETM) unit je jedinica omogućava praćenje inzvršavanja koda. Poseduju je samo high-end mikrokontroleri. Obezbeđuje code coverage monitoring �Cortex-M 3 poseduje opcioni MPU (memory protection unit) koji obezbeđuje kontrolu pristupa privilegovanog i neprivilegovanog softvera određenim regionima u memoriji. �Ovo na primer obezbeđuje da RTOS ima a korisnički softver nema pristup nekim zonama u memoriji. �MPU je takođe karakterističan za high-end mikrokontrolere �Cortex-M 3 je Hardvard arhitekture što znači da ima odvojen port za pristup code memoriji i sram memoriji. . .
Instrukcijski set
Cortex-M 0 � Nastao nekoliko godina nakon Cortex-M 3. � Zauzima znatno manje prostora (12 -25 k gejtova). � Ima znatno manji broj instrukcija, i zato je i jeftiniji i znatno manje troši. � Crtex-M 3 zauzima 33 -50 kgejtova, Cortex-M 4 zauzima 65 -90 k gejtova. � Sa druge strane ko nauči da radi sa Cortex-M 3 programiranje je praktično jednako sa stanovišta viših programskih jezika. � Von Neuman arhitektura, sa trostepenim pipeline-om kao i Cortex-M 3. � Zbog manjeg instrukcijskog seta postiže 0. 84 DMIPS/MHz. � Ima identičan NVIC ali sa 32 linije. � Ima identičan Systick tajmer. � Debug je slabiji. DWT ne podržava data trace, ITM ne postoji, ali je moguće pratiti memoriju on the fly. Ipak bolje nego JTAG kod ARM 7 i ARM 9.
Cortex-M 0 low power �U aktivnom režimu troši kao tipičan u. C ali je znazno brži �Primer za 16 x 16 množenje: Cortex-M 0 ovo radi u 1 ckulusu. Tipičan 8 -bitni u. C kao 8051 ovo radi za 48 ciklusa a tipičan 16 -bitni u. C za 8 ciklusa.
16 x 16 množenje
Kako proizvođači prave Low Power �WIC je definisan ali se može izmestiti u drugi deo čipa. �Tako se proizvođačima daje prostor za kreativnost.
Cortex-M 4 �Upgrade u odnosu na M 3 prvenstveno dodavanje DSP instrukcija u formi SIMD instrukcija.
Cortex-M 4 �Mnoge aritmetičke instrukcije su unapređene tako da su jednociklusne:
SIMD instrukcije �Na primer jednom instruckijom napravim dva 16 bitna množenja i saberem te rezultate u 64 -bitnu sumu.
FPU �Na non-FPU mikrokontrolerima matematičke operacije sa pokretnom tačkom su bile implementirane kompajlerskim bibliotekama sa stotinama instrukcija i taktova. . . �FPU je prava aritmetiča jedinica koja transakcije sa memorijom obavlja direktno kao i ALU.
DSP �Cortex-M 4 poseduje instrukcije koje omogućavaju optimizovano izvršavanje tipičnih DSP funkcija kao što su IIR, FFT itd. . . �Podršku daje sam ARM preko optimizovanih intrinsic funkcija i biblioteka za DSP funkcije.
Cortex-M 7 �Cortex-M 7 predstavlja značajan skok u performansama ali i u arhitekturi. �Ne samo da poseduje drugačiju strukturu i širi instrukcijski set, već njegova arhitektura dozvoljava realizacije koje mogu da rade na višim učestanostima.
Cortex-M 7 �To je procesor superskalarne arhitekture, i ima dva trostepena pipeline-a koji mogu da izvršavaju tzv. Dualissue instrukcije. �Poseduje i tzv. Branch Target Address Cache koji omogućava znatno brže skokove, naročito u realizaciji petlji.
Magistrale �ARM 7 je prvi uveo AHB (Advanced High-Performance bus) magistralu. �Cortex-M je najpre uveo AHB matrix, što ustvari predstavlja matricu više paralelnih AHB magistrala i time je omogućeno da više mastera koristi magistralu u paraleli. Arbitracija je potrebna jedino kada dva mastera pristupaju istoj memorijskoj zoni ili periferijama. �Cortex-M 7 uvodi novu magistralu Advanced Extensible Interface (AXI-M). To je 64 -bitna magistrala koja omogućava razvoj No. C (network on Chip) sistema sa više procesora.
Cortex-M 4 vs M 7 �Glavna razlika koju oseća programer je organizacija memorije. �Cortex-M 7 ima hijerarhijski organizovanu memoriju. �Pre svega CPU poseduje dve tzv. Instruction and Data Tightly Coupled Memories (I-TCM i D-TCM), veličine do 16 k bez stanja čekanja. �Pored toga CPU može da alocira još dve Cache memorije veličine 64 k bilo gde na AXI magisatrali.
Cortex-M familija - presek
Instrukcijski set �Cortex-i su RISC arhitekture što znači da imaju mali broj instrukcija. �M 0 ima 56 instrukcija, M 3 ima 74 instrukcije, M 4 ima 137 instrukcija sa 32 dodatne intrukcije ako se koristi FPU. �Svi Cortex-i koriste Thumb-2 instrukcijski set koji se pametna mešavina 16 -bitnih i 32 -bitnih ARM i THUMB instrukcija.
Neke novine koje donose Cortex-i �Instrukcije sa uslovnim izvršavanjem �Ne postavljaju sve instrukcije flegove
Manipulacija poljima bita
Prenos blokova podataka
Instrukcije za prenos blokova podataka subroutine_1 PUSH {R 0 -R 7, R 12, R 14} ; Save registers. . . ; Do your processing POP {R 0 -R 7, R 12, R 14} ; Restore registers BX R 14 ; Return to calling function � Instrukcije traju više ciklusa, ali zahvaljujući ICI polju u ESPR statusnom registru mogu da budu prekinute izuzetkom ili prekidom.
Tipična arhitektura Cortex-M 3 mikrokontrolera
CPU registri �Registri R 0 -R 15 su dostupni svim LOAD/STORE instrukcijama. �Registri R 0 -R 12 su registri opšte namene i koriste za obradu podataka. �Ostali registri R 13 -R 15 imaju posebne namene. �Registri specijalne namene su dostupni samo instrukcijama Move Register to Special Register (MRS) i Move Special Registers to Register (MSR).
Registri procesora Registri opšte namene: � 13 registara opšte namene, r 0 -r 12 � Pokazivač steka SP (r 13) � Link registra LR (r 14) � Programski brojač PC (r 15) � Registri r 0 -r 7 (niži registri) su dostupni preko svih instrukcija � Registri r 8 -r 12 (viši registri) su dostupni preko svih 32 -bitnih instrukcija. Specijalni registri: � Programski statusni registar x. PSR � Registri za kontrolu prekida PRIMASK, FAULTMASK, BASEPRI � Kontrolni registar CONTROL
Registri procesora Registri opšte namene: Cortex-M 3 je Load/Store arhitektura, što � 13 registara opšte namene, r 0 -r 12 znači da se memoriji pristupa samo preko � Pokazivač steka SP (r 13) Load/Store instrukcija, a sve druge operacije se obavljaju samo nad registrima. � Link registra LR (r 14) � Programski brojač PC (r 15) Zato je bitno da postoji što veći broj � Registri r 0 -r 7 (niži registri) su registara direktno povezanih na CPU. dostupni preko svih instrukcija Prednost: brzina izvršavanja aritmetičko � Registri r 8 -r 12 (viši registri) su logičkih operacija. dostupni preko svih 32 -bitnih Mana: load/store nije sadržan u instrukciji instrukcija. nego mora posebno da se kodira, a to zahteva više kodne memorije. Specijalni registri: � Programski statusni registar x. PSR � Registri za kontrolu prekida PRIMASK, FAULTMASK, BASEPRI � Kontrlni registra CONTROL
SP – Stack pointer � Registar koji se fizički realizuje kao dva 32 -bitna registra. � Main Stack Pointer (MSP) – ovaj registar je podrazumevani registar posle reseta i mogu da ga koriste i korisnički program i prekidne rutine. U slučaju korišćenja operativnog sistema, ovaj registar koriste Kernel i prekidi, kao i neki delovi korisničkih Thread-ova sa posebnim privilegijama. � Process Stack Pointer (PSP) – ovaj registar je namenjen za korišćenje od strane neprivilegovanih delova softvera. Na primer, to su korisnički Thread-ovi u Operativnom sistemu. Može da se koristi samo u Thread modu. � U zavisnosti od odgovarajućeg konfiguracionog bita u CONTROL registru pristupa se jednom ili drugom od ova dva registra. � Jednostavne aplikacije bez OS-a uglavnom korsite samo MSP. � Kod Cortex-M 3 familije stek je realizovan kao Full Descending Stack, što znači da stek raste prema nižim adresama i pokazuje na poslednju zauzetu adresu. Sve PUSH i POP operacije su 32 -bitne. � Najniža dva bita SP-a su uvek jednaka nuli jer se radi samo sa 32 -bitni veličinama. � Nakon reseta inicijalna vrednost MPS-a se hradverski inicijalizuje na vrednost sa početka momorije, a vrednost PSP-a je nedefinisana.
LR – Link Register �LR se koristi za čuvanje adrese povratka iz potprograma - na primer kada je skok izvršen BL (Branch with Link) instrukcijom: �Osim ovoga koristi se i pri povratku iz prekidne rutine.
Statusni registri • Application Program Status Register, APSR – Sadrži flegove koje koristi korisnički neprivilegovani aplikativni softver • Interrupt Program Status Register, IPSR – Sadrži broj izuzetka/prekida koji se trenutno izvršava • Execution Program Status Register, EPSR – Sadrži specijalne flegove koji kontrolišu rad procesora. Na primer biti ICI/IT se koriste za kontrolu prekidanja uslovnih blokova instrukcija i instrukcija koje rade višestruke Load/store operacije (LDM/STM) – “Interrupt Continuable Instruction” (ICI) i “If Then” (IT)
Statusni registri • Application Program Status Register, APSR – Sadrži flegove koje koristi korisnički neprivilegovani aplikativni softver • Interrupt Program Status Register, IPSR – Sadrži broj izuzetka/prekida koji se trenutno izvršava • Execution Program Status Register, EPSR – Sadrži specijalne flegove koji kontrolišu rad procesora. Na primer biti ICI/IT se koriste za kontrolu prekidanja uslovnih blokova instrukcija i instrukcija koje rade višestruke Load/store operacije (LDM/STM) – “Interrupt Continuable Instruction” (ICI) i “If Then” (IT)
Statusni registri • Application Program Status Register, APSR – Sadrži flegove koje koristi korisnički neprivilegovani aplikativni softver • Interrupt Program Status Register, IPSR – Sadrži broj izuzetka/prekida koji se trenutno izvršava • Execution Program Status Register, EPSR – Sadrži specijalne flegove koji kontrolišu rad procesora. Na primer biti ICI/IT se koriste za kontrolu prekidanja uslovnih blokova instrukcija i instrukcija koje rade višestruke Load/store operacije (LDM/STM) – “Interrupt Continuable Instruction” (ICI) i “If Then” (IT)
Uslovno izvršavanje �Korisno je kod implementacije malih petlji u C-u kao na primer: �ITE instrukcija definiše da se prva sledeća instrukcija izvršava ako je uslov ispunjen, a ona iza nje ako uslov nije ispunjen. �Kod se i dalje izvršava sekvencijalno sa FETCH-om svake od instrukcija, ali one koje se ne izvršavaju u EXECUTE fazi se zamenjuju sa NOP instrukcijom. �Dakle, izbegnuti su skokovi.
Kako se gubi pipeline zbog skoka �Šta se gubi prilikom skoka?
Veza uslova i flag-ova
Uslovno izvršavanje � Većini instrukcija može da se postavi dodatni uslov za izvršavanje koji zavisi od Z, N, V, C flag-ova � Ova mogućnost je ograničena samo na instrukcije koje se nalaze u okviru takozvanih IT (If. Then blokova) � Uslovna izvršavanja blokova su prekidiva što se obezbeđuje korišćenjem IT polja u statusnom registru EPSR.
Uslovno izvršavanje � Većini instrukcija može da se postavi dodatni uslov za izvršavanje koji zavisi od Z, N, V, C flag-ova � Ova mogućnost je ograničena samo na Uslov se ispituje pre samog ITx bloka. Naknadne instrukcije koje se uvek proveravaju taj isti uslov , a to se radi preko ZNVC flagnalaze u okviru takozvanih IT (Ifova. Iz tog razloga je potrebno pamtiti vrednost odgovarajućeg Then blokova) flag-a )(ili više njih) ukoliko dodje do prekida. Osim toga, � Uslovna izvršavanja bitno je da instrukcije koje su sastavni deo ITx bloka ne blokova su prekidiva menjaju flag-ove, što se postiže time da te instrukcije nemaju S što se obezbeđuje u mnemoniku! korišćenjem IT polja u statusnom registru EPSR.
Uslovno izvršavanje - primeri Sintaksa ITx instrukcije
Aritmetika sa saturacijom �Q flag je setovan nakon operacije u kojoj se pojavi saturacija. �Ostaje setovan dok se ne izbriše.
Aritmetika sa saturacijom �Q flag je setovan nakon operacije u kojoj se pojavi saturacija. �v. Ostaje setovan dok se ne izbriše. Dakle, kod Cortex-M 3 procesora programer mora eksplicitno da komanduje saturaciju ako je uslov ispunjen.
Saturacija kod M 4 i M 7 �Ovi procesori imaju prošireni instrukcijski set takozvanim DSP instrukcijama i među njima postoje i aritmetičke instrukcije koje inherentno rade sa saturacijom.
Projekat - rokovi �danas-29. 10. - Prikupljanje predloga projekata. �Faza 1 29. 10. - Izveštaj 1. - Idejno rešenje. � 29. 10 -6. 11. – Definisanje spiska potrebnih komponenti. �Faza 2 6. 11. - Izveštaj 2. - Dizajn hardvera na nivou električne šeme, i dostavljanje spiska komponenti. � 6. 11. -20. 11. – Nabavka komponenti. � 20. 11. -11. 12. – Rad na prototipu. �Faza 3 11. 12. - Izveštaj 3. – Prototip hardvera i softvera. Minimalna konfiguracija koja potvrđuje izvodljivost projekta. � 12. -27. 12. 2019. - Finalizacija projekta. �Ispitni rok januar 2020 – Finalni izveštaj.
Projekti �Osnovne smernice: �Projekat treba da uključi korišćenje bar dve različite periferije �Projekat treba da uključi bar dva prekida ili jedan prekid i jedan DMA prenos �Jednostavni projekti koji koriste GPIO, UART i slično se rade na Cortex-M 3 platformi �Kompleksniji projeti koji uključuju obradu signala se rade na Cortex-M 4 platformi �Vrlo kompleksni projekti koji uključuju obradu signala se rade na Cortex-M 7 platformi
Projekti �Dodatne napomene: �Intenzivno koristiti vezu sa računarom preko UART-a. �Spoljašnje displeje koristiti samo ukoliko aplikacija to nesumnjivo zahteva. �Koncentrisati se na korišćenje mikroe-click pločica �Izbegavati GSM i GPS conectivity – već dosta puta rađeno. �Wireless conectivity – koristiti ako se pravi neki kompleksniji sistem. �Interesantno a do sada nije korišćeno: Ethernet, CAN �Upravljanje servo motoričićima – može da bude interesantno
Primer �Senzor - Light. Hz click �Kodira intenzitet svetlosti kao signal promenljive učestanosti. �Izlaz može da bude LED dioda koja simulira osvetljenje prostorije. �Preko ili potenciometra se zadaje intenzitet svetlosti koji treba obezbediti.
Primer �Grid-EYE click



























































