Sari la conținut
ELFORUM - Forumul electronistilor

Are AVR avantaje reale fata de noile 8051 de mare viteza?


simplex

Postări Recomandate

Au oare AVR-urile pe 8 biti avantaje reale fata de uC-urile 8051 ultrarapide care executa instructiunile in 1 - 2 tacti spre deosebire de 12 - 48 cit avea nevoie un 8051 clasic?

 

Citind despre uC-ul AT89LP de la Atmel:

http://atmel.com/dyn/resources/prod_doc ... oc4088.pdf

si variante echivalente facute de Silicon Labs

http://www.silabs.com/products/mcu/Page ... oller.aspx

am inceput sa-mi pun intrebarea daca intr-adevar AVR-urile pe 8 biti mai renteaza sa fie invatate de catre cineva care are experienta cu procesoarele 8051 clasice.

 

Atita vreme cit 8051 high speed si AVR-ul efectueaza instructiunile de asamblare tot in 1 - 2 tacti inseamna ca merg la fel de repede pentru aceeasi frecventa a ceasului.

 

Cineva avind experienta directa cu AVR-uri cit si cu 8051 high speed ar putea face o comparatie obiectiva. Ar fi interesant de ascultat o asemenea opinie izvorita din experienta personala.

Link spre comentariu
  • Răspunsuri 25
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

  • simplex

    14

  • one

    4

  • nr4

    2

  • picolo

    2

Top autori în acest subiect

Au oare AVR-urile pe 8 biti avantaje reale fata de uC-urile 8051 ultrarapide care executa instructiunile in 1 - 2 tacti spre deosebire de 12 - 48 cit avea nevoie un 8051 clasic?

 

Citind despre uC-ul AT89LP de la Atmel:

http://atmel.com/dyn/resources/prod_doc ... oc4088.pdf

si variante echivalente facute de Silicon Labs

http://www.silabs.com/products/mcu/Page ... oller.aspx

am inceput sa-mi pun intrebarea daca intr-adevar AVR-urile pe 8 biti mai renteaza sa fie invatate de catre cineva care are experienta cu procesoarele 8051 clasice.

 

Atita vreme cit 8051 high speed si AVR-ul efectueaza instructiunile de asamblare tot in 1 - 2 tacti inseamna ca merg la fel de repede pentru aceeasi frecventa a ceasului.

 

Cineva avind experienta directa cu AVR-uri cit si cu 8051 high speed ar putea face o comparatie obiectiva. Ar fi interesant de ascultat o asemenea opinie izvorita din experienta personala.

Eu zic sa pui mana si capu sa cititi ceva inainte sa arunci intrebari si link-uri pompoase pe un forum.

Nici mama si nu tasu lu 8051(high) sau AVR nu "efectueaza instructiunile de asamblare".

Link spre comentariu

Eu zic sa pui mana si capu sa cititi ceva inainte sa arunci intrebari si link-uri pompoase pe un forum. Nici mama si nu tasu lu 8051(high) sau AVR nu "efectueaza instructiunile de asamblare".

Mai intii aprofundeaza Limba Romana si apoi revino cu un comentariu inchegat si pertinent.

Daca nu ai nimic de spus, te rog sa nu murdaresti topicul cu frustrari pe care le-ai acumulat pe la alte subiecte.

Link spre comentariu

@simplex, domnul picolo are si el dreptate totusi, desi modul in care isi expune argumentul este unul nepotrivit.Am ceva experienta in spate cu 8051 si din start pot spune ca s-au adus multe imbunatatiri acestei arhitecturi de la aparitia acesteia. Modul X2 este implementat de ceva vreme, la fel si aditia de memorie RAM suplimentara, in functie de producator.Strict din PDF-ul atasat de tine in primul post, am fost placut surprins de faptul ca au adaugat instructiunea MAC si memoria RAM extinsa de 4KB ceea ce deschide noi orizonturi.Cat despre avantaje sau dezavantaje, nu cred ca exista asa ceva. Cand cineva care stie sa programeze un 8051 sau un AVR sau un PIC, nu poate sa faca tranzitia la nevoie de la o arhitectura la alta, inseamna ca mai are de aprofundat.Deci recomandarea mea este sa invatati trio-ul PIC-AVR-8051 si cu siguranta vor exista doar avantaje.

Link spre comentariu

Acest topic este de tipul PIC vs. AVR sau Mercedes vs. BMW sau pe cine iubesti mai mult pe mama sau pe tata.Greu de spus daca AVR sau 8051 ar fi mai bun. Cam ce faci cu unul, faci si cu celalalt.Avantaje reale? Cred ca aceeasi intrebare se poate pune si in ceea ce priveste diverse microcontrollere 8 bit.Pentru mine avantaj real inseamna sa gasesc usor circuitul, sa se programeze simplu, sa coste putin, sa consume putin, sa nu aiba bug-uri, sa fie cat de cat imun la diverse interferente.Evident, pentru cine este deja obisnuit cu un anumit tip de circuit, cea mai usoara cale este de a merge tot pe acea familie dar nu neaparat, cum programarea se face de obicei in C, trecerea se face destul de usor.Pe de alta parte, ceea ce e nou e de obicei mai bun doar pentru o perioada, pana apare altceva nou.Nu insa noutatea este criteriul de alegere a unui microcontroller. Exista pe piata o multitudine de controllere, unele prea performante pentru operatii simple.Noi circuite 8051 au incluse multe periferice: CAN, Ethernet, dar daca nu iti trebuie acestea, atunci arunci banii pe un microcontroller scump. Daca 8051 a fost facut sa mearga pana la 200MHz, atunci si AVR se poate face pana la acea frecventa. Pentru productii mari, cred ca pretul este un element important. Pentru dispozitivele alimentate din baterii, consumul este critic. Este interesant de vazut cum sta 8051 la aceste aspecte. Apoi, de la ce tensiune incep sa functioneze? Sub 2V?AVR sunt produse doar de Atmel, in timp ce pentru 8051 sunt mai multi producatori.Noile 8051 au ISP, dar pe vremea cand am programat eu 89C52 si 89C2051/2/4, a trebuit sa fac un efort ca sa imi construiesc programator, intrucat nu imi permiteam unul gata facut. Pentru porturi, 8051 (la vremea aceea), avea iesiri colector in gol si ca sa folosesti un pin ca intrare, trebuia sa il pui in "1" logic. Sper ca imi amintesc bine. Aceasta era o limitare daca doreai sa ai intrari sau iesiri "source". Trebuie vazut daca la cele noi e diferit.Trecerea la AVR a fost mana cereasca. Cei 32 registri imi permiteau o libertate incredibila in assembler. Aveau watchdog, oscilator intern. Apoi, programatorul simplu (chiar numai 4 rezistente pe portul paralel) era ca un vis devenit realitate.In prezent cred ca cele mai ieftine controllere sunt cele de la ST, deci catre acestea ma orientez.

Link spre comentariu

Mie nu mi s-a parut grea trecerea de la 8051 la AVR, a trebuit doar sa vad diferentele hardware si mnemonicile limbajului de asamblare. In rest, exact cum a zis si One, familia 8051 nu avea ISP si programatoru' era durere, registrii putini si mnemonici mai putine pretul fiind cam acelasi. In rest, fiecare cu ce-l doare, mai am acasa doua AT89C2051 pe care nu stiu daca le voi folosi vreodata.

Link spre comentariu

Inca o data, precizez ca ceea ce ma intereseaza este comparatia (izvorita din experienta personala directa) intre 8051 high speed, care isi executa instructiunile in 1 - 2 tacti, si AVR-uri care tot in 1 - 2 cicli masina termina de efectuat o instructiune.

 

Noile 8051, fie ele high speed sau clasice au periferice (CAN, USB, DAC, RAM, ROM, etc.) comparabile cu ale PIC-urilor si AVR-urilor. Nu din punct de vedere al perifericelor doresc o comparatie ci doar al vitezei de executie a CPU-ului in sine, pentru aceeasi frecventa de tact.

 

La nivelul anului 1997, 8051 era doar microprogramat si in esenta inferior ca viteza de executie unui AVR deoarece fiecare instructiune in limbaj de asamblare 8051 declansa o subrutina microprogramata care se executa in 12 - 48 tacti, spre deosebire de AVR la care instructiunile nu declansau subprograme.

Pretul platit de AVR era si este in continuare ca programele scrise pentru acesta sunt cu 30 - 40% mai lungi, ocupa cu 30 - 40% mai multa memorie, decit cele pentru 8051 fie el clasic sau high speed. Cu alte cuvinte, instructiunile lui 8051 sunt mai puternice, mai simple, decit cele ale procesorului RISC AVR.

 

Totusi, chiar daca un program in asamblare pentru AVR ocupa 45 Kocteti in timp ce echivalentul sau pentru 8051 are nevoie doar de 32 Kocteti (lucru care poate fi foarte important avind in vedere resursele limitate de memorie ale uC-urilor) AVR-ul iesea net cistigator la viteza deoarece instructiunile sale necesita 1 - 2 tacti de ceas in timp ce 8051 clasic are nevoie de 12 - 48 cicli masina.

 

Una este sa executi un program de 1000 instructiuni scris pentru 8051 clasic in 12000 tacti si total altceva sa rulezi un cod AVR echivalent, care are 1400 instructiuni dar se executa in 1400 tacti. AVR-ul cistiga clar la capitolul viteza fiind de 8.5 ori mai rapid ca un 8051 standard.

 

Totusi in cazul noilor 8051 high speed, AVR-ul ar parea ca pierde net, desi nu cu mult, atit la memoria necesara, avind nevoie de 1400 instructiuni fata de doar 1000 pentru un 8051 high speed, cit si la timpul de executie deoarece AVR-ul necesita 1400 tacti iar 8051 high speed doar 1000!

 

Asta este o teorie citita de mine, asa li se face reclama noilor 8051 high speed. Nu stiu cit de adevarate sunt aceste prezentari si daca nu exista cumva unele capcane. Din cauza aceasta am apelat la ElForum pentru a auzi experiente directe ale unor forumisti care au lucrat atit cu AVR-uri cit si cu 8051 high speed.

 

Repet, la viteza de executie, AVR iese total cistigator fata de un 8051 clasic microprogramat, cu care multi forumisti au experienta. La necesar de memorie ROM (Flash), AVR pierde in fata unui 8051 clasic sau nou. Procesoarele 8051 High Speed aparent sunt superioare atit la viteza cit si la necesar de memorie in lupta lor cu AVR-urile.

Cel putin la o prima vedere, ar parea ca nu prea are sens pentru cineva obisnuit sa lucreze pe 8051 clasic sa invete AVR deoarece acesta nu-i ofera nici un avantaj real. Sigur, daca nu stii 8051 si ai trecut direct la PIC sau AVR comutarea pe 8051 high speed poate ca nu merita efortul.

 

Unii zic ca superioritatea AVR in raport cu 8051 este o chestiune care tine de domeniul trecutului si nu se mai aplica acum. Modificarea din temelii a arhitecturii interne (transparenta utilizatorului), cu mentinerea setului de instructiuni al lui 8051 clasic, a dat nastere acestui 8051 high speed care se bate cu PIC-urile si AVR-urile de la egal la egal.

Link spre comentariu

Este dificil sa compari viteza de executie intre 2 arhitecturi diferite. Viteza de executie nu consta numai in cati cicli se executa o instructiune ci si ce poti face cu acea instructiune (si cat de bine se foloseste compilatorul de setul de instructiuni si de registrii - in cazul limbajelor de nivel mai inalt decat asamblarea)Cat despre 8051, vezi ca nu e chiar asa rapid fata de un avr, avand si instructiuni ce necesita 2/3/4 ciclii de ceas. As spune ca in privinta ciclilor de ceas per instructiune sunt in aceeasi categorie.Daca chiar vrei sa testezi, fa un mic programel C cu calcule matematice - calcul PI? - (compilatorul sa aiba optimizarile pornite) si testeaza-l pe ambele platforme in simulatoare dupa care postezi rezultatele aici.

Link spre comentariu

Daca chiar vrei sa testezi, fa un mic programel C cu calcule matematice - calcul PI? - (compilatorul sa aiba optimizarile pornite) si testeaza-l pe ambele platforme in simulatoare dupa care postezi rezultatele aici.

Ideea pare foarte buna si aplicarea ei o recomand si altora care au posibilitati si experienta mai mare ca mine cu AVR-urile.

Nu stiu insa daca testele pe simulator sunt relevante atita vreme cit nu este foarte clar cum executa simulatorul instructiunile. In final probabil totul se reduce la translatarea codului AVR sau 8051 in asamblor x86. Este posibil ca 8051 sa aiba instructiuni mai apropiate de x86 decit AVR si ca urmare programele scrise pentru 8051 sa ruleze mai repede decit cele pentru AVR.

Ar trebui un simulator care afiseaza numarul de tacti in care se executa fiecare instructiune ca pe urma sa adun si sa compar nr. total de cicli in care s-a efectuat programul pentru AVR si 8051 high speed sau clasic. Pe de alta parte, 8051 high speed este pipe lined ceea ce inseamna ca mai multe instructiuni se gasesc in acelasi timp in diverse stadii de executie. Nu stiu daca simulatorul ia in consideratie asemenea proces.

 

Ar fi o idee sa rulez acelasi program pe simulator selectind mai intii un 8051 clasic si apoi 8051 high speed pentru a vedea daca exista cumva vreo metoda prin care pun in evidenta rapiditatea lui 8051 high speed. Repet, nu imi este foarte clar daca simulatorul tine cont de concepte ca microprogramare sau pipe line. Trebuie vazut.

Link spre comentariu

Chiar la asta ma refeream. La compararea numarului de ciclii masina executati in fiecare din cazuri.Emulatorul din AVR Studio (cel pentru AVR-uri) afiseaza numarul de ciclii. Daca te hotaresti la o bucata de cod, te pot ajuta cu numarul de ciclii necesari pentru executie pe un AVR. Pentru 8051 (arhitectura noua) nu m-am documentat si dar banuiesc ca exista un emulator pe site-ul atmel.

Link spre comentariu

Am gasit un benchmark cu numarul de cicli masina in care un AVR calculeaza valoarea anumitor functii de argument dat. Principala deosebire intre AVR2 si AVR4 este un multiplicator hard.

 

Function --------Avr2--Avr4

acos (0.54321) -- 4411 -- 2455 (tacti)

cos (1.2345) -- 3387 -- 1671

exp (1.2345) -- 4708 -- 2765

log (1.2345) -- 4142 -- 2134

log10 (1.2345) -- 4498 -- 2260

round (1.2345) -- 150 -- 150

sin (1.2345) -- 3353 -- 1653

sinh (1.2345) -- 4946 -- 3003

sqrt (1.2345) -- 494 -- 492

tan (1.2345) -- 4381 -- 2426

trunc (1.2345) -- 178 -- 178

 

Sursa: http://www.gnu.org/savannah-checkouts/n ... marks.html

 

Acum trebuie gasit un benchmark asemanator pentru 8051 clasic si 8051 high speed pentru a putea face comparatiile.

Link spre comentariu

Pe forumul AVRFreaks, in subiectul care compara procesorul AVR cu Silab 8051 (a se vedea adresa):

SiLab 8051 comparat cu AVR pe AVRFreaks

la intrebarea: Merită să înveţi micro controllere AVR, acum în 2011, daca stii deja limbaj de asamblare 8051?

Cineva raspunde:

Am făcut trecerea cu peste zece ani în urmă, daca ar fi fost sa iau o decizie azi, probabil că nu m-aş deranja cu AVR-ul deoarece orice avantaje pe care le avea pe vremea aceea au fost anulate sau depasite de noile oferte (de 8051).

 

Alt user spune:

Am portat un proiect destul de complex de pe un Silab C8051F121 de 8 biti si 100-MIPS pe un dsPIC33FJ128MC804 de 16 biti care efectua 40 MIPS. Proiectul avea o mulţime de filtrari digitale şi FFT-uri, şi eu pot spune clar că, si in conditiile cind un (AVR) XMega de 32 MIPS ar fi fost disponibil la momentul portarii nu ar fi putut inlocui uC-ul Silab.

 

Din ce am remarcat, un Silab 8051 de un tact / instructiune este comparabil cu (AVR) Mega în ceea ce priveşte dimensiunea codului si viteza de executie la aceeasi frecventa a ceasului dar din moment ce Silab efectueaza 50 - 100 MIPS (Mega Instructiuni Pe Secunda) acesta bate (AVR-ul) Mega cum Ferrari bate Renault.

 

Asemenea comentarii, combinate cu supararea moderatorului de pe AVRFreaks, vizibil deranjat, ma conduce la ideea ca practic oricit ar fi schimbata intern arhitectura unui AVR pe 8 biti cit si cea a unui 8051, cele doua tipuri de procesoare nu se vor putea depasi niciodata ca performante decit pentru intervale scurte de timp dupa care egalitatea va reveni.

Link spre comentariu

Am făcut trecerea cu peste zece ani în urmă, daca ar fi fost sa iau o decizie azi, probabil că nu m-aş deranja cu AVR-ul deoarece orice avantaje pe care le avea pe vremea aceea au fost anulate sau depasite de noile oferte (de 8051).

 

Probabil ca daca Motorola 68HC11 ar fi fost imbunatatit, nu mai vorbeam acum de AVR sau PIC. FALS!

Eu experimentez acum controllerele de la ST pentru ca sunt mai ieftine deci "trecerea" (de fapt nu renunt la nimic, pur si simplu mai invat o arhitectura) o fac oricum, daca unul prefera sa ramana fixat pe ceva treaba lui.

+ vezi mai jos comparatia de pret intre 8051 si AVR.

 

 

Alt user spune:

....... din moment ce Silab efectueaza 50 - 100 MIPS (Mega Instructiuni Pe Secunda) acesta bate (AVR-ul) Mega cum Ferrari bate Renault.

Daca maine Atmel face un AVR care merge la 300MIPS atunci ar fi ca o racheta pe langa Ferrari. Sa nu uitam ca microcontrollerele pe 8 biti nu se adreseaza aplicatiilor care au nevoie de 100MIPS. Pentru asta exista ARM sau alte variante (vezi alegerea fabricantilor de telefoane mobile cu aplicatii care chiar au nevoie de viteza). Cu siguranta nu merita sa cumperi un procesor Silab C8051F121 de 100MIPS (17 euro gasit de exemplu la un distribuitor) ca sa faci de exemplu un termostat, care il poti face cu un AVR (2.5euro).

 

Cresterea frecventei inseamna cresterea consumului si cred ca la capitolul acesta 8051 stau mai prost. Apoi, corectia unor lipsuri cum ar fi iesirea Hi-Z la 8051 a insemnat complicarea unei arhitecturi, deci un pret ridicat.

 

Apoi, MIPS nu este chiar atat de relevant. Nu cred ca merita sa fac o analiza a noilor 8051 doar pentru a scrie o parere aici pe forum dar sa luam cazul in care faci operatii in mod repetat asupra a 2 variabile.

Presupunem arhitectura A, care are un acumulator si deci incarci variabila x, faci operatia, descarci variabila, incarci variabila y, faci operatia, descarci variabila, deci 6 operatii.

Presupun acum arhitectura B, care merge la aceeasi frecventa. Ai variabila x in registrul 1, y in registrul 2, oricare dintre acestea poate fi considerat acumulator. Faci operatia asupra x, faci operatia asupra y. Astfel, ai 2 instructiuni, in loc de 6 initial.

Chiar si la jumatate din frecventa, arhitectura B este mai eficienta, iar la 1/3, e la fel de rapida, cu un consum mai mic de energie.

Link spre comentariu

one: Trebuie sa refaci calculul la varianta B. "Ai variabila x in registrul 1" nu se pune la numaratoare?ps: Nu prea inteleg asta cu "variabila" x in registru. La ce scoala ai deprins exprimarea asta?

Link spre comentariu

1) Picolo, hai sa depasim aceasta cautare de noduri in papura. Daca stam sa despicam firul in patru atunci toate subiectele din forum ar fi pline cu dezbateri referitoare la exprimari. Atita vreme cit ai inteles ce vrea sa zica un user nu are sens sa provoci polemici.

 

2) Pt. One

Da, pentru aplicatia cu termostatul, un 8051

Silab C8051F121, 100 MHz --- 22.29 $

http://search.digikey.com/us/en/product ... -ND/819525

nu este solutia potrivita, costul acestuia fiind prohibitiv, insa exista

Silab C8051F988, 25MHz --- 2.51 $

vezi: http://search.digikey.com/us/en/product ... ND/2333309

Deci, pina la urma, pentru probleme similare, 8051 si AVR-ul ofera solutii la preturi asemanatoare.

Link spre comentariu

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări