domingo, 4 de abril de 2010

Computadores não devem jogar dados

Ao discordar da então nascente Mecânica Quântica, Einstein afirmou que aceitar suas bizarras leis seria o mesmo que afirmar que Deus estaria jogando dados no Universo.

O brasileiro Luis Ceze, cientista da computação atualmente lecionando na Universidade de Washington, nos Estados Unidos, restringe um pouco mais suas preocupações: segundo ele, computadores não devem jogar dados.

Computadores indecisos

Para Ceze, se você inserir o mesmo comando no computador, ele deve sempre dar a mesma resposta.

E isso talvez possa soar estranho para a maioria dos usuários de computador, e mais ainda para os verdadeiramente apaixonados por tecnologia - mas a verdade é que isto está longe de ser verdade.

Segundo Ceze, os computadores mais modernos costumam se comportar de forma largamente imprevisível.

"Com os sistemas mais antigos, com apenas um processador, os computadores se comportam exatamente da mesma forma contanto que você dê a eles os mesmos comandos. Mas os computadores atuais, de múltiplos processadores, são não-determinísticos. Mesmo se você der a eles o mesmo conjunto de comandos, você poderá obter um resultado diferente," afirma o pesquisador.

Bugs nos computadores multi-core

Nos velhos tempos, cada computador tinha um processador. Mas todos viram que isso não era tão bom quanto poderia ser. Ou, pelo menos, não tão rápido.

O resultado é que hoje as máquinas vendidas no comércio têm vários processadores - estar atualizado exige adquirir um computador dual-core, ou mesmo quad-core. E isso falando apenas dos computadores domésticos. Os supercomputadores têm milhares de processadores rodando paralelamente.

De certa forma as coisas melhoraram, porque os computadores de múltiplos processadores rodam os programas mais rapidamente, custam menos e gastam menos energia.

Por outro lado, vários processadores são responsáveis por erros difíceis de rastrear, que frequentemente fazem os navegadores e outros programas travarem de repente.

"Com os sistemas multi-core, a tendência é ter mais bugs, porque é mais difícil de escrever código para eles," afirma Ceze. "E lidar com estes bugs simultâneos é muito mais difícil."

Caos nos computadores

Para Ceze, o que acontece é o mesmo clássico problema do caos, frequentemente exemplificado pelo bater das asas de uma borboleta que inicia um processo que vai acabar em um furacão do outro lado do globo.

O compartilhamento de memória dos computadores modernos exige que as tarefas sejam continuamente transferidas de um lugar para outro. A velocidade na qual essas informações viajam pode ser afetada por pequenos detalhes, como a distância entre as peças do computador, ou mesmo a temperatura dos fios.

Com isto, a informação pode chegar ao destino em uma ordem diferente, o que causa erros inesperados e difíceis de prever, mesmo no caso de instruções que rodaram bem centenas de vezes antes.

Computadores que não jogam dados

Incomodado com essa incerteza, Ceze e seus colegas afirmam ter desenvolvido uma técnica para tirar os dados das mãos dos computadores, fazendo com que os sistemas multi-core mais modernos também se comportem de forma previsível.

A técnica consiste em subdividir os conjuntos de comandos dados ao processador e enviá-los sempre para locais específicos, eliminando a variabilidade existente hoje, que acaba por tirar os dados de ordem.

Os conjuntos de comandos são calculados simultaneamente, de forma que o programa bem-comportado continua rodando mais rápido do que aconteceria em um computador com um único processador.

Um programa baseado na nova técnica foi apresentado durante a International Conference on Architectural Support for Programming Languages and Operating Systems, que aconteceu em Pittsburgh, na semana passada.

A vantagem de repetir os erros

Um dos grandes méritos do programa que Ceze e seus colegas desenvolveram é que ele permite reproduzir os erros, facilitando o processo de debugar o programa - seguir o funcionamento do programa passo a passo de forma a localizar a fonte do erro.

"Nós desenvolvemos uma técnica básica que poderá ser usada em uma grande variedade de sistemas, de telefones celulares até data-centers", afirma Ceze. "Em última instância, eu quero tornar realmente fácil para as pessoas projetarem sistemas de alto desempenho, com baixo consumo de energia e seguros."

Os resultados do programa são tão promissores que Ceze e seus colegas fundaram uma empresa, a PetraVM, para comercializar sua criação.

Nenhum comentário: