Processadores Para o Próximo Milênio - Parte 4
Por Alexandre Mendonça e Ricardo Zelenovsky em 27 de junho de 2001
Introdução
Na página anterior, vimos algumas das máquinas mais velozes do planeta e também as promessas da computação quântica. Continuando, apreciaremos agora os computadores Cray, máquinas que sempre foram sinônimo de alto desempenho, e também alguns processadores que são interessantes, não pelas suas velocidades estonteantes, mas sim pela forma distinta de suas soluções.
Computadores Cray
É impossível falar de supercomputadores sem citar o pionerismo das máquinas fabricadas por Seymour Cray, que já usavam o conceito de processamento vetorial. Seu primeiro supercomputador foi o CRAY-1, fabricado em 1976. Era capaz de atingir o pico de 133 Megaflops. Em 1985, lançou o Cray-2, com o desempenho de 1,9 Gigaflops. Na época, esse computador tinha a maior memória do mundo: 2 Gigabytes. Quantidade gigantesca, mesmo para os parâmetros atuais.
Após esses marcos, citamos as principais máquinas que a empresa Cray comercializa nos dias de hoje. Começamos com o Cray T-90, que usa até 32 processadores vetoriais em paralelo e chega a 60 Gigaflops. Em seguida, está o Cray T3E, que oferece até 2048 processadores, permitindo alcançar 2,5 Teraflops e que, em breve, será substituído pelo Cray SV2, ainda em fase de projeto. Finalmente, temos o Cray MTA, (“MultiThread Architecture”), que pretende diminuir o trabalho de programação paralela ao oferecer vetorização e paralelização automáticas.
O atual topo de linha é o Cray SV1, que traz solução para os conflitantes problemas de desempenho, preço e escalabilidade. Os supercomputadores, como é de se esperar, são máquinas caras mas que oferecem um grande desempenho. Essa característica os torna quase inacessíveis para as empresas menores. Fica então o dilema: ou gasta-se muito dinheiro e compra-se um computador de alto desempenho, ou então economiza-se dinheiro e tenta-se satisfazer-se com máquinas de desempenho inferior. Pensando nisso, a Cray projetou uma máquina escalável, cujo desempenho, de acordo com as necessidades e orçamento do cliente pode ir desde 1,2 Gigaflops até 1 Teraflops (1.000 vezes o desempenho inicial). Esse computador pode usar desde um processador (4,8 Gigaflops) até centenas de processadores, quando então atinge a marca de 1 Teraflops. São empregados dois tipos de processadores: um processador de alto desempenho (4,8 Gigaflops), chamado de MSP, e um processador convencional (1,2 Gigaflops). Até 6 MSP e até 8 processadores convencionais formam um nó. O sistema pode chegar até 32 nós, resultando em 1 Teraflops. A Figura 1 ilustra a escalabilidade desse computador.
clique para ampliar
Figura 1: Escalabilidade do CRAY SV1.Em 22 de setembro de 1999, a Cray assinou um contrato com diversas agências americanas, entre elas a conhecida NSA (“National Security Agency”), aquela que trata, dentre outros temas, das limitações na exportação de programas de criptografia, para construir o SV2, que substituirá o Cray T3E. Este novo computador contará com novos processadores vetoriais e pretende atingir algumas dezenas de Teraflops. A tabela a seguir apresenta uma comparação de velocidade entre os principais computadores Cray.
Figura 2: Desempenho (em Gigaflops).Processador MAJC-5200
Abordemos agora alguns processadores que trazem novidades interessantes. A Sun Microsystems, fabricante das conhecidas estações Sun, está inovando o mercado da informática com seu processador MAJC, que em inglês se pronuncia “magic”. A sigla MAJC significa Arquitetura Microprocessada para Computação em Java, do inglês “Microprocessor Architecture for Java Computing”. De acordo com a Sun, os dados que os processadores dos servidores de rede tratam nos dias de hoje estão muito diferentes dos dados das décadas de 70 e 80. Este fato motiva as duas principais arquiteturas atuais: uma com conjunto complexo de instruções (CISC) e a outra com conjunto reduzido de instruções (RISC).
Antigamente, por exemplo em uma operação de atualização de saldo, os dados que chegavam ao servidor eram utilizados imediatamente. Os servidores atuais, entretanto, antes da atualização, devem tratar primeiro da compactação e criptografia deles (e talvez até o comando de voz), para só depois realizar a operação de crédito. Isso tudo deve ser feito na taxa do fluxo de dados das redes de alta velocidade.
Assim, nos modernos sistemas, os processadores devem estar aptos não só a receber os dados a taxas elevadas, mas também aptos a processá-los nesta mesma taxa. As principais exigências de hardware são velocidade de I/O e capacidade de processamento. O processador deve entrar no fluxo de dados sem gerar atrasos, ou seja, ele recebe os dados a taxas elevadas, os processa e os envia adiante nessa mesma taxa elevada. A primeira implementação da família, o MAJC-5200, tem a interface de I/O operando a 10 GB/s, quando o usual na maioria dos processadores é 1 GB/s, e sua a capacidade de processamento vem de duas CPUs, cada uma com 4 unidades funcionais VLIW (“Very Large Instruction Word”) que, além dos recursos usuais, operam como processadores de sinais digitais (DSP-“Digital Signal Processor”) e como processadores vetoriais SIMD.
A CPU, como pode ser vista na Figura 3, possui 4 Unidades Funcionais (FU), numeradas de 0 até 4. Cada Unidade é um processador RISC. A UF0 é um pouco diferente das demais, pois ela é responsável por tratar da leitura e escrita de dados, que acontece através da Unidade de Carga e Armazenamento, e ainda por controlar o fluxo das operações (saltos). Por ser uma CPU tipo VLIW, as instruções de 32 bits vêm agrupadas em pacotes com até 4 instruções, 128 bytes no total, e cada uma é distribuída para uma Unidade Funcional. Se não houver interdependência, são realizadas até 4 operações por vez. O compilador é responsável por preparar o fluxo de instruções de forma a reduzir a interdependência. De acordo com a Figura 3, as instruções vêm do Cache e seguem para o Buffer de Instruções, daí passam pelos Decodificadores, têm seus Registradores acessados e vão para as Unidades Funcionais. Já os resultados são devolvidos aos Registradores graças ao Estágio de Contra-Escrita. O compartilhamento dos resultados entre as Unidades Funcionais é possível graças ao Estágio de Contra-Escrita, mas consome um ciclo. Entre UF0 e UF1, existe uma conexão que permite esse compartilhamento no mesmo ciclo de relógio.
A CPU possui 224 registradores lógicos, divididos em 96 globais, que podem ser acessados por qualquer Unidade Funcional, e 32 particulares para cada UF. A Unidade de Carga e Armazenamento é responsável por gerenciar todas as operações entre a memória e os registradores.
Está disponível um conjunto completo de instruções para operações inteiras e de ponto-flutuante. As unidades de 1 a 3 podem executar operações do tipo multiplica e acumula em um único ciclo. Tais instruções são fundamentais para a implementação de filtros digitais. As unidades podem operar juntas implementando um ambiente de execução tipo SIMD. Com tais instruções e operando a 500 MHz, essa CPU é capaz de obter um desempenho de 6,16 Gigaflops.
clique para ampliar
Figura 3: A CPU MAJC.A Figura 4 apresenta o diagrama em blocos do processador MAJC-5200, que possui duas CPUs idênticas às mostradas na Figura 3. Deve-se notar que o cache de dados é compartilhado entre as duas CPUs, porém existe um cache de instrução para cada uma. A capacidade para aceitar altas taxas de bits deve-se à quantidade de interfaces, cada uma delas com seu próprio controlador. A memória principal é do tipo Rambus (DRDRAM) e trabalha a 1,6 GB/s. A Ponte PCI oferece recursos para DMA e I/O, a taxas de até 264 MB/s. Existem duas outras interfaces, a UPA Norte e a UPA Sul, que podem operar a até 4 GB/s. A porta UPA, que em inglês significa “Universal Port Architecture”, destina-se a interfacear dados com altas taxas, como por exemplo vídeo. Além disso tudo, existe um Processador Gráfico para, dentre outras coisas, fazer a descompressão de geometria 3D em tempo real.
clique para ampliar
Figura 4: Diagrama em blocos da arquitetura MAJC-5200.Nessa arquitetura, a Sun usou o que seus engenheiros chamam de “processamento espaço-tempo”, mas que também pode ser rotulado como processamento especulativo. Graças a isso, os programadores não precisam de preocupar-se em explicitar o paralelismo de seus programas, por que essa tarefa será especulada pela máquina virtual Java. A máquina virtual examina o programa e especula se dois métodos podem rodar em dois processadores, despachando-os ao mesmo tempo. Assim, ela envia os dois métodos para dois processadores distintos, sendo que um deles (o segundo) rodará em separado, usando o que se chama de espaço de memória especulativa. Ao término do processamento, se tudo correu bem e não houve violação de dependência de dados então a área especulativa é fundida com a memória principal e o programa segue adiante. Entretanto, se tiver havido dependência entre os dados, o segundo processo é inutilizado e sua memória descartada.
Processador Nios da Altera
Esse processador não tem desempenho comparável com os processadores aqui analisados, já que ele chega apenas a 50 MIPS (mega instruções por segundo). Porém, o que o torna notável é o fato de ser totalmente construído em PLD, sigla que significa dispositivos lógicos programáveis, do inglês “Programmable Logic Device".
Um dispositivo lógico programável é um circuito digital que o usuário pode configurar de forma a solucionar seu problema. É como se fosse um Lego Digital onde o usuário junta as peças para construir o circuito digital que necessita. O que a Altera fez foi fornecer, junto com seu Lego Digital, um mapa que ensina a construir um processador RISC. Note que o usuário pode alterar esse mapa e construir uma CPU RISC específica para sua necessidade. O que é mais interessante é que sobram peças de Lego dentro da caixa, ou seja, sobram circuitos programáveis dentro do chip e estes podem ser usados para implementar ainda outros circuitos digitais.
Essa CPU RISC pode chegar a 50 MIPS, possui um conjunto de instruções de 16 bits, barramento de dados de 16 ou 32 bits, um “pipeline” de 5 estágios e em média executa uma instrução por ciclo. Ela usa, conforme a implementação, de 2% a 25% dos dispositivos programáveis, o que deixa bastante recurso para o usuário expandi-la colocando outros periféricos mapeados em memória, dispositivos de leitura e escrita mapeado nos bancos de registradores, ou ainda, blocos funcionais dentro da CPU. Em suma, o usuário pode modificar essa CPU, talhando-a para sua necessidade específica.
A Figura 5 apresenta um diagrama em blocos do núcleo Nios, que consiste da CPU, de uma interface com memória estática ou dinâmica, de um temporizador, de uma UART, de uma PIO e de uma linha de interrupção. Além disso tudo, também são oferecidos compilador C/C++, montador e depurador.
clique para ampliar
Figura 5: Diagrama em blocos da CPU RISC Nios da Altera, ressaltando que boa parte ainda está disponível.Conclusão Parcial
Nesta parte do artigo, continuamos a ver que o processamento paralelo infiltra-se nas mais diversas CPUs, oferecendo cada vez mais desempenho e exigindo compiladores sofisticados. O compilador já era importante para as máquinas RISC, mas agora, perante essas novas CPUs, ele assume um papel mais fundamental, pois passa a ser responsável por sugerir a especulação e a execução paralela. A Intel e a AMD também empregam bastante o processamento paralelo nas suas arquiteturas de 64 bits, como poderá ser constatado na continuação deste artigo. Verificamos ainda que os fabricantes de supercomputadores estão preocupados com o cliente intermediário e oferecem para máquinas acessíveis, mas que podem ser expandidas de forma a atingir grande desempenho.
Finalmente, vemos chegar a era na qual o usuário pode projetar seu processador. É claro que isso é interessante não tanto para o usuário comum, mas sim para aqueles que fabricam equipamentos com processadores incorporados, como é o caso dos fabricantes de celulares, máquinas fax, impressoras e até mesmo aparelhos de televisão. No passado, era necessário ajustar o projeto aos processadores disponíveis no mercado. Agora, já é possível comprar a descrição do processador e modificá-lo de forma a atender, de forma minuciosa, a todas suas necessidades do projeto. Na próxima parte deste artigo veremos as soluções que Intel traz em sua arquitetura de 64 bits (IA-64).
Bibliografia
Sites
- Seymour Cray: http://americanhistory.si.edu/csr/comphist/cray.htm
- Seymour Cray: http://www.cgl.ucsf.edu/home/tef/cray/tribute.html
- MAJC: http://www.sun.com/microelectronics/MAJC/5200.html
- Altera-Nios: http://altera.com/html/products/nios.html
Originalmente em http://www.clubedohardware.com.br/artigos/996
© 1996-2008, Clube do Hardware. Todos os direitos reservados.
É expressamente proibida a reprodução total ou parcial do conteúdo deste site e dos textos disponíveis, seja através de mídia eletrônica, impressa, ou qualquer outra forma de distribuição. Os infratores serão indiciados e punidos com base na lei nº 9.610 de 19/02/1998.
Não nos responsabilizamos por danos materiais e/ou morais de qualquer espécie promovidos pelo uso das informações contidas no Clube do Hardware.