Upload
stipe-predanic
View
115
Download
9
Embed Size (px)
Citation preview
8 / 32 bitni procesori
Tehničko veleučilište u ZagrebuElektrotehnički odjel
Stipe Predanić8.12.2016
Elektronička računala i računalna oprema
8 ili 32 bitni procesor?
● Često pitanje koje inženjer mora riješiti prije izrade samog sklopa– Iako se na kraju često svede na upoznatost inženjera s nekom platformom
● Potrebno je obratiti pozornost na:– Cijenu samog mikrokontrolera ali i popratnih hardverskih elemenata
(važan je konačni BOM)
– Potrebne performanse obrade (MIPS, rad s većim cijelim i necijelim brojevima)
– Dodatna periferija (AD pretvarači, Ethernet i CAN primopredajnici itd)
Tablica skinuta s: http://www.atmel.com/Images/45107A-Choosing-a-MCU-Fredriksen_Article_103114.pdf
Novac
● Cijena samog 32 bitnog mikrokontrolera je 20-50% veća od cijene 8 bitnog mikrokontrolera sličnih karakteristika (vanjska brzina takta, broj i tip perifernih jedinica)– Ali radi se cijenama od 2-3US$.
● "Jači" 32 bitni mikrokontroleri cijenom prelaze i preko 10US$, ali su dobro opremljeni dodanim perifernim elementima
Novac
● 32 bitni mikrokontroleri (u većini slučajeva) zahtjevaju više dodatnih elemenata za minimalan rad– Cijena tih dodatnih elementata povisuje ukupni Bill
of material (BOM)
Novac
● Razvoj na 32 bitnim mikroupravljačima je teži zbog njihove opremeljenosti perifernim elementima– Svaki element ima svoje kontrolne registre, te je potrebno pozorno
pratiti dokumentaciju● Tipičan 8 bitni mikrokontroler tvrtke Microchip ili AVR ima dokumentaciju od
200-500 stranica● Tipična dokumentacija za ARM mikroupravljače je 400 – 1000 stranica
– Ako tvrtka već nema prije kupljenu softversku i hardverski podršku (compiler i nekakav IDE, razvojne pločice), cijena se uvećava i za ovu komponentu u R&D (research and development)
Novac
● http://www.keil.com/arm/mdk.asp– http://www.tagor.rs/files/cenovnici/Keil_pricelist_USD_2012.pdf
● http://www.embeddedartists.com/products/kits– http://www.skriptarnica.hr/opis.aspx?
proizvodID=7PMOD001
● https://www.pjrc.com/teensy/● http://www.ebay.com/sch/i.html?
_from=R40%7CR40&_sacat=0&_nkw=STM32+ARM+Cortex-+M3&_sop=15
Novac
● http://www.atmel.com/products/microcontrollers/avr/default.aspx
● http://www.mouser.com/Semiconductors/Embedded-Processors-Controllers/Microcontrollers-MCU/_/N-a85i8?P=1z0w8ej
Performanse
● 8 bitni mikroupravljači imaju 8 bitni ALU (arithmetic logic unit, odnosno aritmetičko logičku jedinicu)– u jednom programskom ciklusu (jedan ili više
strojnih ciklusa) može obraditi dva 8 bitna podatka
● 32 bitni mikroupravljači imaju 32 bitni ALU
● Koliko je velik int (programski jezik C) ?
Performanse
● 8 bitni int = 0 – 255 ili -128 – +127● 16 bitni int = 0 – 65,535 ili -32,768 – +32,768● 32 bitni int = 0 – 4,294,967,295 ili −2,147,483,648
– +2,147,483,647
● Kako 8 bitni ALU radi s 16 ili 32 bitnim brojevima?– U koracima, izračuna se dio po dio
Performanse
● ALU s manje bitova može izračunati i brojeve koji imaju više bitova, ali mu za to treba nekoliko strojnih instrukcija (pa time i strojnih ciklusa)– Primjeri:
http://www.piclist.com/techref/microchip/math/32bmath-ph.htm
– http://web.media.mit.edu/~stefanm/yano/picc_Math32.html
Performanse
● 32 bitni ALU omogućuje direktan rad s 32 bitnim brojevima u jednom programskom ciklusu– U odnosu na 8 bitni mikrokontroler (skoro) za red
veličine brže
Performanse
● Atomarna naredba– izvršavanje jedne akcije u jednoj naredbi (i onda u
jednom ili više strojnih ciklusa)
● računanje s 16 ili 32 bitnim varijablama u 8-bitnom mikroupravljaču koji koristi i prekide (interrupte) može dovesti do krivih rezultata
Performanse - atomarnost
main (psudokod):
short x; // 16 bit
x++;
ALU će x++ obaviti kao:
x_LOW ++
preljev + x_HIGH
ISR (psudokod):
x=7;
interrupt se može izvesti točno između ove dvije naredbe
Performanse - atomarnost
Primjer: x=255;
00000000 11111111
x_HIGH x_LOWpri uvećavanju x_LOW dogodit će se preljev te će x_LOW postati 0 (odnosno 00000000 ).
Očekivano ponašanje je da x_HIGH postane 1 u idućoj naredbi, jer se zbroji s preljevom).
No ako se pokrene prekid (interrupt) točno između te dvije naredbe, on će postaviti vrijednost x_LOW na 00000111, a x_HIGH na 00000000
Po izlasku iz interrupta uvećat će se x_HIGH (zbog preljeva koji je izračunat prije prekida) i kao rezultat dobivamo
00000001 00000111 => 263 x_HIGH x_LOW
Performanse
● 32 bitni mikrokontroleri rade na kraćem strojnom taktu (viša frekvencija oscilatora), jedna instrukcija traje kraće, u odnosu na 8 bitne mikrokontrolere– Npr. ARM Cortex M0, M3 i M4 često rade na 48, 72
ili 96 MHz● https://developer.mbed.org/platforms/
Performanse
● 8 bitni mikrokontroleri su često ograničeni s dodatnom periferijom, te se neke stvari odrađuju kroz programski kod– Dodatna periferija koju 32 bitni mikrokontroleri
donosi daje hardversku podršku za mnoge protokole, a što daje veću brzinu rada ili neovisnost rada periferne jedinice na sam CPU mikrokontrolera
Performanse
● Rad s necijelim brojevima– 8 bitni mikroupravljači uobičajeno nemaju podršku za
necijele brojeve (float)● Softverska emulacija necijelih brojeva je spora i nepraktična
– Bolji 32 bitni mikroupravljači imaju FPU (floating point unit) koji hardverski obrađuju necijele brojeve
● Ako se i obrađuje softverski, 32 bitni IEEE754 float (standardni C float) se lako obrađuje u samo par strojnih instrukcija
Performanse
● Kako bi se izbjegao problem s "nepreciznosti" float brojeva te ubrzao rad, na mikroupravljačima se često koristi metoda cjelobrojne aritmetike (fixed point arithmetic)– Ideja je da se necijeli brojevi pišu u cjelobrojnom obliku a podrazumjeva se
neki odnos prema jediničnoj vrijednosti● Npr. Vrijednost 1 u cjelobrojnoj aritmetici je stvarnih 0.01 (odnos 1/100)
– Tada je 123 zapravo 1.23, a 588 = 5.88– Problem su greške daljnjih međurezultata koji bi dali više decimala: npr. 1.23 * 5.87 = 7.2324, ali
123*588 daju 72324 koji se sreže na 723 (jer se odnos multiplicira) te se gubi 1/4 cijele vrijednosti.
● http://www.i-programmer.info/news/149-security/8548-reboot-your-dreamliner-every-248-days-to-avoid-integer-overflow.html
Performanse● Zbog svoje interne kompleksnosti, neke stvari
na 32 bitnom mikrokontroleru traju "dulje" (u broju ciklusa) u odnosu na 8 bitne
Tablica skinuta s: http://www.atmel.com/Images/45107A-Choosing-a-MCU-Fredriksen_Article_103114.pdf
Performanse● Zbog povećanih performansi 32 bitni
mikroupravljači uobičajeno koriste ukupno više električne energije, ali su efikasniji gledajući prema brzini obrade
Tablica skinuta s: http://www.atmel.com/Images/45107A-Choosing-a-MCU-Fredriksen_Article_103114.pdf
Performanse
● Zbog veće brzine rada i obrade, 32 bitni mikroupravljači mogu imati i primitivne real-time operacijske sustave koji se brinu za paralelan rad više "aplikacija" u sustavu
● http://www.keil.com/rtos/● Pogledati prijašnje predavanje
– Neke od ideja se mogu iskoristiti i u 8 bitnim mikroupravljačima, ali često nema dovoljno slobodnog vremena za "punokrvni" sustav
● http://www.chibios.org/
Dodatna periferija
● Mnogi dodatni hardverski elementi olakšavaju komunikaciju mikroupravljača s vanjskim svijetom– 8 bitni ostaju na razini USB, I2C, SPI, CAN te jednostavna AD
konverzija● Danas se rad i na podršci za bežične tehnologije
– 32 bitni ulaze u područje Etherneta (puni TCP/IP protokolni stog), LCD driver, bežične tehnologije, kvalitetniji DAC, a standardne elemente multipliciraju na više parova nožica (npr. Višestruka podrška za I2C ili USB).
8 ili 32 bitni procesor?
● 8 bitni - za jednostavne baterijski upravljane sklopove koji većinu vremena spavaju (npr. očitavanje senzora i djelovanje po tome i potom nastavak "spavanja)
● 32 bitni – za složenije sklopove koji moraju obavljati puno izračuna i baratati s duljim nizovima bitova (npr. 32 bitna IP adresa)
32 bitni ili 64 bitni procesor?
● Unazad 10 godina dolaze jeftina mala "računala"– Set top box
– Tablet
– Smartphone
● Upotreba potpunih miniračunala u embedded svijetu je zapravo uobičajena, ali se nije toliko potenciralo kao u zadnjih nekoliko godina
32 bitni ili 64 bitni procesor?
● Za nisku cijenu su dostupna ARM računala s mikroprocesorima (sklopovski dodani RAM, ROM i ostali nužni elementi) koji imaju otvorene neke pinove za komunikaciju s vanjskim svijetom– Regularna, jača
● Raspberry Pi● Orange Pi, Banana Pi● BeagleBone
– Manja, slabija● Rapberry Pi Zero● CHIP
https://www.kickstarter.com/projects/1598272670/chip-the-worlds-first-9-computer