Bonjour,
Je viens de tomber sur un petit test (c'est assez rare) de CPU de microcontrôleurs réalisés sur un bout de code C par Atmel: http://www.atmel.com/dyn/resources/p...ts/doc7926.pdf
Il s'agit de tester le code suivant (page 3 du document):
Code:int max(int *array) { char a; int maximum=-32768; for (a=0;a<16;a++) if (array[a]>maximum) maximum=array[a]; return (maximum); }
Et j'ai mis dans mon main.c le code suivant, avec deux breakpoints devant les « asm(NOP) »:
Code:void main(void) { int test; int array[17]={ -1000, 23456, 12, 22, 8888, 222, 6942, -333, 288, 16, 0, 22255, 2255, 67, 25, 31000 }; EnableInterrupts; /* enable interrupts */ for(;;) { __RESET_WATCHDOG(); /* feeds the dog */ asm(nop); test=max(array); asm (nop); } /* loop forever */ }
En ne modifiant pas les options standard de compilation , j'ai fait ce test (en simulation) sur un 9S08 et sur un MCF51 (IDE CodeWarrior).
Sur un MC9S08QE64 (cpu 8 bit, 64ko flash):
Taille du code en flash : 49 octets
Nombre de cycles (entre les deux breakpoints) : 926 cycles ( ou 653 cycles en plaçant les variables en « page 0 » : 256 premiers octets de la RAM )
soit à la vitesse nominale du processeur : 20Mhz : 46,3 µsec (32,7 µsec)
Coût du processeur MC9S08QE64 (farnell.fr, mai 2008): 5,56€ (hors taxes)
Sur un MCF51QE64 (bas de gamme 32 bits, 100% compatible MC9S08QE64)
Taille du code en flash : 31 octets
Nombre de cycles : 219 cycles
soit à la vitesse nominale du processeur : 20Mhz : 11 µsec
Coût du processeur MCF51QE64 (farnell.fr, mai 2008): 5,66€ (hors taxes)
Je suis bien conscient qu'il s'agit d'un cas particulier avec des int (donc pas besoin de répondre par des considérations philosophiques), et qu'il ne faut pas en tirer de conclusion générale mais je serais intéressé si des gens pouvaient compléter ces résultats par d'autres processeurs (AVR, PIC16, PIC18, MSP430, ARM, ...) par des test réalisés par eux (non des chiffres trouvés dans la littérature et/ou calculs/extrapolations) dans la même gamme de prix et/ou aussi proposer d'autres tests.
thierry
-----