... de processamento! 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. 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! Passa a régua! 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? Quanta memória "cash" L1 e L2? Que velocidade de "clock" vamos utilizar? Qual a quantidade e tipo de memória RAM? Qual o "chipset" utilizado? Qual a velocidade e a largura do barramento de IO? Qual a capacidade do HD, e qual sua velocidade de transferência? Que adaptador de vídeo, e com quanta memória? Que adaptador de rede... e qual a rede? Vamos utilizar Flash? Com interface paralela ou serial, e que velocidade?
Ufa...
Mesmo em se falando apenas de microcontroladores, que usualmente não utilizam HD, video ou redes, a multiplicidade de escolhas assusta. E o número de combinações não permite um "benchmark" de cada uma em especial. Aí só o bom senso e a experiência podem nos ajudar. 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. Existem hoje microcontroladores de 8, 16 e 32 bits. É provável que breve vejamos microcontroladores de 64 bits, já que essa largura é utilizada nos computadores já há algum tempo. Quanto maior a largura do barramento, maior o desempenho do processador. Mas essa relação não é fixa, dependendo da arquitetura do próprio processador e da aplicação executada. 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. 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 segundo parâmetro mais utilizado costuma ser a velocidade de "clock". 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. Só que também não é tão simples como parece! 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. 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". 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. 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. O desempenho será de 16 bits nas operações internas, mas de apenas 8 bits em operações que envolvam esses periféricos. 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. 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. 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. Comunicação serial é tratada em outro módulo, e o processador só entra na festa depois de uma mensagem recebida, verificada e classificada. E assim por diante. Portanto o desempenho final vai depender em muito de existirem os módulos para processamento paralelo adequados à aplicação que está sendo executada. 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.
Minha cabeça é pequena para a quantidade de ideias que me ocorrem. Elas surgem, crescem, juntam-se a outras que já habitam por lá, e quando dou por isso elas estão transbordando, saindo pelo ladrão! Aí o único jeito para não desperdiça-las é encontrar outra morada. Um lugar onde elas vivam e cresçam felizes. E o que pode ser mais feliz para uma boa ideia do que ser partilhada com os donos de outras ideias tão interessantes quanto?
Nenhum comentário:
Postar um comentário