Comarativo desempenho MSP x PIC x Compilador C (migrado)

Software e Hardware para uC Texas

Moderadores: andre_luis, 51

Comarativo desempenho MSP x PIC x Compilador C (migrado)

Mensagempor Fábio Pereira » 17 Out 2006 17:48

KrafT
Conselheiro


Brazil
3476 Posts Posted - 29/09/2003 : 08:05:26
--------------------------------------------------------------------------------
Durante uma conversa com o Fábio Pereira, surgiu a questão do desempenho do MSP x PIC.
Como não fazia a mínima idéia disso, fiz alguns testes via simulação de software, utilizando um
programa sugerido pelo Guest, para ordenar Matrizes:


//Programa de teste de um PIC de 16 bits, ordenando uma matriz com dados de 8 bits. #include <18f452.h>#define nop delay_cycles(1)#opt 9int m0[]={0x32,0x45,0x97,0x10,0x09,0x43,0x48,0x77,0x89,0x86};int aux;int a1,a2,n=0x0A;main(){ nop; for(a1=0;a1<n;a1++){ for(a2=a1+1;a2<n;a2++){ if(m0[a1]>m0[a2]){ aux=m0[a1]; m0[a1]=m0[a2]; m0[a2]=aux; } } } nop;while(1){} }

Fiz os testes da seguinte forma:

CCS (PCM e PCH) Versão 3.148.
MPLAB 5.70
Matriz com 10 variaveis, um teste com variáveis de 8 bits e outro com variaveis de 16 bits.
PIC de 14 bits e de 16 bits, simulados pelo MPLAB e contagem de ciclos feito pelo Stopwatch.
(Programa acima, medindo os ciclos entre os nop's).


IAR C/EC++ Compiler for MSP430 V2.10A/W32 (2.10.1.7), idem ao PIC, exceto que os MSP são de 16
bits tanto para dados como para programa.

Obtive os seguintes resultados:



Conclusão:

- O conjuntos MSP e IAR, trabalham melhor com dados de 16 bits. O código gerado pelo IAR é sempre um pouco menor do que o equivalente gerado pelo CCS, talves devido à ortogonalidade dos modos de endereçamento do MSP e embora seu desempenho seja comprometido pelas instruções que levam mais de um ciclo, algumas levando até seis ciclos, por levar 125uS por instrução o MSP saiu vitorioso.

- O CCS PCH apresentou um resultado péssimo com PIC de 16 bits e matriz de 16 bits. Deve haver algo
errado no (meu) conjunto CCS & MPLAB.


PS: Sugiro aos colegas repetirem esse meu teste, tanto para PIC, como MSP, para validar ou corrigir o meu
trabalho e principalmente, fazer esse teste com outros microcontroladores e seus compiladores C, pra avaliarmos a
eficiência do conjunto (microcontrolador e compilador C).

PS1: Com PIC 12 bits e matriz de 8 bits, os ciclos foram 1440 e com Matriz de 16 bits, o CCS PCB indicou RAM insuficiente.




Edited by - kraft on 29/09/2003 08:09:17

Fabio Pereira
Conselheiro


Brazil
2205 Posts Posted - 10/10/2003 : 19:31:39
--------------------------------------------------------------------------------
Kraft,

Eu estava querendo comparar os Z8 com os PICs e achei a sua idéia interessante.

A execução da sua rotina de teste no ZDS-II resultou nos seguintes tempos:

8 bits (elementos da matriz declarados como char) : 2505 ciclos
16 bits (elementos da matriz declarados como int) : 2980 ciclos

Os Z8 encore me causaram uma ótima impressão, especialmente porque o seu ciclo de instruções é de 50ns @ 20Mhz (claro, a maioria das instruções é executada entre 2 e 6 ciclos de clock), mas me pareceu um ótimo resultado, já que os 1482 ciclos dos PIC16, são executados cada um em 4 ciclos de clock (resultando então em 5928 ciclos de clock).

Claro que posso estar errado pois ainda não estou 100% familiarizado com a arquitetura dos Z8 ...

Até +

Fábio Pereira
Fábio Pereira
embeddedsystems.io
Avatar do usuário
Fábio Pereira
Word
 
Mensagens: 674
Registrado em: 16 Out 2006 09:07
Localização: Kitchener, ON

Voltar para Texas

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x