Velocidade...
Autor: d'Avila | Publicado: 2011-10-31T04:56:00-07:00

... de processamento!&nbsp; Não vamos falar aqui da Suzuki Hayabusa, nem da Bugatti Veyron, mas sim de velocidade da execução de código em computadores - mais especificamente, em microcontroladores.

Um grande problema quando se fala em computadores, ou controladores, está em escolher o modelo que nos trará os recursos e o desempenho desejados.

O problema começa porque, diferente de um carro ou de uma moto, um computador não é um sistema fixo e completo.&nbsp;&nbsp;Quando escolhemos um carro, temos para cada modelo no máximo duas ou três opções de motorização... talvez dois câmbios... e fim!&nbsp; Passa a régua!&nbsp; Para cada combinação (e são poucas) teremos um teste de desempenho feito, se não pela fábrica, pelo menos pelas revistas especializadas!

Mas em se tratando de computadores... qual o modelo do processador?&nbsp; Quanta memória "cash" L1 e L2?&nbsp; Que velocidade de "clock" vamos utilizar?&nbsp; Qual a quantidade e&nbsp;tipo de memória RAM?&nbsp; Qual o "chipset" utilizado?&nbsp; Qual a velocidade e a largura do barramento de IO?&nbsp; Qual a capacidade do HD, e qual sua velocidade de transferência?&nbsp; Que adaptador de vídeo, e com quanta memória?&nbsp; Que&nbsp;adaptador de rede... e qual a rede?&nbsp; Vamos utilizar Flash?&nbsp; Com interface paralela ou serial, e&nbsp;que velocidade?

Ufa...

Mesmo em se falando apenas de microcontroladores, que usualmente não utilizam HD, video&nbsp;ou redes, a multiplicidade de escolhas assusta.&nbsp; E o número de combinações não permite um "benchmark" de cada uma em especial.&nbsp; Aí só o bom senso e a experiência podem nos ajudar.&nbsp; Por isso, vamos falar aqui dos principais fatores, e sua influência no desempenho de um controlador.

Para começar, o processador, que é o "core", o ponto central do controlador:

A primeira grande classificação que se observa é a largura do seu barramento de dados interno.&nbsp; Existem hoje microcontroladores de 8, 16 e 32 bits.&nbsp; É provável que breve vejamos microcontroladores de 64 bits, já que essa largura é utilizada nos computadores já há algum tempo.&nbsp; Quanto maior&nbsp;a largura do barramento, maior o desempenho do processador.&nbsp; Mas essa relação não é fixa, dependendo da arquitetura do próprio processador e da aplicação executada.&nbsp; Se o processador for utilizado, por exemplo, em uma aplicação de controle de automação, com atuadores simples, e sem cálculos com grandes números, a maior largura de barramento em muito pouco vai influenciar o desempenho.&nbsp; Ao contrário de uma aplicação com atuadores complexos e cálculos envolvendo grandes números, onde essa maior largura terá um impacto significativo sobre o desempenho.

O&nbsp;segundo parâmetro mais utilizado costuma ser a velocidade de "clock".&nbsp; Como todo processador atual utiliza um sinal de "clock" para sincronizar toda a sua atividade, esse sinal nos dá uma boa noção de seu desempenho.&nbsp; Só que também não é tão simples como parece!&nbsp; Um modelo de processador pode executar uma instrução em cada ciclo de "clock", enquanto outro precisa de 2 ou 3 ciclos para cada instrução.&nbsp; A IBM, lá pelos idos de 1970, introduziu uma medida que chamou de MIPS - milhões de instruções por segundo - que media a velocidade de instruções realmente executadas, não apenas de "clock".&nbsp; Mas nem isso resolve o problema, já que diferentes arquiteturas de processadores têm diferentes instruções, e tarefas diferentes são realizadas em uma instrução.&nbsp; Assim o MIPS só faz realmente sentido para comparar vários processadores de uma mesma família.

Para complicar ainda mais as coisas, a largura de barramento pode não ser constante - é comum, por exemplo, um processador de 16 bits (barramento interno) comunicar com seus periféricos externos através de um barramento de 8 bits.&nbsp; O desempenho será de 16 bits nas operações internas, mas de apenas 8 bits em operações que envolvam esses periféricos.&nbsp; Da mesma forma, o barramento externo pode ter velocidade diferente (geralmente menor) do que o interno.

A para finalizar, complicando ainda mais: em um processador moderno, existe uma boa quantidade de processamento paralelo.&nbsp; Interrupções são tratadas por um módulo separado, e o processador central só é interrompido já com todos os elementos da interrupção processados, hierarquizados e prontos para tratamento.&nbsp; Transferências em memória são executadas por um DMA, módulo especializado nisso, e o processador só é comunicado ao fim de uma transferência completa.&nbsp; Comunicação serial é tratada em outro módulo, e o processador só entra na festa depois de uma mensagem recebida, verificada e classificada.&nbsp; E assim por diante.&nbsp; Portanto o desempenho final vai depender em muito de existirem os módulos para processamento paralelo adequados à aplicação que está sendo executada.&nbsp; Reparem que, mais uma vez, a escolha depende da aplicação.

Não percam o próximo capítulo, onde falaremos dos módulos periféricos que, junto com o processador, compõem a totalidade de um microcontrolador.