# Cell (microprocessador)

Cell é o nome para uma arquitetura de microprocessador desenvolvida em conjunto pela SONY, Toshiba e IBM, numa aliança conhecida como "STI". Do projeto da arquitetura até a primeira implementação foram gastos quatro anos, começando em Março de 2001, terminando em 2005 com o anúncio de que a arquitetura iria equipar o SONY PlayStation 3. O custo estimado pela IBM para o desenvolvimento dessa APU foi de 400 milhões de USD.

## História

Sony Computer Entertainment, Toshiba e IBM formaram no ano 2000 uma aliança para desenvolver o processador. O STI Design Center foi aberto em 2001. (que não tem nada a ver com STI de Semp Toshiba Informática, isso já é outra coisa) O Cell foi desenhado num período de quatro anos, usando versões melhoradas de outras ferramentas para o processador POWER4. Com um time formado por 400 engenheiros das três companhias trabalhando juntos em Austin, com suporte de alto nível dos onze centros de desenvolvimento da IBM.
Durante o período inicial de desenvolvimento, a IBM gerou algumas patentes pertencentes a arquitetura Cell, processos de fabricação e ambiente de software. Uma das primeiras patentes do Broadband Engine foi apresentada para ser um pacote de quatro processadores, que foi a descrita para o que agora conhecemos como Power Processing Element. Cada Processing Element é formado por 8 APUs, agora relacionadas como SPEs no atual chip. O chip como um todo foi largamente pensado para funcionar com uma velocidade de 4 GHz e com 32 AUs proporcionando 32 GFLOPS cada, onde todo o chip possui 1 teraflop de poder computacional. Esse modelo foi implementado usando uma tecnologia de 90 nm SOI.

## Arquitetura

O Cell pode ter diversas configurações, sendo a mais comum delas composta de um PPE ("Power Processor Element"), e múltiplos SPEs ("Synergistic Processing Elements"). O PPE é ligado aos SPEs através de um barramento interno de alta velocidade conhecido como EIB ("Element Interconnect Bus"). O Cell é optimizado para computação de ponto flutuante único, devido às suas aplicações. As SPEs são capazes de realizar computações de ponto flutuante duplo, todavia com certa perda em desempenho. De futuros processadores com a arquitetura Cell espera-se uma melhora no desempenho das SPEs no que diz respeito a computação de duplo ponto flutuante.
A arquitetura Cell foi concebida com um modular e extensivel sistema onde vários subsistemas,cada um com um IBM 64-bit Power Architecture,nucleos e Spus inscritos que podem formar um sistema de multiprocessador simetrico.
A primeira implementação do Cell,pode ter sido usada para construir um sistema de nodo unico. ou de nodo duplo com ate 2 Power Architecture Cores, e 16 Spus sem logica cola.Sistemas maiores podem ser integrados utilizando um a arquitetura de troca.
* PPE (Power Processor Element) — É um núcleo de processamento de múltipla linha de execução, o qual atua controlando os SPEs. O PPE pode trabalhar com sistemas operacionais convencionais devido à sua similaridade a outros processadores PowerPC 64-bits. Os SPEs, no entanto, foram projetados para a execução de código de ponto flutuante vetorizado.
* SPE (Synergistic Processing Element) – Cada SPE é composto do SPU ("Synergistic Processing Unit") e um controlador de fluxo de memória. O SPE é um processador RISC com uma organização SIMD de 128 bits.
* EIB (Element Interconnect Bus) – É o barreamento de comunicação interno na arquitetura Cell a qual conecta os diversos elementos do circuito integrado: o PPE, os SPEs, o controlador de memória MIC, etc.
O hardware do Cell foi especialmente projetado para fornecer dados suficientes para os elementos computacionais de modo a permitir alta performance. Essa é uma aproximação diferente da usual, que em geral tenta esconder as partes mais lentas do sistema. Todos os sistemas são retardados pelos componentes mais lentos. O Cell foi projetado para não ter componentes lentos.
Um hardware de Cell é formado de um grupo de PowerPC Processor Elements (PPEs), um grupo de Synergistic Processor Elements (SPEs), Element Interconnect Bus (EIB), Direct Memory Access Controller (DMAC), controladores de memória Rambus XDR e uma interface Rambus FlexIO (Input/Output).
O Cell tem como características estimadas: capacidade de execução acima de 4 GHz; banda de memória: 25.6 GB/s; banda de I/O: 76.8 GB/s; 256 GFLOPS (precisão simples a 4 GHz); 256 GOPS (inteiro a 4 GHz); 25 GFLOPS (precisão dupla a 4 GHz); 235 mm2; e 235 milhões de transistores.
* BARREIRAS PARA MELHORAR A PERFORMANCE DO PROCESSADOR
Dentre os principais desafios, destacam-se:
* Contornar o problema de “memory wall”, através de uma organização que permitisse que mais largura de banda de memória fosse utilizada de maneira efetiva.
* Encontrar mecanismos que permitissem aumentar a eficiência do consumo de energia em paralelo ao aumento da performance.
* Desenvolver uma microarquitetura que contornasse os problemas de rendimentos decrescentes associados aos aumentos da freqüência de Clock do processador e profundidade de pipeline.
* Desenvolver um algoritmo que otimize a pipeline gráfica da máquina de modo semelhante ao feito no atari, para que possa atingir niveis de realismo nunca vistos antes.

## Aplicações do Cell

A primeira das grandes aplicações comerciais do Cell foi no console de videogame da Sony, o Playstation 3. A empresa Toshiba anunciou que incorporará o Cell em televisores de alta definição. O supercomputador Roadrunner, construído pela IBM no Laboratório Nacional de Los Alamos (Novo México, Estados Unidos da América), trabalha com 19.440 CPUs, 12.960 das quais são processadores PowerXCell 8i, os quais utilizam a arquitetura em questão e 6.480 são AMD Opteron 2210 Dual-Core. O jogo massivo online Taikodom utiliza lâminas com estes processadores.

## Programação em Cell

A rica variedade de possibilidades para comunicação entre núcleos, assim como as facilidades para a movimentação de dados resultam em diversos modelos de programação para o CELL que visam extrair performance.
O suporte a esses modelos em uma linguagem de programação de baixo nível (como C e Fortran) foi uma das metas no projeto da arquitetura.
* MODELO “FUNCION OFFLOAD”
É o modelo mais simples para a programação do Cell.
Os SPEs são utilizados como aceleradores para certos tipos de funções, consideradas críticas.
Ao invés de sobrecarregar o elemento PPE com a execução de certas funções de biblioteca, essas funções são sobrecarregadas para um ou mais SPEs, através de desmembramento da biblioteca dado o fluxo de execução no PPE ou SPE, seguido otimização e recompilação desses pedaços visando os SPEs.
* MODELO STREAMING
Um dos modelos mais fortes para aplicações multimídia.
Consiste em gerar um processamento em fluxo, com cada SPE atuando como verdadeiro pipeline serial ou paralelo para um determinado segmento do fluxo de dados.
Nesse modelo, em geral o elemento PPE atua como controlador de fluxo, enquanto os SPES atuam como os processadores de fluxo de dados.

## Futuro do Cell

* Com o advento da terceira e quarta gerações do Cell nas tecnologias de 45nm e 32nm, a proliferação de hardware embarcado Cell-based tende a crescer potencialmente.
* Um acordo entre a IBM e a empresa Mercury Computer Systems garante a aplicação futura do Cell em sistemas embarcados diversos como processadores de imagens médicas, equipamentos militares, sensores sismiológicos, telecomunicação dentre outros.
* Sony e Toshiba, por sua vez, tendem também a embarcar hardware Cell em seus produtos tradicionais, como televisões de alta definição, microsystems, máquinas fotográficas, celulares, aparelhos de blu-ray, dentre diversos outros.
* Podemos esperar ainda mais aplicações compatíveis com os recursos oferecidos pela arquitetura Cell.

## Cell Chip

As primeiras implementações Cell tem mostrado bons resultados em frequência e desempenho.
Algumas estatísticas Cell:
Observando velocidade de clock: Uma ampla gama de frequências de operações são suportados para otimizar frequência e rendimento.
Pico de desempenho (Precisão Simples): Maior que 256 GFlops.
Pico de desempenho (Precisão Dupla): Maior que 26 GFlops.
Tamanho de armazenamento local por SPU: 256KB.
Área: 221 mm².
Tecnologia de 90nm(nos primeiros modelos) 65nm(nos modelos "core") e 45nm(no PS3 Slim SOI)
Número total de transistores: 234M.
Processador Cell Broadband Engine