Cell é o nome atribuído para uma arquitetura de microprocessador desenvolvida numa joint-venture entre a Sony, Toshiba e IBM. Do projeto da arquitetura até a primeira implementação foram gastos quatro anos, começando em Março de 2001, num custo estimado pela IBM de 400 milhões de dólares.
Este novo processador, baseado na arquitetura Power 64 bits, suporta todo o legado do Power, PowerPC de 32 e 64 bits.
A utilização inicial deste processador foi destinada ao console de jogos PlayStation 3 da Sony. Porém a sua aplicabilidade é infinita. Dos pequenos computadores com aplicações para manipulação de vídeo até as plataformas altas (mainframes). Hoje os novos servidores IBM Blade QS20 para computação de alta-performance utilizam CELL BE, ainda na IBM mainframes receberão processadores CELL BE integrados por meio de adaptadores PCI. No dia-a-dia dos consumidores finais, aparelhos de televisão digital, media-centers, aparelhos com "Blue-ray" e dispositivos embarcados serão fabricados com processador CELL BE.
Como funciona a criança?
Os núcleos: A primeira característica marcante no processador CELL BE é sua divisão
interna. Ele possui 9 núcleos de processamento, algo absolutamente inovador e sem
comparativos no mercado atual. Destes 9 núcleos, 8 são SPEs e 1 PPE.
PPE: "Power Processor Element", é um processador PPC de 64 bits ("dual thread") que funciona tanto em 64bits quanto em 32bits. Possui um cache L1 de 32Kbytes e um cache L2 de 512Kbytes. O PPE é responsável pela direta comunicação com o sistema operacional, divisão de tarefas (para si, e para os SPEs) e alocação de recursos. Ele é otimizado para o processamento intensivo de tarefas.
SPE: "Synergistic Processor Element" são os processadores de núcleo RISC especializados em computação vetorial, ou seja, o processamento de uma mesma instrução para um grupo de dados em um vetor (Também chamado de Single Instruction Multiple Data, SIMD). Os núcleos SPE foram desenvolvidos para suportarem programação de alto nível (como C/C++) com instruções específicas relacionadas a manipulação de conteúdo rico, ou seja, computação gráfica de áudio, jogos, novos métodos de interação homem-máquina. O SPEs são otimizados para o processamento intensivo de dados computacionais.
Dessa forma os 9 núcleos do processador oferecem ao desenvolvedor de aplicações uma plataforma multi-processada com suporte real computação paralela.
Ambos PPE e SPE são dependentes um do outro, uma vez que o PPE está mais ligado ao controle de tarefas do Sistema Operacional e portanto direciona o fluxo de dados inicial de processamento, já os SPEs são independentes no que tange o processamento. Eles são capazes de executar seus próprios programas e threads ao mesmo tempo que outro SPE está rodando um programa diferente.
Cada SPE tem completo acesso a memória (shared memory) através de um controlador DMA para cada SPE, isso permite o fluxo simultâneo de dados entre memória e processador independente e ao mesmo tempo que os outros processadores. O método de acesso a memória dos núcleos SPE são a maior diferença em relação ao PPE e é a grande inovação presente no processador CELL BE, uma vez que com este recurso o ciclo de máquina permite uma execução de instruções mais rápida em com maior conteúdo vindo da memória.
EIB:
O EIB é o caminho de comunicação de comandos e dados entre os núcleos dos 8 processadores e os controladores de memória e I/O, pelo qual os núcleos do processador podem fazer acesso de leitura e gravação simultâneamente e independente da ação de outro núcleo. O EIB suporta completo acesso as áreas de memória e operações multi-processadas simétricas. Com este desenho o processador CELL BE está otimizado para construção de clusters de processadores.
MIC:
Outra parte do processador a ser detalhada é o MIC, "Memory Interface Controller". Trata-se de um dispositivo "on chip" responsável pela interface de controle de memória entre o EIB e a memória física a ser utilizada pelo processador. O MIC suporta até duas interfaces Rambus XDR que juntas podem variar de 64 Mbytes até 64 Gbytes de memória DRAM.
BEI:
A última parte a ser apresentada é a explicação do BEI, "Broadband Engine Interface", a área responsável pela comunicação com os dispositivos de entrada e saída. O BEI é composto por 3 interfaces de controle de I/O:
- BIC, "Broadband Interface Controler"
- IOC, "Input Output Controller"
- IIC, "Internal Interrupt Controller"
Estas 3 interfaces juntas permitem o gerenciamento de transferência de dados entre o EIB e os dispositivos de entrada e saída de dados, bem como a tradução dos endereços de tais dispositivos e o processamento de comandos relacionados aos mesmos.
Instalando os pacotes e compilando o Hello Word para o PS3.
No seu sistema OpenSuse 10.3, abra o Yast e selecione na seção "SOFTWARE" o item "Gestão de Software". A seguir no listbox "FILTRO", selecione a opção PADROES. Agora basta selecionar o grupo Desenvolvimento Cell, clicar no botão ACEITAR e aguardar a conclusão da instalação.
Ao terminar, o YAST instalou os seguintes pacotes o seu sistema OpenSuse:
- cross-spu-binutils - Ferramentas GNU binutils para o desenvolvimento;
- cross-spu-gcc - O compilador GNU C para o processador Cell SPU;
- cross-spu-newlib - Biblioteca GNU C.