Mostrando postagens com marcador Eletrônica. Mostrar todas as postagens
Mostrando postagens com marcador Eletrônica. Mostrar todas as postagens

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.

segunda-feira, 31 de outubro de 2011

Velocidade...

... 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.

segunda-feira, 19 de setembro de 2011

Expoentes do Conhecimento

Vocês já devem ter reparado como é difícil prever a evolução do conhecimento e da tecnologia.  Todo fim de ano algum "expert" faz suas previsões para os próximos anos... e de cada vez erra em quase tudo!

Para mim um exemplo clássico é o livro/filme "2001 - A Space Odissey".  O livro, da década de '60, foi escrito por Arthur C. Clarke, talvez um dos melhores escritores científicos até hoje.  E o filme foi feito por Stanley Kubrick, com consultoria do próprio Clarke!  No entanto, suas tentativas de prever o estado do conhecimento em 2001 - pouco mais de 30 anos no futuro - foram completamente fora do alvo.  O filme mostra naves comerciais indo e vindo da Lua, com colônias lá estabelecidas... hoje, 10 anos além da época retratada, até as missões científicas à Lua deixaram de existir.  Mostra uma enorme nave tripulada indo ao sistema de Saturno - bem além de nossas possibilidades hoje.  No entanto, mostra um computador enoooorme nessa mesma nave, sem nada da miniaturização alcançada em 2001, e nele não existem telefones celulares, computadores pessoais, e muito menos algo como a Internet.

E por que um cientista experiente e visionário tem tanta dificuldade em prever o futuro próximo?

Uma das razões disso é o desenvolvimento exponencial do conhecimento humano.  Cada desenvolvimento é baseado na soma do conhecimento já estabelecido, e este é cada vez maior.  Portanto o desenvolvimento é cada vez mais acelerado, de forma exponencial.

Vamos fazer uma brincadeira simples para ilustrar a crescente velocidade desse desenvolvimento:  Se a História Ocorresse em um Dia...

Imaginemos os 5.000 anos de história documentada que temos hoje ocorrendo em um único dia.  Estamos assistindo ao pôr do sol, e relembrando tudo o que aconteceu nesse dia...
  • A Roda foi inventada ao amanhecer...
  • O Alfabeto, por volta das 9:20 horas...
  • A Bússola, pouco depois do meio dia...
  • A Imprensa, pouco antes das 5 horas da tarde...
  • O primeiro Automóvel e o primeiro Avião apareceram quase juntos, faltando 15 minutos para o por do sol...
  • O Homem pousou na Lua há uns 5 minutos...
  • e a Internet existe há pouco mais de 2 minutos!
Impressionante, não?  Reparem que em metade de todo esse tempo mal tínhamos chegado à Bússola.  Faltando uma hora, das 12 horas do dia, para o pôr do sol, a imprensa tinha acabado de aparecer.

É essa incrível aceleração na velocidade do desenvolvimento que torna quase impossível prever o que vai acontecer a seguir, e quando.

Há menos de um século as pessoas compravam, por exemplo, um toca-discos (discos de vinil, claro...), e sabiam que o utilizariam por décadas.  Mais recentemente, eu mesmo comprei um CD-player que durou pouco mais de 10 anos antes de ficar obsoleto.  Comecei a usar um DVD, e menos de 5 anos depois o BluRay o tornou obsoleto.  Troquei uma TV antiga, com CRT, por uma LCD, e... raios, a OLED está ali na esquina me olhando!

Chega a ser estressante... imaginem daqui a mais 10 anos?

Sei lá... não faço a menor idéia do que vai acontecer!!!  Só sei que tenho uma enorme curiosidade para ver!  E enquanto houver essa curiosidade estou tranquilo... ainda estou vivo!

sexta-feira, 12 de agosto de 2011

ABSolutamente Essencial!

Quando se fala em Eletrônica e Segurança Automotiva moderna, um dos itens mais discutidos e menos entendidos é o ABS.

ABS (Anti-lock Braking System, ou freio anti-travamento) é um dispositivo eletrônico que foi utilizado pela primeira vez na década de '70, pela Mercedes-Benz, em seu experimental C111.  O veículo caiu no esquecimento depois de uma década de experimentos, mas o ABS veio para ficar.

A idéia por trás do ABS é simples: numa frenagem de emergência, é comum as rodas do carro travarem.  Quando isso acontece, há duas consequências graves: o atrito entre a roda travada e a pista é MENOR do que o atrito sem travamento, o que aumenta a distância de frenagem.  E, mais importante: perde-se completamente o controle direcional sobre o carro.

Um motorista experiente, nesse momento, solta o freio e reinicia a frenagem, com menos pressão, evitando o travamento.  Infelizmente, hoje em dia, poquíssimos motoristas são "experientes", nesse sentido.  A esmagadora maioria sabe apenas o trivial sobre a condução do veículo, nunca fez um curso de direção defensiva, muito menos praticou com seu carro situações de emergência como frenagens ou derrapagens.  E mesmo nosso motorista experiente perde preciosas frações de segundo ao reiniciar a frenagem e corrigir o problema de travamento.  E, pior do que isso: caso UMA das rodas trave, talvez por estar sobre um trecho da pista menos aderente, é preciso parar a frenagem nas QUATRO e reiniciar, já que o pedal do freio atua sobre todas simultaneamente.

Daí vem a idéia do ABS: um sistema eletrônico monitora o giro de cada roda durante a frenagem.  Ao detectar um início de travamento em uma delas, ele alivia a ação do freio apenas sobre aquela roda, e alguns mili-segundos depois reinicia a frenagem.  Resultados práticos:
  • Apenas a roda afetada tem sua frenagem reiniciada, enquanto isso as outras três continuam freando;
  • O tempo de reinício é bem menor do que o conseguido pela ação humana, perde-se menos tempo sem frear;
  • Isso funciona com qualquer motorista, com ou sem experiência.  Basta frear fundo, e o sistema faz o resto.
Esse tipo de sistema aumentou drasticamente a segurança ativa dos veículos - ou seja, sua capacidade de evitar acidentes.  Não é para menos que, apesar de caro (é um acessório que, apesar da larga produção, ainda aumenta em quase US$ 500,00 o preço de um automóvel, ou uns R$ 2.000,00 no Brasil) vem sendo cada vez mais utilizado, e até mesmo carros mais populares já o oferecem.

As dificuldades para sua instalação (e, consequentemente, o alto preço) são, principalmente, o sensoriamento e a atuação sobre o freio.  O processamento, embora complexo, é hoje relativamente barato, já que a eletrônica moderna disponibiliza processadores de alta capacidade e velocidade a custos muito baixos.

No lado do sensoriamento, precisamos medir rapidamente, e com precisão, a velocidade de cada roda.  Durante a frenagem o sistema monitora continuamente essas velocidades e, como as quatro rodas nunca começam a travar exatamente ao mesmo tempo, usa as diferenças entre essas velocidades para detectar o iminente travamento de uma roda.  Detectada essa situação, o sistema desaciona o freio da roda afetada, espera sua velocidade voltar ao normal (o que leva de poucos mili-segundos a quase um segundo) e reaplica o freio.

Esse ciclo de funcionamento (início de travamento, desaplicar o freio, aguardar normalização, reaplicar o freio) é o que causa a característica "vibração" no pedal do freio, que costuma assustar os motoristas desavisados na primeira vez que causam a intervenção do ABS em seus carros.

É consenso entre os especialistas em automóveis, hoje, que o ABS, apesar de caro, é talvez o mais importante avanço na segurança ativa já conseguido em automóveis.  Nas palavras de um especialista:

"- É um acessório caro.  Mas se ele for acionado uma única vez no seu carro, em condições reais, ele se pagou.  Porque provavelmente ele evitou um acidente, e quem sabe salvou sua vida."