domingo, 13 de novembro de 2011

...e mais Velocidade!

...e como dizíamos... ainda temos que considerar os periféricos!

Em um computador de grande porte, periféricos como memória volátil, memória de massa e interface de vídeo têm uma enorme influência no desempenho do sistema.

Tratando-se de microcontroladores, normalmente memória de massa e vídeo são bem menos importantes.  Mesmo assim, a influência dos periféricos pode ser importante:
  • Memória Volátil: ela deve ser rápida o suficiente para acompanhar a maior velocidade de acesso do processador, e em quantidade suficiente para manter todos os dados mais acessados disponíveis.  Se for lenta, seu acesso irá atrasar o processador.  Se for muito pequena, obrigará que algumas informações fiquem armazenadas em outras áreas, certamente ainda mais lentas, como uma memória "flash";
  • Memória de Massa: no caso do microcontrolador, ela será quase certamente uma "flash".  Essa memória é destinada a armazenar maiores quantidades de dados, especialmente os pouco voláteis, já que, embora apresente boa velocidade de leitura, sua gravação costuma ser bem mais lenta.  É comum as "flash" utilizarem interfaces seriais, e se essa interface não tiver boa velocidade pode prejudicar ainda mais o desempenho deste periférico;
  • Comunicação: É muito comum a necessidade de um microcontrolador comunicar-se com outro, ou com um grande computador que controle o sistema.  Caso a interface utilizada para isso seja muito lenta, ou exija muitos recursos do processador, isso irá certamente degradar o desempenho de todo o sistema;
  • Captura de Eventos: o software de controle de uma máquina automatizada precisa com frequência capturar eventos externos, ocorridos em qualquer lugar da máquina.  Caso o microcontrolador não disponha de hardware especializado para essa captura, o processador gastará um tempo considerável observando esses eventos, o que também irá causar grande degradação em seu desempenho;
Em um computador de maior porte é comum se utilizar, por exemplo, um programa de reprodução de mídia, cuja função principal é atualizar o vídeo em alta velocidade e definição.  Num sistema microcontrolado, ao contrário, as interfaces humanas (vídeo e/ou teclado) não são normalmente utilizadas para desempenho das funções principais do sistema, sendo seus requisitos de volume e velocidade bem menores.  Pode-se, assim, utilizar interfaces menos rápidas e complexas.

A otimização do desempenho de um sistema microcontrolado, como se pode ver por esta discussão, não é um problema simples ou banal.  Depende de um bom conhecimento da aplicação a ser desenvolvida e das famílias de controladores disponíveis.  Além do ingrediente mais importante de todos: uma boa dose de experiência e de bom senso por parte do engenheiro de software.