Um Pouco Sobre o Processador Cell

Postado por McLeary
mai 29 2010

Processador Cell versus Andróide Cell

O Cell é um personagem do Dragon Ball que, ah não, esse é o Cell errado.

O objetivo deste post é falar um pouco sobre o processador Cell. Para quem não sabe, o processador Cell equipa o Playstation 3. Para começar, Cell é a abreviação de Cell Broadband Engine Archtecture (cuja tradução literal seria algo como “célula banda larga motor arquitetura”, ou seja, entenda a ideia e adote o termo inglês), que pode ser escrito como CellBE ou simplesmente Cell.

A arquitetura Cell foi um desafio lançado pelas empresas Sony Computer Entertainment, Toshiba e IBM com o objetivo de desenvolver um processador de custo relativamente baixo e capaz de fornecer alto desempenho para diversas aplicações, incluindo os aparelhos comerciais mais exigentes: os consoles.

Para atingir tal objetivo, o Cell foi desenhado com base em aplicações que exigem processamento pesado, como criptografia de dados, transformação e iluminação (T&L) de gráficos, processamento de física, transformada rápida de Fourier (FFT), operações sobre matrizes e aplicações científicas.

O Cell enfrentou o Goku e… é, to falando do Cell errado novamente.

O Cell é uma arquitetura de multiprocessador heterogêneo que consiste de um núcleo IBM Power PC de 64 bits (PPU), mais oito co-processadores especializados baseados em uma arquitetura SIMD (Single Instruction Multiple Data), chamados de Unidade de Processamento Sinergético (SPU pra facilitar). Os SPU’s são especializados em computação intensa, como as feitas em aplicações de criptografia e científicas.

Arquitetura do Cell

Arquitetura do Processador Cell

Aplicações

Para demonstrar que o processador atendia os requisitos propostos, junto com seu lançamento foram mostradas algumas aplicações que justificariam o uso do processador.

Uma das aplicações que foram desenvolvidas é o IBM TRE (Terrain Rendering Engine). Utilizando-se da técnica de Ray-casting (o caminho da luz é traçado a partir do olho do espectador até atingir a superfície do terreno) os pesquisadores da IBM conseguiram atingir taxas de 75 frames por segundo renderizando imagens de 1280×720 (720p) a partir de mapas de tamanho 7455×8405.

Os dados de entrada do renderizador são duas fotos. A primeira é um mapa de altura e a segunda é o mapa do terreno em si.

Entrada TRE

Dados de entrada para o TRE

O resultado pode ser conferido na foto abaixo.

Saída do TRE

Imagem de saída do TRE

O desempenho máximo do processador só pôde ser atingido devido à natureza paralela do problema de Ray-casting. O PPU é responsável por dividir a imagem em blocos que são enviados aos SPU’s. Cada SPU lança vários raios por pixel e calcula a iluminação no ponto de contato do raio com o terreno. A arquitetura SIMD dos SPU’s permite que os mesmos lancem vários raios independentes paralelos, o que resulta no máximo aproveitamento dos recursos do Cell.

Visão Geral da Arquitetura

Os requisitos do projeto foram atendidos com a criação de uma arquitetura SIMD inovadora usando instruções de 32 bits que codificam operações com 3 operadores. Um novo conjunto de instruções permitiu aos pesquisadores simplificarem o lado das instruções e fornecer operandos de 7 bits, assim, cada instrução pode endereçar diretamente cada um dos 128 registradores. Com esta abordagem unificada de instruções formato único pode-se ter acesso direto a 128 registradores e o mesmo formato pode ser usado para instruções condicionais e desvios.

O PPU é um processador convencional, de desempenho mediano, capaz de executar um sistema operacional, e possui controle sobre os núcleos SPU’s. O PPU pode iniciar, interromper e escalonar processos que serão executados nos SPU’s. Diferente dos SPU’s, o PPU tem acesso direto a memória principal e também tem acesso a memória dos SPU’s. A transferência de dados para os SPU’s é feita via DMA, e como o poder computacional do Cell está nos SPU’s, usar o DMA como técnica de transferência de dados é um desafio para os desenvolvedores que querem atingir o desempenho máximo oferecido. O conjunto de instruções do PPU inclui algumas que permitem gerenciar os SPU’s de maneira eficiente, mas a ordem de execução de tais instruções ainda ficam a cargo do desenvolvedor.

Vamos a alguns dados técnicos sobre o processador Cell:

  • O clock pode variar dependendo da aplicação, no PS3 chega a 3.2GHz.
  • Desempenho máximo (precisão simples): > 256 GFlops
  • Desempenho máximo (precisão dupla): > 26 GFlops
  • Memória local por SPU: 256 KB
  • Área: 221 mm²
  • Tecnologia: Inicialmente (2005) foi usada a tecnologia de 90nm, no PS3 (2009) foi introduzido o Cell de 45nm
  • Um Cell com 32 SPU’s foi prometido mas ainda não lançado.
  • Tanto o PPU quanto os SPU’s são programados em C/C++ a partir de bibliotecas.
  • Com o realese do kernel do linux de 20 de março de 2006 (2.6.16) o kernel do linux oficialmente suporta o processador Cell (\o/).
  • Para mais informações, acesse a página do Cell.

1 Comentário

  • Às 29/05/2010 23:23, Roger disse:

    O mcleary,
    gostei desse post. Fala pra gente agora sobre a placa gráfica do PS3…
    Só pra constar, li em algum lugar que a Sony fez uma atualização no firmware do PS3. Agora não é mais possível instalar o Linux nele.

    (obrigatório)
    (obrigatório, não será publicado)