|
Benchmark mikrokontrolérov s jadrom 8051 |
V tomto článku si porovnáme výkon 42 mikrokontrolérov s jadrom 8051 od troch firiem ATMEL, DALLAS a INTEL. Výkon budeme porovnávať na ich maximálnej pracovnej frekvencii.
ATMEL (20 mikrokontrolérov) -> AT89C1051, AT89C2051, AT89C4051, AT89C51, AT89C52, AT89C55, AT89F51, AT89F52, AT89LP2052, AT89LP4052, AT89S2051, AT89S4051, AT89S51, AT89S52, AT89LS51, AT89LS52, AT89LS53, AT89LV51, AT89LV52, AT89LV55
DALLAS (14 mikrokontrolérov) -> DS80C310, DS80C320, DS80C323, DS80C390, DS80C400, DS80C410, DS80C411, DS87C520, DS87C530, DS87C550, DS89C420, DS89C430, DS89C440, DS89C450
INTEL (8 mikrokontrolérov) -> 80/87C52, 80/87C54, 80/87C58, 80/87L52, 80/87L54, 80/87L58, 8051AH, 8052AH
Väčšina z týchto mikrokontrolérov, pracuje na určitej deličke napätia. U AT89C2051 to je 1/12, čiže ak mikrokontrolér pracuje na 12MHz znamená to, že dokáže spracovať 1 milión strojových cyklov za sekundu (Pri 24MHz to je 2 milióny).
Jeden z najvýkonnejších mikrokontrolérov firmy ATMEL AT89LP2052 pracuje na technológii rozšíreného jadra a jeho výkon je zrovnateľný s mikrokontrolérmi s technológiou RISC a jeho delička pracuje 1/1 čiže pri jeho maximálnej frekvencii dokáže vykonať až 20 miliónov strojových cyklov za sekundu. 17% príkazov dokáže na AT89LP2052 pracovať až 12 krát rýchlejšie ako na AT89C2051. Ostatné príkazy dokážu pracovať len 6 krát rýchlejšie ako u AT89C2051. Na svete nie je len jeden výrobca mikrokontrolérov s jadrom 8051. Ja som vybral vybral len 3 najznámejšie. ATMEL najobľúbenejší a najpredávenjší v strednej Európe. DALLAS sa vyznačuje tým, že u ich produktov prevažujú výkonne mikrokontroléry podobné ako AT89LP2052. INTEL ten to všetko začal tým svojim legendárnym obvodom 8051. V tento benchmark sa bude skladať z troch testov. Prvý test bude vykonávanie cyklov. V druhom teste zase aritmetické operácie. V tretom teste sériový kanál. Pre jednoduchosť programu a väčšie zaťaženie mikrokontroléra som si zvolil prehľadný programovací jazyk C, čiže každý z mikrokontrolérov bude programovaný v jazyku C.
Test č.1 -> Cykly:
unsigned int a;
for (a=0;a<65535U;a++);
Tento program vytvorí cyklus o 65535 opakovaní. Pri tomto programe prevládaju viac bajtové príkazy. Čiže napríklad u AT89LP2052 nevyužijeme plné 12 násobné zrýchlenie ako u AT89C2051, ale len niečo vyše 6 násobné.
Toto zrýchlenie porovnávam pri rovnakej pracovnej frekvencii (12 MHz).
Test 2 -> Aritmetické operácie
double a=1;
while (a<65535U)
{
a=a*2000/1999;
}Tento program bude toľko krát násobiť premennú "a" (na začiatku má
hodnotu 1) zlomkom 2000/1999, až do vtedy pokým nebude mať premenná "a" vyššiu
hodnotu ako 65535. Tento program využíva jak jedno bajtové tak aj viac bajtové
príkazy. V tomto programe prevládajú príkazy jedno bajtové, čiže zrýchlenie
programu na AT89LP2052 oproti AT89C2051, bude výraznejšie ako v predchádzajúcom
teste. Zrýchlenie programu dosiahneme takmer až 10 násobné. Aj toto zrýchlenie
porovnávam pri rovnakej pracovnej frekvencii (12 MHz).
Test č.3 -> Sériový kanál
typedef unsigned int bajt;
int dekdata(unsigned int i)
{
unsigned char a;
code bajt tab[] = {132,155,25,65,78,110,51,155,125};
a=i%8;
return tab[i];
}
void main ()
{
unsigned int i;
for(i=0;i<65535U;i++)
{
SCON=0;
while(!TI)
{
SBUF=dekdata(i);
TI=~TI;
}
}
}Tento program postupne odosiela sériovým kanálom čísla z databáze
tab[], ktorý odošle 65535 čísiel opakujúcich sa v
databáze, čiže 132 ...155,125 a od tohoto bodu začne odznova pokračuje 132
...125,132...125 atď. Tento program mali problém vykonávať mikrokontroléry
DALLAS, pri ktorých nebol program plne kompatibilný. U obvodoch DS87C550
DS80C310, DS80C320, DS80C323, DS80C390, DS80C400, DS80C410, DS80C411, DS87C520, DS87C530
sa program nikdy nedokončil. Problém nastal pri vykonávaní cyklu príkazom for,
ktorej premenná "i" stúpala maximálne na hodnotu 155 a potom sa premenná i
vynulovala, čím vznikla nekonečná šmyčka. U ostatných obvodoch firmy DALLAS
dokázal pracovať. Pri týchto mikrokontroléroch sme museli upravit vyvolávané
registre SBUF a SCON. U mikrokontroléroch firmy DALLAS som si všimol, že majú 2
sériové kanály, keďže som si vybral prvý, tak som registre vyvolávané registre
zmenil na SCON0 a SBUF0. Podobné to bolo aj s bitom TI, ktorý som zmenil na
TI_0.
A tu je výsledok benchmarku -> zobrazit výsledok
Zhrnutie: Ako ste si všimli frekvencia mikrokontroléra nie je
všetko napríklad program na obvode AT89LP2052, ktorý pracuje na maximálnej
frekvencii 20 MHz, dokázal pracovať o niečo rýchlejšie ako na obvode
DS80C400, ktorý pracuje až na frekvencii o hodnote 75 MHz. Bolo to spôsobené
výpočetným výkonom. A zoberme si to takto ak by obidva mikrokontroléry pracovali
na tej istej frekvencii povedzme 12 MHz a vykonávajú program testu č.2.
AT89LP2052 dokázal tento program spracovať za 2,438 sekundy čo na
DS80C400 to spracuje za 9,813 sekundy. A pritom pri ich maximálnej možnej
frekvencii boli na tom takmer vyrovnane. Takisto neznamená, že keď prvom
programe dokázal mikrokontrolér pracovať povedzme 2x rýchlejšie a v druhom
programe to bude tiež 2x rýchlejšie. Porovnáme si mikrokotroléry AT89LP2052 a
AT89C2051 (pracujú na frekvencii 12MHz / maximálne frekvencia). V prvom teste u
AT89LP2052 dokázal program pracovať 6,67x / 5,56x rýchlejšie ako u AT89C2051 v
druhom teste to bolo 9,66x / 8,05x a v treťom 7,51x / 6,27x rýchlejšie. Takisto
neznamená, že keď program pracuje na mikrokontoléroch ATMEL, že bude pracovať aj
na mikrokontréloch vyrábanej druhej firmy "i" keď sú s jadrom 8051. Príkladom je
DS80C310, zatiaľ čo program bol kontaktibilný u firiem ATMEL a INTEL tak u
DALLAS to nie je pravidlo.
DS80C400 je dobrý rýchly obvod, ale neprešiel všetkými testami. Nech už
používate akýkoľvek mikrokontrolér nestačí vedieť, len programovať, ale musíte
dokonale znať aj ten obvod. Lebo, čo jeden program pracuje na dvoch
mikrokontroléroch efektifita využitia ich výkonu je rôzna. Výsledok
testu: Test dopadol jednoznačným víťazom obvodu firmy DALLAS DS89C420.
Tento obvod z tohto zoznamu testu považujem za najlepší ale jeho cena príliš
veľká cca 1000 SK , na to aby sa bežne využíval. Za najlepší obvod v porovnaní
cena/výkon považujem mikrokontrolér AT89LP2052 / AT89LP4052. Cena tohoto
mikrokontroléru by nemala prekročit 100SK. Ale na bežne využívanie by som
odporučil obvod AT89C2051, ktorého jeho cena je cca 35SK. Ak máte problémy s
malým počtom vstupno-výstupných liniek tak na bežné používanie by som odporučil
AT89C51. A tu je tabuľka mojich obľúbených mikrokontrolérov ATMEL.
|
TYP |
IN - OUT |
FLASH [kB] |
|
AT89LP2052 |
15 |
2 |
|
AT89C1051 |
15 |
1 |
|
AT89C2051 |
15 |
2 |
|
AT89C4051 |
15 |
4 |
|
AT89C51 |
32 |
4 |
|
AT89C52 |
32 |
8 |
|
AT89C55 |
32 |
20 |
Dúfam, že vám tento článok páčil. A veľa štatia pri využívani mikrokontrolérov. Ešte posledná vec ako vývojový program pre tieto mikrokontroléry by som odporúčil program KEIL. Je to program jak kompilačný (pri chybách upozorní akú chybu ste spravili aj na ktorom riadku) tak aj simulačný (dokáže nasimulovať program ako by pracoval na mikrokontroléry), dalej ak podporuje váš program k programátory štandartné argumenty (argumentami ovládať program), tak dokáže aj priamo uložiť program do mikrokontroléra. Ja tento program považujem za najlepši vývojový program pre mikrokontroléry s jadrom 8051.
|
|
|
|
 |
| |
| Súvisiace odkazy | |
|  |
 | Hodnotenie článku |
Priemerné hodnotenie: 5 Hlasov: 1
 | |  |
 | Možnosti | |
|  |
 |