Translate

sexta-feira, 15 de outubro de 2010

A SÍNDROME DE VON NEUMANN

Fonte: Vida, Ciência e Tecnologia de 11.10.2010
No início da era da Computação, vários foram os esforços para que computadores mais eficientes fossem desenvolvidos, mas que principalmente houvesse um padrão de arquitetura. Arquiteturas heterogêneas implica em também diversas metodologias e paradigmas de programação.

Na década de 30 John Von Neumann, então professor e pesquisador da Universidade de Princeton, EUA, propôs uma arquitetura que revolucionou a computação. Desde então não se viu inovação que impactasse tanto a humanidade.

O que ele propôs foi que deveria haver uma memória que armazenasse tanto dados, como instruções a serem executadas por uma Unidade Central de Processamento (CPU). Tal unidade seria também responsável por ler a instruções dessa memória – armazenadas em código – decodificá-las e então executá-las. Essa proposta foi rapidamente acatada pela comunidade acadêmica e industrial devido a grande flexibilidade que isso significava. Como as instruções poderiam ser armazenadas em memória, fazer com que o computador executasse novas operações desejadas, bastaria escrever uma nova seqüência de instruções na memória. Daí se popularizou o software! Sendo assim, podemos dizer que Von Neumann é o pai do Software?

Aliada a essa inovação, uma outra criação veio revolucionar a humanidade. O transistor digital baseado em silício. Ele permitiu que computadores pudessem ser fabricados de larga escala. Com a miniaturização crescente dos transistores, processadores puderam ser fabricados cada vez menores e com mais transistores, portanto, com maior capacidade de processamento e maiores memórias para dados e a programas cada vez mais complexos.

Assim que os primeiros transistores começaram a ser fabricado, o cientista Gordon Moore, que acabava de fundar uma empresa com mais dois amigos para fabricação de microchips (a Intel) fez uma previsão no mínimo animadora. Ele previu que a tecnologia de fabricação de chips iria avançar tanto, que a cada 18 meses, o dobro de transistores seria colocado num chip sem que o preço de fabricação fosse modificado. E o que isso significava? Os processadores iriam dobrar sua velocidade a cada 18 meses! O mais lógico seria chamá-lo de ingênuo, ou simplesmente ignorá-lo. Isso se depois de um ano e meio depois sua previsão não tivesse se tornado realidade. Mais do que isso, sua previsão virou lei, sendo denominada Lei de Moore e tornou uma meta industrial! Toda a comunidade científica passou a buscar criar processadores cada vez mais rápidos, e parecia sempre muito gratificante ver o crescimento da tecnologia acompanhar a reta descrita por Moore. Mas uma falha muito óbvia em sua lei é que nada cresce para sempre! Tudo tem um fim.

Hoje em dia, a base da Arquitetura de von Neumann, o software, pode ser considerada um overhead. A vantagem do software é a flexibilidade que ele permite ao hardware. Cada instrução pode detalhar o que o hardware deve executar. Mas ao mesmo tempo, os passos básicos de processamento de instrução é geralmente muito custoso: carregamento, decodificação, carregamento de dados, execução e armazenamento de resultados. Como o avanço das memórias não acompanhou o avanço da velocidade de processamento, os processadores hoje são cerca de 3x mais velozes que as memórias mais rápidas.
Sendo assim, o excesso de dependência dos processadores de acesso a memória (típico da Arquitetura de von Neumann) torna os computadores máquinas de baixíssima eficiência, tanto no processamento, quanto no consumo de energia! Para se ter uma visão mais concreta dessa ineficiência, basta observar quanto tempo o processador passa realmente processando dados. Numa máquina RISC típica, 5 ciclos de clock são necessários para cada instrução. Desses, apenas um (20%) é usado na execução propriamente dita da instrução. Se os dados necessários não estiverem na Memória Cache, isso pode piorar, caindo para cerca de 14,3%. Essa ineficiência pode ser reduzida se o processador usar Pipeline, mas isso dependerá de um bom compilador, de boa técnica de programação e de como o usuário irá usar o sistema.

Uma pergunta que você deve estar fazendo no momento é, se os computadores que conhecemos hoje não são eficiente, o que seriam então? Estariam todos errados e apenas esse cara que escreve esse blog estaria certo?

Há outras arquiteturas de computadores mais eficientes do que os processadores que conhecemos. A Computação Reconfigurável é uma tendência muito forte nesse sentido. Ela pode ser muito mais rápida, mais barata e consumir menos energia do que os processadores que conhecemos. A diferença é que ela não é tão fácil (ainda) de programar, nem tão flexível quanto os softwares. Entretanto, pesquisas já têm mostrado que chips Dinamicamente Reconfiguráveis podem adicionar o grau de flexibilidade – e de competitividade – que essas arquiteturas precisavam para competir diretamente com processadores de propósito geral.

Mas se fôssemos adotar essas arquiteturas, o que nós profissionais precisaríamos? Mudar a arquitetura tão radicalmente necessitaria de novas linguagens, paradigmas e técnicas de programação. Esse é o principal problema! Teríamos que causar uma revolução na educação básica da computação! O que temos que nos perguntar é, vamos esperar os computadores entrarem em colapso para mudarmos de paradigma, ou devemos estar preparados para essa mudança? Se os computadores são tão ineficientes no uso da energia elétrica, o que diriam os grandes servidores espalhados pelo mundo?

Vamos nós da Ciência da Computação estarmos entre os principais causadores dos danos causados ao ambiente devido ao uso indevido da energia elétrica? Essas são questões que serão discutidas em outros momentos nesse blog. Mas uma coisa é certa, eu não vou ficar esperando quieto. E você?
fonte:http://www.sbpcpe.org/index.php?dt=2010_10_14&pagina=noticias&id=05982

Nenhum comentário:

Postar um comentário