Quando Azevedo recarrega a música, agora conectando o descompressor de programas desenvolvido no IC, a voz rouca e envolvente enche a sala, num som contínuo. “Preparamos este exemplo para demonstrar com nitidez a diferença de desempenho, que chega a 25%. Na primeira versão, o processador decodifica cerca de 40 mil amostras por segundo, enquanto a música pede 44 mil; na segunda, com o descompressor ativado, atinge 48 mil”.
O docente esclarece que seu grupo de pesquisadores no IC, na verdade, trabalha em compressão de programas. O propósito é gerar uma cópia do programa original com o uso de menos bits, que depois é carregada e descomprimida por um artefato de hardware. “Nas primeiras pesquisas na área, com os computadores de pouquíssima memória das décadas de 1960 e 70, o desafio aos projetistas era codificar as instruções da forma mais compacta possível, fazendo com que o programa coubesse na memória”.
Mudanças de arquitetura nos processadores e soluções alternativas contribuíram para que a memória, por bom tempo, deixasse de ser problema. A compressão de dados, contudo, prevaleceu como uma das tecnologias por trás da chamada revolução nas comunicações. Com Internet, telefonia celular, TV digital, não haveria como armazenar e transmitir volume tão grande de imagem, áudio e vídeo sem compressão.
Rodolfo Azevedo aponta o início da década de 1990 como do surgimento desta outra leva de pesquisas, agora envolvendo a compressão de códigos que é a parte que contém o programa. “Havia memória suficiente, mas surgiu um problema novo: a velocidade do processador tornou-se bem maior que o da memória. Como na conhecida fábula, a tartaruga não deixa de estar correndo, mas o coelho corre muito mais rápido”.
De acordo com o professor, o usuário do computador pessoal já dispõe da quantidade e da velocidade de memória de que necessita, dispondo-se a pagar o preço. Porém, a situação é menos cômoda no caso dos sistemas dedicados, que estão embutidos tanto em aeronaves ou satélites, como em celulares, computadores de mão (handhelds) e MP3 players.
Nestes sistemas embarcados, o computador é completamente encapsulado, o que implica otimização de tamanho, de recursos computacionais e de custos. “Se, nos 60 e 70, era preciso fazer o programa caber na memória, os projetistas, ao invés de arquitetar processadores novos, passaram a desenvolver artifícios para que a memória caiba dentro deles”.
Os estudos, portanto, visam ao uso de técnicas de compressão de código para satisfazer a um volume de software maior ou uma menor área de silício dedicada à memória. Mais recentemente, os pesquisadores perceberam que a compressão de código também pode proporcionar uma redução no consumo de energia e melhorar o desempenho de um sistema computacional.
O conceito, segundo Azevedo, é de que a compressão, ao tornar o programa menor, diminui a necessidade de acessos à memória lenta para buscá-lo. “A redução na quantidade de idas à memória é proporcional à economia de energia e ao ganho de desempenho. Os três itens estão bem relacionados e, no nosso protótipo, embora os valores não sejam exatamente iguais, oscilam em torno dos 25%”.
Mais de década O grupo do IC está envolvido nesta linha de pesquisa há mais de uma década e nela prossegue. Quando Rodolfo Azevedo defendeu seu doutorado apresentando uma técnica de compressão de programas, já havia duas teses sobre o tema. Ele co-orientou uma tese posterior e foi seu mestrando, Eduardo Afonso Billo, que desenvolveu este protótipo. “Na verdade, Billo aprimorou o trabalho do doutorando Eduardo Bráulio Wanderley Netto. Todas as nossas pesquisas se somam”.
No intuito de oferecer uma idéia mais simplificada sobre a técnica, Azevedo menciona um recurso bastante utilizado pelos usuários de computador, que é o de compactar um arquivo passando-o pelo zip. “Fazemos algo similar, mas há uma grande diferença, já que um programa possui duas partes: uma que são as instruções para o processador e, outra, que são os dados. Ou seja, se quero imprimir algo na tela, o que vou imprimir são os dados; já os comandos para esta impressão, são as instruções do processador”.
Os pesquisadores do IC agora tentam tornar o protótipo mais disponível para o dia-a-dia, o que não significa transformá-lo em produto, mas atender a outras demandas. “Aqui, tocamos apenas uma música, mas as pessoas vão querer rodar várias aplicações simultaneamente. Surgem, então, novos problemas: como tratar vários programas ao mesmo tempo; como compilar o programa já comprimido; como encaminhar o fluxo completo e de forma mais controlada”.
Miniaturização Rodolfo Azevedo afirma que o protótipo desenvolvido no IC, a priori, poderia ser utilizado, por exemplo, para decodificar músicas em MP3 players, embora mostre a placa de prototipação com tamanho bastante desproporcional, onde um mero botão já é bem maior do que qualquer dispositivo interior. “A miniaturização é outra fase, mas plenamente factível. A pilha e o display do MP3 gastam muito mais espaço que o chip embutido”.
Na realidade, o tamanho do descompressor equivale a apenas 1% da área total do processador embutido em um chip. “É um processador normal, utilizado inclusive pela Agência Espacial Européia. Aumentar sua área em um por cento representa um custo muito baixo diante de todos os ganhos que oferece”.
Azevedo enfatiza que gerar produtos não é foco do seu grupo, mesmo porque algumas pesquisas já têm vários anos, tendo sido extrapolado o prazo para pedido de patente dos itens contidos na demonstração. “Não temos experiência na área industrial, mas creio que o protótipo, se pudesse ser levando para uma empresa, seria transformado em produto em seis meses ou um ano”.
Grupo leva seu conhecimento
à arquitetura de computadores
O professor Rodolfo Azevedo informa que seu grupo no Instituto de Computação vai prosseguir nas pesquisas com compressão de códigos, com a chegada de três alunos que iniciaram em março seus estudos com diferentes focos. Além disso, os pesquisadores começam a atuar em nova vertente, a busca de outras formas de arquitetura de computadores, o que já rendeu um doutorado defendido em meados de 2007 e um mestrado apresentado em fevereiro último.
“Temos resultados interessantes, visto que aproveitamos nosso conhecimento acumulado na área de compressão para chegar à arquitetura de um processador com instruções menores, reduzindo bastante a quantidade de memória que se gasta. Obviamente, trata-se de um processador novo, que ainda precisa ser bastante aprimorado”, explica o docente.
Ainda nesta área, Rodolfo Azevedo ressalta outra tese de doutorado desenvolvida no IC, por Edson Borin, com orientação do professor Guido Araújo, envolvendo compressão de microcódigos. O docente explica que o modelo é o mesmo, mas aplicado às instruções internas do processador. “Certos processadores precisam transformar as instruções dos programas em instruções mais simples que saibam executar. Para isso, eles contêm tabelas com o roteiro que devem cumprir para cada instrução, o que chamamos de microcódigo”.
Azevedo acrescenta que, como certas instruções podem exigir mais de três destas instruções simples, o trabalho do aluno foi comprimi-las a fim de ganhar espaço, o que viabilizaria a produção de um chip menor. “Ele simulou esta redução por dentro do processador, usando as mesmas técnicas de compressão de códigos e algumas variações, conseguindo bons resultados”.
O docente informa que este trabalho foi realizado por meio de uma cooperação entre Unicamp e Intel, com apoio do Ministério de Ciência e Tecnologia. “Após concluir seu doutorado, Edson Borin foi contratado pela Intel e hoje trabalha nos Estados Unidos”.