ݺߣ

ݺߣShare a Scribd company logo
8 / 32 bitni procesori
Tehničko veleučilište u Zagrebu
Elektrotehnič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
● http://www.mouser.com/Semiconductors/Embe
dded-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-p
– http://web.media.mit.edu/~stefanm/yano/picc_Math
32.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_LOW
pri 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

More Related Content

[ERRO] Predavanje: 8 i 32 bitni mikroupravljači/mikroprocesori 15.12.2016

  • 1. 8 / 32 bitni procesori Tehničko veleučilište u Zagrebu Elektrotehnički odjel Stipe Predanić 8.12.2016 Elektronička računala i računalna oprema
  • 2. 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)
  • 3. Tablica skinuta s: http://www.atmel.com/Images/45107A-Choosing-a-MCU-Fredriksen_Article_103114.pdf
  • 4. 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
  • 5. 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)
  • 6. 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)
  • 7. 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
  • 9. 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) ?
  • 10. 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
  • 11. 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-p – http://web.media.mit.edu/~stefanm/yano/picc_Math 32.html
  • 12. 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
  • 13. 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
  • 14. 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
  • 15. Performanse - atomarnost Primjer: x=255; 00000000 11111111 x_HIGH x_LOW pri 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
  • 16. 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/
  • 17. 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
  • 18. 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
  • 19. 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
  • 20. 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
  • 21. 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
  • 22. 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/
  • 23. 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).
  • 24. 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)
  • 25. 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
  • 26. 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