quinta-feira, 8 de novembro de 2007

Peter Hofstee, o pai do processador Cell

Introdução original (dezembro de 2006):

Reza a lenda, que no final dos anos 1990, a divisão de jogos da Sony (SCEI) trabalhava no desenvolvimento de um novo console de jogos, cujo desempenho deveria ser pelo menos mil vezes melhor que o Playstation 2 (PS2).

Com essa idéia em mente, representantes da Sony (que tinha a necessidade), da IBM (que tinha o know-how) e da Toshiba (que tinha a capacidade de produção em grande escala) se reuniram em Tóquio no verão de 2000 para discutir a viabilidade desse projeto. O resultado final, foi a definição de uma meta mais modesta (apenas cem vezes), um chip de desenho inovador e a determinação de construí-lo em parceria.

cell_core.jpgCom isso, em março de 2001 foi criada a STI (SCEI-Toshiba-IBM) empresa com sede em Austin, no Texas, que depois de quatro anos e 400 milhões de dólares, produziu o Cell Broadband Engine ou simplesmente Cell BE (imagem ao lado).

Uma das características mais interessantes do Cell é sua microarquitetura baseada em nove núcleos de processamento, sendo um deles um Power Processor tradicional de 64 bits (também chamado de PPE - Power Processor Element) e oito novos núcleos independentes batizados de SPE (Synergistic Processor Element).

A integração é feita por um controlador de memória e um barramento de dados (EIB), integrados na mesma pastilha de silício, o que faz com que o Cell seja particularmente eficiente no processamento de grandes massas de dados em tempo real, daí o nome Broadband Engine (BE) e seu talento especial para aplicações de mídia e jogos.

Mesmo assim, houve a preocupação dos projetistas do Cell de que ele não fosse um chip muito especializado — como as GPUs usadas em placas de vídeo — ao ponto de não poder ser usado em aplicações mais genéricas, como funcionar em um simples telefone celular, até um supercomputador científico.

Terminado o desenvolvimento do primeiro Cell e a entrega do produto para a Sony, a IBM iniciou um trabalho para descobrir as possibilidades de aplicação do Cell em outras áreas além do entretenimento.

No final do mês passado (novembro de 2006), Peter Hofstee Cientista chefe do projeto Cell esteve no Brasil para acompanhar uma iniciativa realizada pelo gerente de novas tecnologias da IBM Brasi Fábio Gandour que incentiva a criação de um ecossistema para desenvolvimento de aplicações baseadas no Cell nas universidades.

Eles reservaram algumas horas da sua agenda para conversar com a PC World e falar um pouco sobre o Cell, como ele funciona e, principalmente, seu potencial de uso além do mundo dos jogos.

Veja abaixo os melhores momentos dessa entrevista exclusiva:

Origens

PC World (Mário Nagano): Peter, você poderia fazer uma breve descrição sobre a origem do Cell da sua participação nesse projeto?

Peter Hofstee: sim, as origens do Cell datam de 1999 quando Lou Gerstner (ex-CEO da IBM) começou a trocar idéias com Ken Kutaragi (considerado o pai do Playstation e presidente da SCEI) e daí surgiu a percepção de que o mercado de jogos estava evoluindo para algo muito além do que simplesmente jogar.

E que para a Sony se manter-se competitiva nesse mercado, ela deveria estar no mesmo nível tecnológido das suas concorrentes, e que no futuro seus produtos deveriam se envolver num mundo onde os computadores estão cada vez mais interconectados e entender a maneira como servidores, computadores e dispositivos de interelacionam.

Se vermos a IBM como uma empresa de tecnologia e a Sony como uma empresa de conteúdo, percebemos uma grande sinergia entre as duas empresas, e o grande projeto que surgiu desses encontros foi a decisão da IBM trabalhar junto com a Sony e a Toshiba para criar um chip para a próxima geração de console de jogos.

Os trabalhos iniciaram-se em 2000, e no início tais reuniões eram bastante informais cujo resultado foi a proposta de criar um chip de quatro núcleos para a Sony, o que na época foi até bem aceito por todos, menos por Kutaragi — que sempre pensava muito além do nosso tempo — e insista numa solução mais sofisticada possível, vetando assim o chip de quatro núcleos.

Por causa disso, a IBM voltou-se para seus laboratórios de pesquisa (nessa época estava em Austin), que elaboraram várias propostas utilizando tecnologias diversas como o Blue Gene, Multicore, etc. e a minha idéia foi de um chip híbrido que eventualmente se transformou o Cell.

Obviamente esse processador recebeu a contribuição de várias pessoas, mas fui eu o idealizador do Synergistic Processor Element (SPE) — o Cell possui oito desses SPEs — e um Power Processor (o PPE) fazendo o meio de campo, totalizando nove núcleos.

A grande sacada

PC World: qual é a grande idéia por trás do Cell?

Hofstee: a principal idéia por trás desse conceito é que se você analisar a história do microprocessadores nos últimos 20~25 anos.

Você pode observar um ganho bastante sistemático de desempenho — basicamente gerado pelo fato dos transístores tornarem-se cada vez menores e mais velozes — sem ter que mexer na microarquitetura do chip, algo como ganhar 40% (de desempenho) por ano, dobrando apenas o número de transístores no chip.

O problema é que, melhorando o desempenho do chip apenas multiplicando o número de transístores, torna o chip exponencialmente menos eficiente.

Mas como os transístores tornam-se cada vez menores e mais velozes, houve um aumento no consumo de energia e, consequentemente, na dispersão de calor. Um problema que os fabricantes conseguiram contornar nos últimos anos.

Mas chegamos num limite onde os consumidores não querem mais chips desse tipo.

Isso forçou a indústria a desenvolver chips mais eficientes pelo ponto de vista da arquitetura além de mais velozes, ou seja, mudaram as regras do jogo. Nada será como foi nos últimos 25 anos.

Desempenho x especialização

Sob esse ponto de vista, existem duas coisas que podem ser feitas: uma delas é o multicore, onde você tem o dobro de transístores e tem rotinas rodando em paralelo (a maioria dos casos). Com um pouco de esforço de programação, você consegue o dobro de desempenho ao invés de apenas 40%.

A outra coisa que podemos fazer — e é aí que o Cell é único — é que para ganhar eficiência, é preciso começar a repensar como disponibiliar um componente no meu sistema e torná-lo mais especializado para realizar uma tarefa.

É por causa disso é que vemos dois tipos de processadores no Cell: o primeiro é na realidade um Power Processor tradicional (PPE) — mais usado para rodar o sistema operacional — e os SPEs que estão lá para fazer o trabalho mais especializado e pesado de computação.

E nós sabemos o que a especialização é capaz de fazer em termos de desempenho. Um bom exemplo são os chips gráficos, capazes de processar até 1 teraflop de dados, apenas calculando objetos e texturas em 3D.

Daí surge o desafio: o que fazer com o ganho de eficiência gerado pela especialização?

Mesmo que você consiga fazer algo mil vezes mais rápido do que a geração anterior, num console de jogo, isso pode não fazer muito sentido, já que as pessoas não conseguem mover suas mãos (num joystick) mil vezes mais rápido.

Você pode até se beneficiar com um número maior de pixels na tela, mas a diferença na imagem não será muito melhor se aumentarmos a resolução em três vezes. Por causa disso, procuramos uma solução especializada que fosse, ao mesmo tempo, a mais genérica possível.

Começamos a estudar os atuais consoles de jogos e concluimos que o local onde existe a maior perda de eficiência é na latência do sistema de memória principal e no mecanismos que se conectam ao cache do processador.

Podemos ver isso nos atuais processadores onde boa parte da pastilha de silício é ocupado pelo cache e pelos circuitos que permitem o seu funcinonamento correto.

Decidimos que deveríamos fazer algo realmente inovador para resolver esse problema.

Como o Cell Funciona

PC World: e qual seria essa solução?

Hofstee: a melhor maneira para explicar o que fizemos é dizer como os processadores sequenciais (in-order) funcionam.

Eles executam suas tarefas de modo mais ou menos linear: eles carregam, somam, e esperam que a última instrução esteja concluída antes de iniciar a próxima.

Na realidade esse processo é bem mais complexo mas na sua essência é isso.

Imagine que você precise fazer um reparo na sua casa e você tem um acordo com uma loja de material de construção (memória) onde basta esticar o braço para fora da janela e pedir um por um martelo (dado) que eles vão botar na sua mão num piscar de olhos.

Obviamente tal serviço não existe, mas para que isso funcione, essa loja teria que criar uma monstruosa estrutura de logistica, para manter um bom estoque em todas as lojas e depósitos da cidade (até mesmo no porão da sua casa) para atender ao seu pedido o que seria legal mas seria muito, muito caro fazer isso.

E é isso que acontece nos processadores de hoje, eles procuram adivinhar, prever o que vai ocorrer na próxima operação e colocar o martelo na sua mão.

Como disse, isso não existe no mundo real.

Na nossa realidade, ao invés de parar o serviço e sair correndo pra loja toda vez que precisamos de algo (como pregos, cola, verniz), fazemos uma lista de compras. Preparamos antecipadamente os recursos necessários para realizar uma tarefa, e é nisso que se baseia a idéia fundamental por trás do Synergistic Processor.

Ao invés de escrever um programa do tipo “LOAD… ADD… LOAD… ADD…”, você faz uma “lista de compras” com todas rotinas e dados que você necessita e os entrega de uma só vez para os SPEs.

Estes solicitam informações para o memory flow control unit (unidade de controle de fluxo de memória) que corre atrás sua lista e entregaria todo o seu pedido de uma só vez para a memória local de cada SPE (cada um tem a sua) — que seria sua bancada de trabalho — e ao rodar o programa, os resultados são colocados na memória local e devolvidos para o memory flow control unit que, agora faz o trabalho inverso, recolhendo os resultados dos SPEs e colocando na memória compartilhada.

Devido a eficiência desse modelo — se comparado com o sequencial — é possível colocar quatro vezes mais SPEs na mesma área de um chip multi-core convencional de última geração. É por isso que, mesmo usando o processo de fabricação de 90 nanômetros, fomos capazes de colocar nove núcleos ao invés de dois.

Trabalhando juntos ou separados

PC World: se o PPE roda o sistema operacional e os SPEs fazem a maior parte do processamento, qual o nível de dependência dos SPEs em relação ao PPE?

Hofstee: a interação entre os SPEs e o Power Processor (PPE) é na realidade muito pouca. É verdade que no início do processo o PPE instrui os SPEs sobre suas tarefas. Mas depois disso, os SPEs tem completa liberdade de funcionamento, carregar seu próprio código, podendo fazer multiprocessamento, acessar a memória compartilhada e até mesmo os dispositivos de entrada/saída se forem programados para isso. Eles realmente não precisam depender do PPE para funcionarem.

Fizemos um grande esforço para que a interação entre os SPEs e o PPE fosse a menor possível. Caso contrário, o PPE sofreria constantes interrupções dos SPEs solicitando tarefas perdendo assim muito tempo decidindo o que fazer com eles. Os SPEs são unidades completamente indepentes.

Fábio Gandour: Gostaria e observar que existem alguns desentendimentos com relação ao Cell. Já li em alguns forums que esses chips multicore são chips sequenciais (in-order) que poderiam executar instruções no modo “out-of-order” (Nota: uma técnica de processamento que executa comandos fora de sequência para ganhar tempo e consequentemente desempenho).

Hofstee: Cada SPE é um chip sequencial (in-order), mas devido à sua independência o Cell é capaz de executar instruções no modo out-of-order.

Gandour: o conceito “in” ou “out-of-order” é válido em chips com apenas um núcleo a nível de hardware. No caso do Cell, essa limitação pode ser resolvida logicamente por meio de software, o que abriria um novo mundo na área de programação.

Hofstee: sim, ao invés de escrever seu código, armazená-lo na memória principal, executá-lo e recuperar os resultados na memória principal é o conceito atual. Mas reescrever seu código para dividí-lo em partes e espalhá-los pelos núcleos é uma mudança fundamental.

Gandour: e é por causa disso é que estamos focados em costruir o que chamamos de Ecossistema do Cell. E é por causa disso que ele veio para o Brasil nesses últimos dias para nos ajudar a criar esse novo conhecimento, primeiro nas universidades e depois divulgar para todos os potenciais usuários.

Número Lindo!

PC World: existe algum motivo especial para o Cell ter oito SPEs? Por que não dez ou seis? Existe algum limite que poderia comprometer seu preço ou o desempenho?

Hofstee: na realidade tinhamos algumas idéias sobre o tamanho do chip mas quando otimizarmos seu desenho chegamos a oito SPEs. Entretanto, os programadores queriam que os SPEs tivessem 256 KB de memória local ao invés de 128 KB mas para isso tivemos que reduzir o número de oito para seis (SPEs) para manter o tamanho do chip.

Mas quando levamos o projeto para Kutaragi e mostramos tecnicamente que seis era melhor do que oito ele disse que oito era um número lindo! (nota: entre os orientais, o número oito é considerado um número de sorte do mesmo modo que quatro é um número azarado).

Depois que voltamos para os oito SPEs notamos que o tamanho final do Cell era quase o mesmo do Emotion Engine do PS2, o que facilitou o processo de fabricação.

Alíás, muitos dos problemas de fabricação do Cell foram resolvidos quando a Sony decidiu por usar apenas sete dos oito SPEs (melhorando assim o aproveitamento de chips “bons” retirados de cada wafer) enquanto que a IBM utiliza apenas chips com oito SPEs em seus projetos já que eles podem pagar por isso.

PC World: então seria possível desenvolver versões do Cell com mais ou menos SPEs?

Hofstee: sim, não existe limites em termos de arquitetura.

Trabalhando como qualquer outro

PC World: o uso de um núcleo Power Processor (PPE) no Cell seria uma maneira de facilitar a adoção do Cell pelo mercado?

Hofstee: o Power Processor é um chip convencional. Se você pegar qualquer aplicação escrita para qualquer Power, ela irá funcionar no Cell.

Entretanto, se ignorarmos os SPEs, o Power Processor não é um chip muito veloz. Se os desenvolvedores não se esforçarem em usar os SPEs o desempenho do Cell não é muito atraente.

Atualmente, o Cell não é realmente um processador de uso geral… Pelo menos por enquanto!

Gandour: entrentanto, pelo meu entendimento, a medida que formos capazes de disponibilizar conhecimento para esse ecossistema, as pessoas encontrarão meios de usar o Cell como um chip de uso geral.

O papel do software

PC World: essa tarefa de tirar proveito dos SPEs sem conhecê-los não poderia ser feito pelos compiladores?

Hofstee: sim, existem inicativas nesse sentido. Existem projetos chamados Single Source Compilers que seriam capazes de gerar código de máquina tanto para o PPE quanto para os SPEs. É um assunto muito interessante que estamos levando para as universidades.

Gandour: uma frase que costumo usar é “veja pessoal, nesse novo mundo de programação, temos que admitir que os compiladores são realmente uns caras legais, mas não são tão espertos quanto poderiam ser.” Talvez chegaremos num ponto onde os compiladores terão uma inteligência interna para perceber previamente quanto hardwere será necessário para executar uma tarefa em particular.

Hofstee: acredito que as solução virá de ambos os lados, mesmo com compiladores mais espertos haverá casos em que será necessário reescrever o código para obter o máximo desempenho.

PC World: o sistema operacional preferido do Cell é o Linux?

Hofstee: sim. Como o Cell é na sua essência um Power Processor, ele roda qualquer SO escrito para esse chip. Uma das decisões do nosso projeto foi de trabalhar de modo colaborativo com a comunidade de código aberto.

PC World: vocês tem um SDK (kit de desenvolvimento de software)?

Hofstee: sim, temos um SDK que já está na versão 1.1 desenvolvido em parceria com a universidade de Barcelona e a Sony permitiu que esse SDK com Linux fosse instalado do Playstation 3 de modo que o usuário teria um sistema dual boot o que é muito exitante, já que por um custo relativamente baixo, as pessoas poderão ter acesso à um sistema baseado em Cell que eles podem programar.

Fora isso, a IBM também já está disponibilizando servidores blade com Cell para aplicações de maior escala, como o supercomputador Roadrunner.

Apple x IBM x Intel

PC World: e a Apple? Eles se interessaram pelo Cell?

Hofstee: um dos motivos por que a IBM se envolveu em projetos como o Power Processor foi o interesse em inovação. Tanto de cima para baixo (mainframes para servidores) quanto de baixo para cima que é o caso da Apple onde trabalhávamos com o mercado de volume (de chips vendidos).

Hoje fazemos isso com o mercado de consoles onde o volume é maior ainda já que tanto a Nintendo, Microsoft e Sony adotam chips baseados na arquiteura Power.

PC World: mas eles pelo menos chegaram a considerar esse chip?

Hofstee: eles fizeram suas próprias análises e tiraram suas próprias conclusões.

Quero dizer com isso que é sabido que a Apple teve acesso ao Cell e que também eles escolheram a solução da Intel. Para saber o motivo, seria mais fácil perguntar para eles do que para mim… (risos).

Futuro do Cell

PC World: e o futuro? O que poderemos esperar do Cell?

Hofstee: o que já divulgamos é que haverá uma versão de 65 nanômetros do Cell além de melhorias para reduzir seu custo e consumo de energia.

Estamos trabalhando numa versção capaz de realizar cálculos em double-precision de modo mais eficiente e trabalhar com mais memória.

Temos ainda um projeto conceitual de um chip com 32 SPEs que poderá estar pronto em 2010 com dois núcleos Power (PPEs) no mesmo chip.

Obviamente, teremos muitas novidades no segmento de eletrônicos de consumo baseados no Cell. Por exemplo, sabemos que a Toshiba estuda colocar o Cell num telefone celular para melhorar seus recursos de multimídia.

PC World: se não fosse pelo Playstation 3 haveria um processador Cell?

Hofstee: não. Essa foi uma oportunidade única na vida.

(Fim da entrevista)

Depois de revisar esse texto, noto que esse texto representa um pouco mais da metade de toda a entrevista. Me lembro de alguns fatos menores — porém divertidos — como por que a sede da STI poderia ser no Havaí e acabou no Texas, ou por que o supercomputador Roadrunner é metade Cell e metade Opteron.

Tenho isso numa fita perdida no meio da minha bagunça, mas deixemos isso para outra oportunidade.

Inté!

peter_mario.jpg




Peter Hofstee e entrevistador - novembro de 2006.

Nenhum comentário: