Máquinas VLIW:
prósperas no conceito, fracassadas no mercado
Victor Lima de Figueiredo
Resumo: Este artigo foi desenvolvido com o intuito de apresentar as principais características de máquinas compostas por arquitetura VLIW (Very Long Instruction Word), sem antes expor seu histórico, sua origem, seus principais estudos e revoluções. Além disso, demonstra-se seu fracasso no mercado tecnológico das Máquinas VLIW, apesar de notável importância em seu conceito e possível prosperidade caso os inconvenientes e barreiras (que são listados nas seções 5 e 6) que este tipo de arquitetura implica fossem devidamente resolvidos.
Palavras-chave: VLIW; Paralelismo; Instruções.
1. INTRODUÇÃO
No mercado da Tecnologia da Informação, a exigência por eficiência e alta performance na freqüência do processamento de informações das máquinas e arquiteturas resultou na melhora dos computadores no decorrer dos anos, principalmente através da Computação de Alto Desempenho, que originou conceitos e pesquisas como a Computação Paralela.
Tradicionalmente, os softwares são escritos de forma a serem executados sequencialmente. Em outras palavras, cada algoritmo, cálculo, ou problema que o software precisa resolver primeiramente são implementados em instruções, que, posteriormente, são lidos por uma Unidade Central de Processamento. Porém, a computação sequencial possibilita que essas instruções sejam lidas e executadas somente uma de cada vez. Desta forma o desempenho da máquina fica comprometido.
A Computação Paralela poderia solucionar essa questão, uma vez que realiza diversos cálculos simultaneamente.
Uma proposta alternativa de Arquitetura de Computadores que engloba esse conceito de paralelismo são as Máquinas VLIW (Very Long Instruction Word), que foram praticamente esquecidas pelo mercado por volta dos anos 80. Ela executa ao mesmo tempo grupos de instruções longas em diversas unidades funcionais, multiplicadores, registradores, etc. Entretanto, esse processamento requer programação e compiladores muito complexos, possui incompatibilidade com arquiteturas convencionais, entre muitas outras desvantagens. Tais problemas aliados ao fracasso comercial pesaram tanto, a ponto do VLIW ser abandonado. Recentemente, a IBM e a HP são as únicas empresas que ainda apresentam poucas pesquisas na área.
2. HISTÓRICO
Os primeiros conhecimentos, análises e aplicações voltadas ao processamento paralelo foram caracterizadas pelo advento das máquinas SIMD (Single-Instruction stream, Multiple Data stream) durante a década de 70. “Esse tipo de arquitetura teve sua utilização voltada a atender o intenso volume de operações numéricas requerido durante o processamento de aplicações científicas [1]”. Outras tecnologias baseadas em instruções longas também haviam sido criadas e eram aplicadas em ROMs para diversos tipos de algoritmos. Entre elas estão os processadores do tipo array e processadores de sinais.
“Oficialmente, a história das máquinas VLIW inicia-se no final da década de 70, mais precisamente no ano de 1979 na universidade de Yale, quando Joseph Fisher descreveu a técnica de trace scheduling, que foi posteriormente utilizado para compilação de programas escritos em linguagens de programação convencionais para máquinas com longas palavras de instruções [2]”. Era uma técnica global de compactação de micro código que possibilitava, através de um compilador, a geração de código do tipo VLIW a partir de código seqüencial. Seguidamente, como efeito das descobertas, foram desenvolvidos o processador ELI-512 e o compilador “Trace Schedulling Bulldog”.
Em meados de 1984, Bob R. Rau e sua equipe deram origem à primeira corporação responsável por desenvolver computadores com tecnologia VLIW, a Cydrome Inc. Ela foi a responsável por colocar em prática a técnica de software pipeline que dava suporte arquitetural para loops escalonados.
No mesmo ano, Joseph Fisher e seus companheiros de faculdade fundaram a Multiflow Computer Inc. com o intuito de produzir os primeiros supercomputadores VLIW.
Em 1987, a Cydrome lançou o Cydra 5. Essa máquina possuía um simples processador numérico VLIW com palavras de instrução de 256 bits e capacidade de despacho de 7 operações por ciclo. Além disso, ainda possuía diversos processadores escalares para processamento de entrada e saída (I/O) e trabalhos de propósito geral. Enquanto isso a Multiflow Computer lançou Trace/200, que podia usar palavras de instrução de 256 até 1024 bits. Ambas tecnologias eram revolucionários. Entretanto, isso não resultou em valor comercial. Em 1988, a Cydrome encerrou suas operações. Em contrapartida, a empresa de Fisher produziu a Trace/300, como a segunda geração de computadores VLIW. Mesmo assim, não atingiu os resultados esperados, e, em 1990, a Multiflow Computer Inc se viu obrigada a fechar as portas devido a dificuldades financeiras.
A Multiflow foi comprada pela Hewllet-Packard e as pesquisas da Cydrome foram retomadas pela IBM, mas os investimentos não foram e não são até hoje, realmente efetivos.
Outros processadores VLIW de outras companhias também foram lançadas no mercado sem grande sucesso, como o Processador IA-64 ou Itanium da Intel, o Processador Crusoe da Transmeta, o Processador Trimedia da Philips, o Processador TMS320C62x DSPs da Texas Instruments. Além dos experimentais como o Processador Playdoh da HP, o Processador Tinker da North Carolina State University e o Processador de imagens Imagine em desenvolvimento na Universidade de Stanford.
3. CONCEITO
VLIW, do inglês Very Long Instructin Word, é uma arquitetura de CPU (Unidade Central de Processamento), que executa um grupo de instruções ao mesmo tempo, e assim, explora o ILP(“Instruction-level parallelism” ou paralelismo a nível de Instrução). O ILP é a quantidade de operações que um programa é capaz de executar simultaneamente.
Cada instrução, na verdade, é uma instrução longa, formada por um conjunto de operações que podem ser executadas em paralelo em diferentes unidades funcionais e bancos registradores.
Várias operações são codificadas em uma instrução através de palavras longas, que são montadas graças a um software que provém da técnica de escalonamento, aplicada a um compilador ou através de compactação de código gerado por um compilador convencional. A posição de cada operação dentro da palavra VLIW determina a unidade funcional que será usada. Operações que são executadas em paralelo são atribuídas à mesma palavra de instrução. Dentro de um mesmo bloco básico seqüencial estas instruções podem ser escalonadas com base no fluxo de dados. Já o escalonamento que ultrapassa as fronteiras entre os blocos básicos exige técnicas mais elaboradas. Logo, o desempenho computacional, deve-se ao tempo de compilação (software), e não ao tempo de processamento de dados por parte do hardware, pois é o próprio software quem encaminha paralelamente as instruções longas para as unidades de processamento.
Outro ponto importante de se ressaltar é que as instruções longas possuem uma pequena quantidade de grupos de instruções, além de se agruparem conforme a similaridade, ou seja, as que possuem as mesmas naturezas, funções ou efeitos se reúnem, sendo relativamente simples a relação delas com a máquina. Todavia, com o objetivo de facilitar as tarefas do hardware, cada instrução especifica o estado de todas as outras (funções a executar, funções em execução, destino, localização), assim como todas as unidades funcionais do sistema, o que reflete em um tamanho muito grande de cada instrução. Portanto, se faz necessária uma programação e um compilador bastante complexos, o que gera vários erros e problemas.
4. MÁQUINA VLIW IDEAL
“Na realidade a arquitetura VLIW é generalizada a partir de 2 conceitos bem fundamentados: micro código horizontal e processamento superescalar [3]”.
Uma máquina VLIW ideal (Figura 1) possui instruções compostas por palavras com centenas de bits, um grande banco de registradores em comum, compartilhadas por todas as unidades funcionais do sistema, que executam todas as operações sincronizadas em instruções longas simultaneamente, onde cada instrução é encaminhada para uma unidade funcional determinada por opcodes presentes no micro código horizontal (Figura 2) da instrução, o que caracteriza o processamento superescalar.
Figura 1: Máquina VLIW Ideal
Figura 2: Micro Código Horizontal
5. VANTAGENS
A partir das funções e resultados-fim da arquitetura VLIW que são refletidos em suas vantagens, percebe-se a grande potencialidade que esse tipo de arquitetura carrega, apesar da falha comercial. Entre as principais vantagens estão:
I. As Máquinas VLIW baseiam-se totalmente no compilador. Isso propicia uma maior liberdade de otimizações da arquitetura através do escalonamento de instruções, pois existem poucas restrições no acesso dos recursos do processador;
II. O compilador tem conhecimento prévio de todos os efeitos das operações sobre a arquitetura, como por exemplo, a latência de cada unidade funcional. Como a execução é regida por um clock global, o compilador está apto a resolver conflitos estruturais e de dados em tempo de compilação, o que dispensa mecanismos de sincronização em tempo de execução;
III. Capacidade de despacho de múltiplas operações;
IV. Grande redução na quantidade de instruções de um programa;
6. DESVANTAGENS
Infelizmente as Máquinas VLIW não alcançaram valor comercial, sem dúvidas por causa das desvantagens que essa arquitetura carrega. Ao analisar tais desvantagens, é possível perceber que elas eram realmente grandes impedimentos para seu desenvolvimento, e por isso foi tratada dessa maneira frente ao mercado da tecnologia. As principais são:
I. Os caminhos que as instruções são determinadas a tomar podem, muitas vezes, serem previstos de maneira errada, ou pelo programador, ou pelo compilador, o que causa desvios condicionais que afetam consideravelmente a performance de uma Máquina VLIW;
II. Qualquer evento externo, como falha no acesso a memória ou qualquer outro dispositivo, compromete o processamento, sem ter uma solução alternativa para isso, ocorre a interrupção da máquina;
III. Não apresenta compatibilidade de código com máquinas não paralelas (convencionais) e até mesmo com máquinas de diferentes famílias VLIW e extensões;
IV. É necessária uma ampla densidade de códigos para garantir um processamento VLIW lógico-eficiente, mas isso resulta na má utilização da memória;
V. Múltiplas unidades funcionais são essenciais em um processamento VLIW; entretanto, para que ela funcionem corretamente, é preciso dispor de elevado número de portas de acesso à cachê de dados.
7. CONSIDERAÇÕES FINAIS
Por meio dos estudos apresentados por este artigo, desde os primórdios das Máquinas VLIW, seu desenvolvimento, suas características, vantagens e desvantagens, é possível perceber que do ponto de vista comercial, este tipo de arquitetura não foi bem sucedido. Por outro lado, também não existem dúvidas de que a “Filosofia VLIW” ao oferecer a possibilidade de executar várias operações ao mesmo tempo, revolucionou o mercado de processamento de alto desempenho dos computadores, e só não teve grande uso em razão do alto grau de complexidade dos problemas e inconvenientes que acarretam uma “máquina Very Long Instruction Word”. Em visto disso, não só o fim das empresas pioneiras, como a falta de continuidade e de grandes investimentos em pesquisas no processamento VLIW, pode-se considerar que essa tecnologia está à margem das políticas de desenvolvimento de produtos das grandes empresas de tecnologia, apesar da sua grande potencialidade de aplicação, sobretudo no futuro, uma vez resolvidos essas questões que emperram suas progressão no mercado nos dias de hoje.
8. REFERÊNCIAS BIBLIOGRÁFICAS
1. FERNANDES, Edil S. T.; SANTOS, Anna Dolejsi. Arquiteturas Super Escalares: Detecção e Exploração do Paralelismo de Baixo Nível. VIII ESCOLA DE COMPUTAÇÃO, 1992, Gramado. Porto Alegre: Informática UFRGS, 1992. 135p.
2. WILSON, Gregory V. The History of the Development of Parallel Computing. 1994.
3. HWANG, K. Advanced Computer Architecture: Parallelism, Scalability, Programmability. New York: McGraw-Hill, 1993. p.182-184.
4. http://www.inf.ufrgs.br/gppd/disc/cmp134/trabs/T1/981/VLIW/vliw10.html , acesso em 20 de Novembro de 2010.
10. http://www.worldlingo.com/ma/enwiki/pt/Very_long_instruction_word , acesso em 21 de Novembro de 2010.
11. http://www.ic.unicamp.br/~ducatte/mo401/1s2009/T2/036272-t2.pdf, acesso em 21 de Novembro de 2010.
[1] FERNANDES, Edil S. T.; SANTOS, Anna Dolejsi. Arquiteturas Super Escalares: Detecção e Exploração do Paralelismo de Baixo Nível. VIII ESCOLA DE COMPUTAÇÃO, 1992, Gramado. Porto Alegre: Informática UFRGS, 1992. 135p.
[2] WILSON, Gregory V. The History of the Development of Parallel Computing. 1994
[3] HWANG, K. Advanced Computer Architecture: Parallelism, Scalability, Programmability. New York: McGraw-Hill, 1993. p.182-184.
Nenhum comentário:
Postar um comentário