2007/12/18

CPUs Actuais em Excesso de Velocidade?

Um pouco no seguimento do que disse quanto ao sub-aproveitamento dos processadores actuais, este artigo do NY Times torna-se numa leitura interessante.

Na verdade, com o avanço tecnológico que os processadores têm tido: com os dual core, quad core - e brevemente octa-core e sabe-se lá que mais - o software actual raramente tira real partido de toda a potência ao seu dispôr.

Isto deve-se, em parte, a toda uma "tradição" de programação linear pensada para correr num único processador. Máquinas multi-core sempre existiram, mas estavam vocacionadas para resolver problemas específicos e facilmente adaptáveis a processamento paralelo. Para o uso comum, poucas aplicações temos que dêem uso a múltiplos processadores.

Isto demonstra claramente que é necessário uma "revolução" no software, nos interfaces, no modo como interagimos com os computadores.

Fará sentido um computador capaz de executar centenas de milhões de operações por segundo passar 99% do tempo à espera que carreguemos numa tecla ou que cliquemos nos botões do rato?

Tal como o iPhone veio revolucionar o método como interagimos com um dispositivo móvel - relembre-se que o "Windows Mobile" já existe há anos, e que nunca foi um exemplo de uso intuitivo. Fazer uma chamada num smartphone windows é bastante mais complicado que fazer uma chamada num telemovel de 40 Euros - já para não falar em enviar mensagens, etc.

O problema não está no hardware: está na forma como estes interfaces "tradicionais" foram concebidos.

Há que relembrar que esses interfaces foram concebidos dessa porque não se podia fazer melhor. Um ambiente gráfico, com janelas e rato eram o suprasumo da tecnologia existente - o ambiente WIMP (Windows, Icons, Menu, Pointer device) foi idealizado em 1980, e tem subsistido com poucas (ou nenhumas) alterações até aos nossos dias.

Estamos portanto a usar interfaces concebidos há mais de um quarto de século, quando os computadores trabalhavam a poucos Mhz, e onde 1Mbyte de RAM era um sonho bastante dispendioso.

Multipliquem-se essas capacidades vários milhares de vezes... é o que temos num "vulgar" computador dual/quad core actual. Com Ghz de velocidade, vários processadores, Gbytes de RAM... e no entanto, quado chega à forma de intergir com tudo isso: o mesmo interface básico que sempre tivemos.
Não será possível usar toda esta potência de melhor forma?

Os investigadores acreditam que sim. Finalmente pode considerar-se, de forma realista, que os computadores se tornem assistentes pessoais que efectivamente nos poupem trabalho - em vez de nos darem cada vez mais - gastanto cada vez mais tempo a "folhear" toda a informação que nos apresentam.
Tal como é referido no artigo do NY Times, porque não pode o computador analisar os nossos emails e sugerir automaticamente respostas?
Informar-nos:
- Recebeu um email de tal pessoa a marcar uma reunião para o dia x às tantas horas.
Ao que poderíamos responder: sim, confirmar - ou então, não agendar para outro dia.
E o computador encarregar-se-ia disso.

Aplicações que hoje parecem ficção científica, mas que são essenciais para que não fiquemos preso nesta "tradição" do rato e do teclado que têm atrasado o desenvolvimento dos interfaces homem/máquina.

Aliás, há não muitos anos atrás, enquanto me entretinha a folhear os "Atlas" e a percorrer mapas de países e continentes; a ideia de algum dia poder usar um computador para poder ver com enorme detalhe toda a superfície do planeta, viajando até ao lugar mais recôndito, podendo ver a vista da estrada de muitas cidades também pareciam inacreditáveis - e no entanto, qualquer criança acha isso normal hoje em dia.
Portanto... espermos que os próximos anos nos tragam novas revoluções que demonstrem que o poder dos CPUs actuais servem para mais que "gastar" electricidade.

1 comentário:

  1. Para aproveitar todo o processamento nada melhor que tecnologias baseadas em Grid.

    Ainda estamos longe mas achei graça ao "workaround" utilizado pelo Folding@home para utilizar os vários cores das máquinas actuais.

    O MPI já existe há vários anos "mas sempre para uma utilização sobre rede". O que os gajos fizeram foi portar a aplicação deles para utilizar MPI e correm o software na máquina local especificando o número de cores da máquina. Alta ideia!

    É claro que a programação paralela continua a ser algo extremamente complexo e difícil de utilizar (especialmente para as tarefas mais comuns e não grandes cálculos).

    Fiquei satisfeito em saber da classe "Parallel" incluída com a framework 3.x do .NET que ajuda bastante a "paralelizar" o nosso código!

    Hugz,
    Luís

    ResponderEliminar