É sabido que o Brasil prioriza obras de infra-estrutura e outras coisas à qualquer tipo de investimento da ciência. O motivo é óbvio: foda-se a ciência. Ninguém liga pra ela, a não ser quando está mexendo no seu computador para ver aquela pornografia ou quando a gripe suína aperta.
A consequência óbvia disso é que boa parte do desenvolvimento científico no Brasil se dá em forma de correr atrás do que já está pronto. Infelizmente, muitas pessoas rechaçam isso como se fosse culpa dos pesquisadores. O ponto é que conhecimento não simplesmente PANS no seu cérebro e está lá. Ele precisa ser construído. Construir um veículo robótico autônomo é difícil pra caralho, e sair do zero para competir no DARPA Urban Challenge com gente que faz isso há 20 anos é um pouco mais foda que ficar de mimimi critanco em um blog.
Talvez por isso há um culto pelo estrangeiro no Brasil, principalmente no que tange a tecnologia e ciência. Tudo que é brasileiro é ruim. Tudo que é de fora não. O que, na minha humilde opinião, é uma babaquice. E se você pensa assim, só digo uma coisa: tomara que não aconteça nada para você porque não desejo mal para ninguém. Mas não há nada além da abundância de dinheiro e o conhecimento prévio que faz os pesquisadores de lá melhores que os daqui.
Posto isto, tentarei aqui, humildemente, fazer breves apresentações de projetos científicos bacanas de pesquisadores brasileiros que eu conheço.
Para começar, nada mais fácil que falar em algo que conheço bem, como o projeto no qual participo. O ChipCflow.
O ChipCflow é um projeto idealizado pelo Prof. Dr. Jorge Luiz e Silva, e tem como intuito construir um sistema capaz de mapear grafos dataflow dinâmicos em hardware parcialmente reconfigurável.
Se você é um ciêntista da computação PROFISSIONAL formado em uma universidade CATÓLICA que não sabe que o é uma BESTEIRA DESSAS, parabéns, você é como eu era antes de conhecer o projeto. Então vamos lá:
Dataflow
O modelo de computação baseado em fluxo de dados (dataflow) se deu por início na segunda metade do século passado. As arquiteturas de processadores tradicionais, de propósito geral, executam instruções uma de cada vez. OU SEJA, um programa de computador é um amontoado de instruções que são executadas em sequência. Sem entrar em detalhes, o modelo tradicional facilita muito a computação. Basta você ter as instruções na ordem correta.
O modelo baseado em fluxo de dados, diferentemente, baseia sua execução na medida em que os dados estão disponíveis. Na LENDÁRIA ANALOGIA DA TROCA DE LÂMPADAS, ao invés de você ter uma pessoa só que faz, passo-a-passo, o processo todo de troca de lâmpada (acender, verificar se está queimada, retirar a queimada, por a não queimada, testar etc) você teria várias pessoas fazendo cada passo. Enquanto uma está tirando a lâmpada queimada, outra está buscando a nova lâmpada para agilizar o processo, tá ligado?
A vantagem desse modelo é que quando várias tarefas (instruções, para ser mais exato) podem ser feitas simultâneamente, o processo todo acaba antes. Isso é chamado de throughput Imagina você só fazer o arroz depois de terminar o feijão. Vai demorar mais do que se você fizer o feijão e o arroz simultâneamente, já que nem e o arroz e nem o feijão dependem um do outro para serem feitos.
Eu já falei sobre esse projeto para a Sarah Palin, e quando terminei de explicar o conceito de processadores baseados em fluxo de dados, ela me indagou:

Tudo bem, Chiquinho, seu lindo, mas para quê eu vou pesquisar isso se com a lei de Moore todos sabemos que a quantidade de transistores dos chips dobra a cada 24 meses? Isso não é meio desnecessário? *Em tradução livre.
Sem dúvida foi uma pergunta bastante inteligente desta nobre mãe de família norte-americana. O ponto é: não é certo que a lei de Moore durará para sempre. Aliás, ela é apenas uma leitura da tendência atual das coisas. A própria Intel acha que ela não durará mais que 10 anos. Sem contar que o simples fato de duplicar os transistores em um chip não necessariamente significa duplicar a velocidade. Existem outras barreiras a serem transpostas, que não serão discutidas aqui porque vocês não tão nem ai.
Hardware Reconfigurável
Um hardware com a capacidade de se reconfigurar nada mais é do que um hardware que pode reconfigurar seu circuito interno. Você deve estar se perguntando: “quêeeeee????”, mas esse é um conceito extremamente bacana. Veja a imagem abaixo:
Você pode estar rindo, o que é muito feio, porque rir da falta de informação alheia é pior que xavecar a própria irmã. E o pior: se a pergunta fosse um pouco diferente, o diálogo seria assim:
Suzana: por favor onde acho pra baxar o PROCESSADOR OPEN SPARC pra eu usar com no mínimo 300Mbz
* PECO: baixar o que?? open sparc? hahahahahha
Rodrigo: Open Sparc é um processador (hardware) e você compra na loja… Deve ser Windows que você tá falando… só pode ser… eu vou chorar… sério… to quase…
Suzana: meu amigo calaboca você não sabe de nada vai rir da sua avó aquela puta o Open Sparc é um processador open source e eu já achei onde baixar sua especificação é em http://www.opensparc.net vou sintetiza-lo e configura-lo no meu FPGA Xilinx Virtex 5 e chupa meu pau
Rodrigo: mãs
Suzana: mas nada vaza de cocoras
Sim, amigos. É isso o que o hardware reconfigurável permite: que você crie especificações de circuitos e coloque-as em dispositivos com essa capacidade. Se todos os chips tivessem essa capacidade, poderia-se sim, por exemplo, baixar a especificação do Pentium 4 (caso a Intel a liberasse, é claro) para reconfigura-la.
Hardware reconfigurável é um termo genérico para o conceito. O FPGA (Field Programmable Gate Array) e o CPLD (Complex Programmable Logic Device) são os produto mais populares e conhecidos com esse atributo. Normalmente, quando você ouvir falar de hardware reconfigurável e Computação Reconfigurável, as pessoas estarão se referindo aos FPGAs ou CPLDs.
Agora você deve estar se perguntando: “nossa super hi-tech isso foi criado recentemente né?”. Errado. O conceito de hardware reconfigurável é mais velho que sua avó e o FPGA foi comercialmente lançado pela primeira vez pela empresa Xilinx, no meio da década de 80.
É claro que na época o hardware era praticamente inútil para a maioria dos casos, mas hoje ele é muito utilizado no meio acadêmico e timidamente está entrando em produtos comerciais também.
A Sarah Palin não é mole não. Quando eu tava nessa parte ela também me questionou:

Mas Chiquinho para quê você quer criar processadores novos sozinho e do zero se os processadores da ARM, Intel, AMD etc vão ser sempre muito melhores???
Você não entendeu nada Sarah Palin você é 1 anta mesmo. O ponto não é recriar o que já tem de melhor, o ponto é outro. A grande vantagem de um hardware perante um software é a velocidade, certo? O hardware é mais rápido, até porque, um software executa em cima de um hardware. Então, imagina se você, ao invés de fazer um software de um algoritmo, fizesse um hardware desse algoritmo?
Pois é. Antigamente isso era muito difícil, mas com as tecnologias atuais como o FPGA, que permite uma rápida prototipação – você não precisa efetivamente fabricar um novo chip para cada hardware que você criar – isso ficou fácil e agora é muito mais explorado.
Só tem um problema: continua difícil d+ criar hardwares. O tempo de se descrever um hardware é muito maior que o tempo de se programar um software. Além disso, é muito mais difícil achar gente que cria hardwares do que gente que programa softwares.
Então é aí que o ChipCflow entra….
O ChipCflow é (digo, será) uma ferramenta de compilação de uma linguagem de programação para hardware que utiliza o conceito de fluxo de dados e hardware reconfigurável. Dessa forma, sua intenção é pegar um código em C – que é essencialmente sequencial – converte-lo para o modelo de fluxo de dados – essencialmente paralelo – e, a partir desse modelo de fluxo de dados, criar sozinho um hardware que será reconfigurado e executado em um hardware reconfigurável.

Mas isso dá certo?????
Não sabemos! Essa é a graça da ciência: você está lá para pesquisar, não para fazer coisas que você sabe que vão funcionar. É claro que temos a impressão de que isso um dia irá simplesmente funcionar, “bem” ou “mal”. Mas não dá pra saber como e quando. Por isso se chama pesquisa! No meu mestrado, por exemplo, a proposta não “deu certo”. Simples assim. Foi isso que defendi (com sucesso yesss): a ideia que tinhamos não funcionou totalmente.
Mas mesmo assim conseguimos resultados interessantes. Por exemplo, no modelo mais rudimentar, conseguimos um desempenho equivalente à um processador Core 2 Duo em uma aplicação não-tão-paralelizável. E você pode falar: foda-se, melhor pegar um Core 2 Duo então ué. Mas tenha em mente:
- Faz só três anos que estamos pesquisando isso!
- O preço do chip FPGA utilizado é muito inferior ao processador, o consumo de energia também.
- Quem sabe o que vem pela frente? E se, através dessa ferramenta, conseguimos criar um modelo melhor ainda que os atuais? Nunca se sabe!
Finalmente, eu sugiro que vocês visitem o site oficial do ChipCflow caso tenham se interessado pelo assunto, lá há informações sobre as publicações mais recentes (inclusive minha recente defesa!
) e vocês podem se aprofundar um pouco mais no modelo. Sugiro pesquisarem no site Teses Usp as dissertações dos mestres Lucas, Vitor e a minha, assim que estiver disponível.
Um abraço pros meninos e um beijinho pras meninas rsrsrs (mentira só pra minha namorada sai daqui suas baranga!!!)




Pingback: Tweets that mention Ciência no Brasil parte 1- ChipCflow » pla.net.br - -- Topsy.com