(void *)0

Tempo de terminar o mestrado. Implementações, testes, validações, escrita de monografia... Então, enquanto eu não posto nada, vejam meu Twitter ou visitem meu Flickr.

Enquanto isso, fiquem com essa musiquinha: http://www.youtube.com/watch?v=bzx_nZKrFTU

January 28, 2010 at 2:23am | 2 Comments

Novo domínio e outras coisas

Com a recente liberação dos domínios .net.br para o público, depois de um período de 6 meses para que as pessoas ou empresas detentores dos domínios .com.br pudessem comprar seus endereços homônimos .net.br, eu consegui pegar um novo domínio .net.br. Agora, esse site pode ser acessado pelo endereço chico.net.br.

E isso também significa que....

EU AGORA TENHO UM E-MAIL CHICO@CHICO! HAHAHA! Um sonho de infância que foi realizado.



Outra coisa, estou no último semestre do mestrado e entregando minha proposta de projeto de doutorado. O que denota a falta de tempo para escrever algo aqui (mesmo se eu o tivesse, o blog teria atualizações lentas, então tanto faz).

Todavia, a boa notícia é que eu estou tentando mudar levemente de área. Desde o final da graduação eu tinha a intenção de trabalhar com robótica, o que acabou sendo postergado, já que o projeto de mestrado em que fui encaixado é de computação reconfigurável. O que, de forma alguma, foi ruim. Eu tive acesso aos conhecimentos de uma área que nunca tinha ouvido falar antes e que expandiu meus horizontes sobremaneira.

Agora, a idéia é ir para robótica mas sem abandonar a computação reconfigurável, algo que o grupo de pesquisa SEER do ICMC já tenta fazer. Elas são áreas fascinantes e a computação reconfigurável apresenta soluções que se encaixam perfeitamente nos problemas da robótica móvel.

Quando eu achar que tenho competência, apresento alguns artigos sobre robótica móvel aqui.

Abraços

October 28, 2009 at 12:14pm | 2 Comments

DeBandeja

Há um tempinho atrás, eu arranjei um brinquedinho novo: um usadíssimo e barato Nokia E51 (na verdade, dois, mas isso não é relevante). Eu escolhi esse modelo porque ele utiliza Symbian Series 60 que suporta Python for S60. Para quem não sabe, PyS60 é um port de Python para a série 60 do Symbian.

Com a intenção de aprender PyS60, eu fiz um programinha para suprir a necessidade de algo que eu sempre senti falta: ter facilmente em mãos o cardápio do Bandejão da USP de São Carlos. Eu carinhosamente apelidei-o de DeBandeja (sugestão do Marcelo Barros, que também ajudou com algumas bibliotecas antigas que havia feito para seus próprios programas para PyS60; além de me fazer ficar com vontade de programar para PyS60! :) ). O DeBandeja é o que parece: um simples programa que mostra na tela do celular o cardápio do Bandejão da USP de São Carlos. Vejam uma tela dele funcionando no emulador:

debandeja.png
Hummm! Massanha ao molho de bolonhesa!

Ele foi feito em PyS60, utilizando a biblioteca gráfica padrão do Symbian (como pode ser visto na figura). Ele não tem muitos recursos: grava na memória inteira do celular o cardápio da semana, só atualiza conforme há a necessidade e faz o que precisa ser feito.

O download (caso você tenha um S60 também) pode ser feito na página do projeto. Ele não funciona com PyS60 1.4.x e está licenciado sob a GPLv3.

Espero que gostem! :)

September 18, 2009 at 3:34pm | 2 Comments

Novo-G, primeiro supercomputador reconfigurável do mundo

Notícia da Inovação Tecnológica, link aqui

Já existem supercomputadores que incorporam FPGAs, como o Cray XD1. A diferença, que me parece nesse caso, é que esse é um super computador que utiliza apenas tecnologia reconfigurável.

Ainda não li publicações e nem me informei sobre. Se achar algo interessante, posto aqui. :)

August 5, 2009 at 4:23pm | 0 Comments

O que é Computação Reconfigurável?

Muitas pessoas me questionam o que é CR, já que esse é um campo da computação pouco, digamos, popular. Ao contrário da IA (embora muita gente, infelizmente, tenha uma idéia equivocada e ache que IA esteja totalmente relacionada ao filme homônimo; mas isso é assunto para outro post, e talvez eu não seja a pessoa certa para falar sobre isso), pouca gente conhece a CR. Não sei se posso dizer isso, mas a impressão que tenho é que a maioria das instituições de ensino superior do país, inclusive as que oferecem curso de Engenharia da Computação (o que, na minha humilde opinião, tem mais a ver com CR do que Ciências de Computação) não abordam a Computação Reconfigurável em seus cursos.

Um livro bastante interessante e relativamente atualizado (2007, até onde sei) para os interessados na área e não para o público em geral, é o livro de Christophe Bobda, chamado Introduction to Reconfigurable Computing: Architectures, Algorithms, and Applications. Nesse livro, ele cita várias arquiteturas reconfiguráveis, processo de síntese de circuitos com FPGAs, reconfiguração parcial (mas que, aqui, infelizmente, está com conteúdo defasado) e outras coisas que eu ignorei por serem menos importantes para mim.

CR, é, em termos bastante imprecisos, a capacidade de se mudar o circuito de dentro de um chip. É claro que fisicamente não é isso o que acontece. Na verdade, o que se passa é que os chips são criados de forma com que suas estruturas possam emular diferentes circuitos. Atualmente, a maioria das pesquisas de CR se concentram em utilizar a tecnologia FPGA, que nada mais é do que uma arquitetura que permite que - ressalvando restrições físicas - qualquer circuito possa ser colocado dentro do seu chip.

Mas qual sua utilidade?

Os computadores atuais apresentam processadores de propósito geral, baseados no modelo de von Neumann. Esse modelo permite uma grande flexibilidade na programação ao custo do desempenho. Ou seja, embora hoje a velocidade dos novos processadores comerciais seja espantosa, há, ainda, uma grande degradação nessa velocidade em detrimento da flexibilidade que nos garante que uma grande diversidade de algoritmos possam ser executados nos nossos computadores.

Ainda que haja exceções, a regra é que existe um custo/benefício entre desempenho e flexibilidade. Conforme queremos mais desempenho com a mesma tecnologia de fabricação do chip (e com as mesmas freqüências), as vezes a única opção é sacrificarmos a flexibilidade para criarmos circuitos mais específicos para o tipo de algoritmo que queremos executar. Esse tradeoff acontece, principalmente, porque os caminhos que os dados fazem dentro do chip são aumentados, conforme queremos uma estrutura mais genérica e flexível; o oposto também é verdadeiro: não precisando dessa flexibilidade, alguns caminhos podem ser diminuídos. Embora o tempo em que sinais elétricos percorram o chip seja ridiculamente pequeno (ordem de picosegundos em tecnologias mais rápidas), a constante repetição de instruções pode tornar determinado algoritmo lento, o que faz necessária essa engenharia no circuito.

CRASICGraph.png
Gráfico que mostra a contradição entre desempenho e flexibilidade. Adaptado de [1]

E quando precisamos dos dois? Quando não é possível abrir mão da flexibilidade para ter desempenho? Para isso é que a CR existe: ela tem a proposta de ter o desempenho de chips para execução específica de circuitos com a flexibilidade de processadores de propósito geral. Digo, a "proposta", pois, conforme eu já disse, os circuitos não são realmente modificados no chip, apenas reconfigurados. Dessa forma, um circuito emulado dificilmente terá o mesmo desempenho de um circuito real utilizando a mesma tecnologia. Da mesma forma, a flexibilidade que se tem com esse tipo de hardware ainda não é a mesma que processadores de propósito geral, seja pelas dificuldades práticas de se programar (devido à maior complexidade das linguagens para descrição de hardware) ou seja pelas dificuldades técnicas (tamanho do chip e outras coisas).

Enfim, como não pretendo me aprofundar no assunto aqui, sugiro apenas que dêem uma pesquisada na internet sobre o assunto e recomendo os textos da Wikipédia sobre FPGA e Computação Reconfigurável (em inglês).

Referências e fontes consultadas

[1] Introduction to Reconfigurable Computing: Architectures, Algorithms, and Applications

August 3, 2009 at 7:41pm | 2 Comments

 1 2 Next →