Cortex vs Arm7

Tu bo govora o vseh mogočih mikrokontrolerjih ne glede na tip ali zgradbo

Moderator: tilz0R

Cortex vs Arm7

OdgovorNapisal/-a VolkD » 03 Dec 2017, 14:03

s54mtb je napisal/-a: Res pa, da na cortex-u in ne na dinozaverskem ARM7, navkljub vsej čistosti jedra.

Imeli smo 8bit uC, pa tudi 16-bitnike, konec koncev tudi že 32-bitne mikronontorlerje. Kljub temu je ARM7, vsaj meni se je tako zdelo, prišel z res velikim pompom. Dim se še vedno da videti in vohati. Potem je prišel Cortex in to v nekaj inačicah. Pompa je nekaj bilo, a neprimerljivo manj kot prej ARM7.
Verjamem, da je še kup ljudi, ki vse skupaj trpa v isti koš na katerem je napis ARM, več od tega pa ...

Mislim, da bi bilo prav, da znalci tu v tej temi razložijo razlike, prednosti in slabosti tako enega kot drugega.
Dokler bodo ljudje mislili, da živali ne čutijo bolečine, bodo živali čutile, da ljudje ne mislijowww.S5tech.net
Uporabniški avatar
VolkD
Administratorji strani
 
Prispevkov: 21634
Pridružen: 29 Dec 2014, 19:49
Kraj: Kačiče (Divača)
Zahvalil se je: 3932 krat
Prejel zahvalo: 3039 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 255

Re: Cortex vs Arm7

OdgovorNapisal/-a s54mtb » 03 Dec 2017, 15:33

Za zacetek je dobro zlezti izza lastnih plank in pogledati naokoli. "Pomp" na lastnem dvoriscu ponavadi ni enak kot po svetu naokoli. :D

Cortex obstaja v vec druzinah, ki so namenjene razlicnim potrebam. A je v telefonih in tablicah, M je v malih mlinckih, ki so primernejsi za hobi lotanje. M je potem glede na bogatost funkcionalnosti se M0, pa M0+, M3, M4, M7, pri 3 in 4 pa imas se "F" z matematicnim koprocesiranjem. Nazadne se je pojavil se M23... Kaj izbrati? Odvisno od aplikacije. Najvecji car pa je, da ce je koda pisana po dogovorjenih pravilih (cmsis) jo lahko uporabis na vsakem. Kaj vec lahko napise Tilen, ki ima od vseh nas se najvec izkusenj s prenosljivostjo.

Predlagam, da spomladi obisces sejem embedded :)
s54mtb
 
Prispevkov: 6862
Pridružen: 15 Jan 2015, 00:10
Zahvalil se je: 898 krat
Prejel zahvalo: 2194 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 32

Re: Cortex vs Arm7

OdgovorNapisal/-a VolkD » 03 Dec 2017, 16:23

s54mtb je napisal/-a:Predlagam, da spomladi obisces sejem embedded :)
Hmmm €€€. Me vzameš s seboj ?

Sicer pa sem tole napisal, ker sem tudi sam dobil kar nekaj vprašanj, pa nanje nisem niti približno vedel odgovora.
Dokler bodo ljudje mislili, da živali ne čutijo bolečine, bodo živali čutile, da ljudje ne mislijowww.S5tech.net
Uporabniški avatar
VolkD
Administratorji strani
 
Prispevkov: 21634
Pridružen: 29 Dec 2014, 19:49
Kraj: Kačiče (Divača)
Zahvalil se je: 3932 krat
Prejel zahvalo: 3039 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 255

Re: Cortex vs Arm7

OdgovorNapisal/-a tilz0R » 03 Dec 2017, 17:53

s54mtb je napisal/-a:...pri 3 in 4 pa imas se "F" z matematicnim koprocesiranjem. Nazadne se je pojavil se M23... Kaj izbrati? Odvisno od aplikacije.


Tukaj bi te popravil, opcijsko podporo za FPU (in DSP) imata CM4 in CM7, pri tem ima CM7 opcijsko Double-Floating point.

s54mtb je napisal/-a:Najvecji car pa je, da ce je koda pisana po dogovorjenih pravilih (cmsis) jo lahko uporabis na vsakem. Kaj vec lahko napise Tilen, ki ima od vseh nas se najvec izkusenj s prenosljivostjo.


Absolutno se strinjam, da uporaba CMSIS standarda olajša migracijo med Cortex družinami (znotraj enega vendorja). CMSIS tudi targetira migracije med vendorji, kar pa se izkaže za ne najbolj uporabno.
Cortex-M so dovolj zmogljivi, da lahko kodo pišemo "po layerjih", ter tako ločimo application layer od HW layerja, a še vedno so tu vendor-specifike, ki bodo otežile porting med vendorji.

Če smo že pri Mx3, ni nekega napredka, omogoča Trustzone, core je iz stališča silicija ogromen. Targetira IoT aplikacije, kar je danes itak najbolj opevana tema.

s54mtb je napisal/-a:Predlagam, da spomladi obisces sejem embedded :)

Če bo kdo gor, mi lahko sporoči. Jaz bom zagotovo. Vabljeni na ST booth.
"Words come easy, when they're true!"
Robbie Williams, Gary Barlow
Moj nickname je tilz[NULA]R.
Uporabniški avatar
tilz0R
 
Prispevkov: 1108
Pridružen: 17 Jan 2015, 23:12
Kraj: Črnomelj
Zahvalil se je: 159 krat
Prejel zahvalo: 272 krat
Uporabnika povabil: s56rga
Število neizkoriščenih povabil: 255

Re: Cortex vs Arm7

OdgovorNapisal/-a mucek » 03 Dec 2017, 18:54

Jaz tudi ;)
... lahko pa se tudi motim ...
Uporabniški avatar
mucek
 
Prispevkov: 1205
Pridružen: 18 Jan 2015, 20:20
Kraj: Ljubljana
Zahvalil se je: 42 krat
Prejel zahvalo: 330 krat
Uporabnika povabil: s54mtb
Število neizkoriščenih povabil: 60

Re: Cortex vs Arm7

OdgovorNapisal/-a s54mtb » 03 Dec 2017, 18:56

Detajl, da je fpu le v 4 in 7 sem pozabil zapisat. Naj omenim, da se v praksi upkraba fpu izkaze tam, kjer je veliko racunanja. Od preprostih operacij naj omenim fft. Primerjal sem porabo energije za preracun fft s klaskcnim arm7 in cortex m4f, oboje s single floati. Kljub vecji peak porabi je seveda "zmaga" na strani fpu, saj je hitrost neprimerljiva.

Za omeniti je se, da je tehnologija izdelave novejsih cortexov manjsa od arm7, kar pomeni manjse in cenejse chipe. C.M0+ so v cenovnem rangu najcnejsih avr in pic. Od arm7 pa so sploh cenejsi za nekaj faktorjev, saj afm7 zasede enostavno prevec silicija, da bi bil cenovno ugodnejsi: manjsi chip, vec na rezino, nizja cena.
s54mtb
 
Prispevkov: 6862
Pridružen: 15 Jan 2015, 00:10
Zahvalil se je: 898 krat
Prejel zahvalo: 2194 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 32

Re: Cortex vs Arm7

OdgovorNapisal/-a VolkD » 03 Dec 2017, 20:11

Eno od vprašanj, kjer mi je zmanjkalo besed.

Koliko je cortex podoben/drugačen kar se jedra tiče glede na ARM ?
Dokler bodo ljudje mislili, da živali ne čutijo bolečine, bodo živali čutile, da ljudje ne mislijowww.S5tech.net
Uporabniški avatar
VolkD
Administratorji strani
 
Prispevkov: 21634
Pridružen: 29 Dec 2014, 19:49
Kraj: Kačiče (Divača)
Zahvalil se je: 3932 krat
Prejel zahvalo: 3039 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 255

Re: Cortex vs Arm7

OdgovorNapisal/-a s54mtb » 03 Dec 2017, 21:53

ARM7, 9 in 11 so deloma osnova sodobnih cortexov (npr. M3), deloma pa so bili cortexi narejeni na novo (M0). Konec koncev je osnovni nabor ukazov enak, tudi osnovni princip delovanja je enak. Se je pa vse skupaj posodobilo, dodalo nekaj stvari, ki koristijo sodobnemu razvoju softvera, pa odvzelo nekaj, kar je bila cokla iz preteklosti (kar sicer nekateri izkoriščajo na svoj način, je pa problem, ker ni portabilno v nove generacije). Ena glavnih razlik, ki je pomembna v real-time aplikacijah je drugačen mehanizem prekinitev. V cortexih za to skrbi NVIC, ki je del jedra in pokrova vse prekinitve. ISR je tako na nivoju kode povsem enak kot katerakoli druga funkcija. Vektorska tabela niso skoki na ISR, ampak kar naslovi ISR, ker NVIC poskrbi, da se prične izvajati pravi ISR po zahtevani prioriteti. To skrajša latenco in omogoči deterministično izvajanje. Predvidevam, da je to eden glavnih problemov pri prehodu iz asemblersko pisanih ARM7 na Cortex. Čeprav nizko latenco in vnaprej znan čas do prve inštrukcije v ISR je ravno nekaj, kar je dobrodošlo pri pisanju raznih komunikacijskih aplikacij.

Sam nabor ukazov je odvisen od familije cortex-ov (M0 do M7):
POI6IgJ.png

[im.g]https://i.imgur.com/POI6IgJ.png[/img]

Cortex-M0/M0+/M1 imajo 16-bitne ukaze, registri in argumenti pa so 32 bitni. Omejitev pri teh je tudi omejen dostop do višjih registrov (R8 do R12). Za implementacijo rabijo nekje ekvivalent 12k vrat. Na račun omejitev je prednost manjša poraba.

Še najbližji ARM7 so Cortex-M3. Ti vsaj po mojih izkušnjah tudi počasi izumirajo (npr. STM32F1). Od M0/M0+/M1 imajo več: deljenje, MAC in "bogatejše" ukaze za manipulacijo bitov. Jedro je cca. 2x večje od M0.

Cortex-M4 je podoben M3, le da ima močnejšo aritmetiko, single cycle MAC, vpis rezultata v register znotraj istega cikla itd....

M7 je še nadgradnja M4. Oba pa imata lahko še harversko matematiko. M4 ima single, M7 pa double floate. Aritmetika s floati se tako izvaja v hardveru.


Eden od uporabnih dodatkov je systick timer. Za implenetacijo npr. RTOS-a tako ni potrebno žrtvovati enega od perifernih timerjev, ampak uporabimo kar tega.

Tudi na strani debugiranja je prednost SWD namesto JTAG (čeprav ta ostaja), saj SWD zahteva le dva pina. Dodan je DWT, ki omogoča trace (na M3 in višje) tudi preko SWD. Polni trace je seveda možen kot prej preko ETM.

Razlik je še polno. Prilagam en kratek, skoncentriran dokument, kjer je hiter pregled in delna primerjava cortex jeder s klasičnimi armi.
Priponke
White Paper - Cortex-M for Beginners - 2016 (final v3).pdf
(1.01 MiB) Prenešeno 11 krat
s54mtb
 
Prispevkov: 6862
Pridružen: 15 Jan 2015, 00:10
Zahvalil se je: 898 krat
Prejel zahvalo: 2194 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 32

Re: Cortex vs Arm7

OdgovorNapisal/-a VolkD » 03 Dec 2017, 22:04

Ali mogoče k temu kdo pozna zgodbo, ki bi povedala kaj je med M4 in M7 ? Zakaj ne gre po vrsti ?
Dokler bodo ljudje mislili, da živali ne čutijo bolečine, bodo živali čutile, da ljudje ne mislijowww.S5tech.net
Uporabniški avatar
VolkD
Administratorji strani
 
Prispevkov: 21634
Pridružen: 29 Dec 2014, 19:49
Kraj: Kačiče (Divača)
Zahvalil se je: 3932 krat
Prejel zahvalo: 3039 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 255

Re: Cortex vs Arm7

OdgovorNapisal/-a s54mtb » 03 Dec 2017, 22:23

M2 je le softcore.
s54mtb
 
Prispevkov: 6862
Pridružen: 15 Jan 2015, 00:10
Zahvalil se je: 898 krat
Prejel zahvalo: 2194 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 32

Re: Cortex vs Arm7

OdgovorNapisal/-a VolkD » 03 Dec 2017, 22:30

s54mtb je napisal/-a:M2 je le softcore.
??
Kaj je softcore ?

Bom poskušal ugibat in verjetno se bom osmešil,... ime nakazuje na to, da je M2 bil narejen le virtualno in so bile izvedene simulacije, dela pa se ga ne in se ga verjetno nikoli ni. Kot tak je mogoče primeren za fpga ?

Koliko sem ustrelil mimo ?
Dokler bodo ljudje mislili, da živali ne čutijo bolečine, bodo živali čutile, da ljudje ne mislijowww.S5tech.net
Uporabniški avatar
VolkD
Administratorji strani
 
Prispevkov: 21634
Pridružen: 29 Dec 2014, 19:49
Kraj: Kačiče (Divača)
Zahvalil se je: 3932 krat
Prejel zahvalo: 3039 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 255

Re: Cortex vs Arm7

OdgovorNapisal/-a tilz0R » 03 Dec 2017, 22:42

Malokdo ve, da CM1 sploh obstaja, namenjen za FPGA kot dodatek.

s54mtb je super opisal ostalo.

Drugače pa CM4 vs CM7:

CM7 ima 6-stage pipeline
CM7 ima double floating point opcijski support
CM7 ima branch prediction
CM7 ima 64-bitni AXI bus za opcijsko hkratno pridobitev inštrukcij in podatkov.

CM7 performance je približno 1.6x boljša od CM4. Torej če bi CM7 delal pri 10MHz, bi moral CM4 delati pri 16MHz za isti efekt.

Vsi cortexi imajo pa super NVIC, ki podpira 3 načine handlanja interruptov:

Preemption: Če se en interrupt izvaja, ga lahko drugi prekine (Preemption priority je višji)

Tail chaining: Če se en interrupt že izvaja (handler se izvaja), potem bo naslednji interrupt čakal, da se prvi izvede (če je preemption isti). Medtem, ko se bo prvi zaključil in naslednji začel izvajat, CPU ne bo naredil pop registrov ampak bo obdržal tiste, ki so bili preden se je prvi interrupt začel izvajat

Late arrival: Če je CPU začel začetno fazo za interrupt (push registrov) in medted prileti drugi interrupt, ki ima isti preemption priority ampak višji subpriority, se bo drugi začel izvajati namesto prvega.
Priponke
interrupts.PNG
Številke na sliki pomenijo število ciklov za operacijo. Slika prikazuje Cortex-M0+, vendar je pri vseh Cortex-M koncept isti.
"Words come easy, when they're true!"
Robbie Williams, Gary Barlow
Moj nickname je tilz[NULA]R.
Uporabniški avatar
tilz0R
 
Prispevkov: 1108
Pridružen: 17 Jan 2015, 23:12
Kraj: Črnomelj
Zahvalil se je: 159 krat
Prejel zahvalo: 272 krat
Uporabnika povabil: s56rga
Število neizkoriščenih povabil: 255

Re: Cortex vs Arm7

OdgovorNapisal/-a TilenS » 03 Dec 2017, 23:44

To da je recimo M7 1.6x hitrejši od M4 je zelo zelo odvisno od sistema oz. bolje rečeno razporeditve asm kode.

Če se koda izvaja lepo po vrsti potem bo seveda imelo prednost jedro katero lahko izvaja več vzporednih inštrukcij na enkrat ampak samo v primeru, če so inštrukcije res lepo po vrsti. Več "cevi" seveda pomeni v idealnih pogojih toliko več inštrukcij na cikel ampak v primeru, da pa je treba pipeline izprazniti se pa ta prednost spremeni v velik latency proti še tako enostavnemu jedru z samo eno "inštrukcijo na cikel". Vem da imajo te zadeve branch predictor-je ampak še vseeno to samo predvideva naslednji skok in ni 100%, da tako dejansko tudi bo ko se zadeva izvede. Tako da ni vse tako enostavno za primerjavo.

Dejansko me res zanima kakšne so "pohitritve" recimo med M4 in M7 (na primer, lahko tudi drugi jedra) v praksi z neko običajno kodo prevedeno z recimo keil/ARM prevajalnikom. Predvidevam, da Keil naredi, kar se da dobro ASM kodo iz naše C kode, ki je bolj kot ne pisana tako, da jo lažje beremo mi in ne procesor. Ampak nisem pa tega nikoli kaj pretirano veliko preverjal, večinoma iz razloga, da mi zdaj to več ni treba. Pri 8051 sem redno preverjal ASM kodo in tam pisal tudi nižje nivojske driverje ampak zdaj pri ARM/Cortex niti ne gledam tega več, večinoma iz razloga, da tudi če nimam optimalne kode, še vseeno vse funkcije, ISR-je,.. izvedem tako hitro, da neka optimizacija na nivoju ASM nima ravno nekega smisla.

Me pa vseeno zanima kakšna je dejanska razlika in kako dobri so današnji prevajalniki za te nove multi pipeline procesorčke in koliko jih dejansko izkoristijo pri neki običajni "ne optimizirani" C kodi.
TilenS
 
Prispevkov: 258
Pridružen: 04 Feb 2015, 23:40
Zahvalil se je: 0 krat
Prejel zahvalo: 39 krat
Uporabnika povabil: DusanK
Število neizkoriščenih povabil: 7

Re: Cortex vs Arm7

OdgovorNapisal/-a tilz0R » 03 Dec 2017, 23:48

Še ena razlika med CortexM in ARM7 je v tem da je pri CM lahko celoten interrupt vektor navadna C funkcija. Pri prejšnjem si moral prevajalniku povedati, da je uredil push/pop registrov kar tukaj uredi hardware.
"Words come easy, when they're true!"
Robbie Williams, Gary Barlow
Moj nickname je tilz[NULA]R.
Uporabniški avatar
tilz0R
 
Prispevkov: 1108
Pridružen: 17 Jan 2015, 23:12
Kraj: Črnomelj
Zahvalil se je: 159 krat
Prejel zahvalo: 272 krat
Uporabnika povabil: s56rga
Število neizkoriščenih povabil: 255

Re: Cortex vs Arm7

OdgovorNapisal/-a TilenS » 04 Dec 2017, 00:22

To mi je bilo še najbolj čudno od vsega ko sem prešel z 8051 na CM, da mi ni treba več početi tega:

PUSH ACC
PUSH R1
PUSH ...

// kooddaa

POP ACC
POP R1
POP ...

Čeprav mi ni bil ravno problem, še celo malo bolj fancy je izgledala koda z temi ukazi :mrgreen:
TilenS
 
Prispevkov: 258
Pridružen: 04 Feb 2015, 23:40
Zahvalil se je: 0 krat
Prejel zahvalo: 39 krat
Uporabnika povabil: DusanK
Število neizkoriščenih povabil: 7

Re: Cortex vs Arm7

OdgovorNapisal/-a s54mtb » 04 Dec 2017, 00:40

VolkD je napisal/-a:
s54mtb je napisal/-a:M2 je le softcore.
??
Kaj je softcore ?

Bom poskušal ugibat in verjetno se bom osmešil,... ime nakazuje na to, da je M2 bil narejen le virtualno in so bile izvedene simulacije, dela pa se ga ne in se ga verjetno nikoli ni. Kot tak je mogoče primeren za fpga ?

Koliko sem ustrelil mimo ?


Tipkarska napaka. M1 je prav. To je le koda za fpga.
s54mtb
 
Prispevkov: 6862
Pridružen: 15 Jan 2015, 00:10
Zahvalil se je: 898 krat
Prejel zahvalo: 2194 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 32

Re: Cortex vs Arm7

OdgovorNapisal/-a VolkD » 04 Dec 2017, 01:01

TilenS je napisal/-a:To mi je bilo še najbolj čudno od vsega ko sem prešel z 8051 na CM, da mi ni treba več početi tega:

PUSH ACC
PUSH R1
PUSH ...

// kooddaa

POP ACC
POP R1
POP ...

Čeprav mi ni bil ravno problem, še celo malo bolj fancy je izgledala koda z temi ukazi :mrgreen:
hehe,.. za 8051 sem pa tudi jaz marsikaj napisal.
Mimogrede tisti POP-i bi morali biti v obratnem vrstnem redu.
Dokler bodo ljudje mislili, da živali ne čutijo bolečine, bodo živali čutile, da ljudje ne mislijowww.S5tech.net
Uporabniški avatar
VolkD
Administratorji strani
 
Prispevkov: 21634
Pridružen: 29 Dec 2014, 19:49
Kraj: Kačiče (Divača)
Zahvalil se je: 3932 krat
Prejel zahvalo: 3039 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 255

Re: Cortex vs Arm7

OdgovorNapisal/-a Kroko » 04 Dec 2017, 07:45

Cortexi podpirajo tudi razne "sleep" načine. Veliko raznih baterijskih aplikacij zadnje čase je možnih prav zaradi tega.
http://www.planet-cnc.comKroko was here!
Uporabniški avatar
Kroko
 
Prispevkov: 3448
Pridružen: 14 Jan 2015, 11:12
Kraj: Ljubljana
Zahvalil se je: 593 krat
Prejel zahvalo: 1128 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 205

Re: Cortex vs Arm7

OdgovorNapisal/-a borisz » 04 Dec 2017, 08:29

M7 je zato tako hiter, ker lahko izvaja po dva ukaza istočasno.
Tilzor,se vidimo na Embedded.
It's never too late to have a happy childhood.
Uporabniški avatar
borisz
 
Prispevkov: 2309
Pridružen: 18 Jan 2015, 12:05
Zahvalil se je: 511 krat
Prejel zahvalo: 571 krat
Uporabnika povabil: Marholt
Število neizkoriščenih povabil: 109


Vrni se na Hardware

Kdo je na strani

Po forumu brska: 0 registriranih uporabnikov in 1 gost