Célula (microprocessador) - Cell (microprocessor)

Cell é uma microarquitetura de microprocessador de múltiplos núcleos que combina um núcleo PowerPC de propósito geral de desempenho modesto com elementos de coprocessamento simplificados que aceleram enormemente os aplicativos de processamento vetorial e multimídia , bem como muitas outras formas de computação dedicada.

Foi desenvolvido pela Sony , Toshiba e IBM , uma aliança conhecida como "STI". O projeto arquitetônico e a primeira implementação foram realizados no STI Design Center em Austin, Texas, ao longo de um período de quatro anos, começando em março de 2001, com um orçamento relatado pela Sony como se aproximando de US $ 400 milhões. Cell é uma abreviatura de Cell Broadband Engine Architecture , comumente abreviada como CBEA por completo ou Cell BE em parte.

A primeira grande aplicação comercial de Cell foi no console de jogos PlayStation 3 da Sony , lançado em 2006. Em maio de 2008, o supercomputador IBM Roadrunner baseado em Cell tornou-se o primeiro TOP500 LINPACK sustentado por 1.0 petaflops. A Mercury Computer Systems também desenvolveu projetos baseados na Cell.

A arquitetura Cell inclui uma arquitetura de coerência de memória que enfatiza a eficiência de energia, prioriza a largura de banda sobre a baixa latência e favorece o pico de rendimento computacional sobre a simplicidade do código do programa . Por essas razões, Cell é amplamente considerado um ambiente desafiador para o desenvolvimento de software . A IBM fornece uma plataforma de desenvolvimento baseada em Linux para ajudar os desenvolvedores a programarem chips Cell.

História

Cell BE como aparece no PS3 na placa-mãe
Peter Hofstee , um dos principais arquitetos do microprocessador Cell

Em meados de 2000, a Sony Computer Entertainment , a Toshiba Corporation e a IBM formaram uma aliança conhecida como "STI" para projetar e fabricar o processador.

O STI Design Center foi inaugurado em março de 2001. O Cell foi projetado ao longo de um período de quatro anos, usando versões aprimoradas das ferramentas de design para o processador POWER4 . Mais de 400 engenheiros das três empresas trabalharam juntos em Austin, com suporte crítico de onze centros de design da IBM. Durante este período, a IBM entrou com muitas patentes pertencentes à arquitetura Cell, processo de fabricação e ambiente de software. Uma versão de patente anterior do Broadband Engine foi mostrado como um pacote de chips compreendendo quatro "Elementos de Processamento", que era a descrição da patente para o que agora é conhecido como Elemento de Processamento de Energia (PPE). Cada Elemento de Processamento conteria 8 "Elementos de Processamento Sinérgico" ( SPEs ) no chip. Este pacote de chip deveria funcionar a uma velocidade de clock de 4 GHz e com 32 SPEs fornecendo 32  gigaFLOPS cada (FP8 de precisão de um quarto), o Motor de Banda Larga deveria ter 1 teraFLOPS de potência de computação bruta em teoria.

O projeto com 4 PPEs e 32 SPEs nunca foi realizado. Em vez disso, a Sony e a IBM fabricaram apenas um projeto com um PPE e 8 SPEs. Este projeto menor, o Cell Broadband Engine ou Cell / BE, foi fabricado usando um processo SOI de 90 nm .

Em março de 2007, a IBM anunciou que a versão de 65 nm do Cell / BE está em produção em sua fábrica (na época, agora GlobalFoundries ') em East Fishkill, Nova York ., Com a Bandai Namco Entertainment usando o processador Cell / BE para seus 357 tabuleiro de arcade, bem como o 369 subsequente.

Em fevereiro de 2008, a IBM anunciou que começaria a fabricar processadores Cell com o processo de 45 nm .

Em maio de 2008, a IBM apresentou a versão de ponto flutuante de precisão dupla de alto desempenho do processador Cell, o PowerXCell 8i , no tamanho de recurso de 65 nm.

Em maio de 2008, um supercomputador baseado em Opteron e PowerXCell 8i, o sistema IBM Roadrunner , se tornou o primeiro sistema do mundo a atingir um petaFLOPS e foi o computador mais rápido do mundo até o terceiro trimestre de 2009. Os três supercomputadores mais eficientes em energia do mundo , conforme representado pela lista Green500 , são igualmente baseados no PowerXCell 8i.

Em agosto de 2009, o processador Cell de 45 nm foi lançado em conjunto com o PlayStation 3 Slim da Sony .

Em novembro de 2009, a IBM havia descontinuado o desenvolvimento de um processador Cell com 32 APUs, mas ainda estava desenvolvendo outros produtos Cell.

Comercialização

Em 17 de maio de 2005, a Sony Computer Entertainment confirmou algumas especificações do processador Cell que estaria disponível no console PlayStation 3, então a ser lançado . Esta configuração de célula possui um PPE no núcleo, com oito SPEs físicos em silício. No PlayStation 3, um SPE é bloqueado durante o processo de teste, uma prática que ajuda a melhorar os rendimentos de fabricação, e outro é reservado para o SO, deixando 6 SPEs livres para serem usados ​​pelo código dos jogos. A frequência de clock alvo na introdução é de 3,2  GHz . O design introdutório é fabricado usando um processo SOI de 90 nm, com produção de volume inicial programada para as instalações da IBM em East Fishkill, Nova York .

A relação entre núcleos e threads é uma fonte comum de confusão. O núcleo PPE é dual threaded e se manifesta no software como dois threads independentes de execução, enquanto cada SPE ativo se manifesta como um único thread. Na configuração do PlayStation 3, conforme descrito pela Sony, o processador Cell oferece nove threads independentes de execução.

Em 28 de junho de 2005, a IBM e a Mercury Computer Systems anunciaram um acordo de parceria para construir sistemas de computador baseados em células para aplicativos integrados , como imagens médicas , inspeção industrial , aeroespacial e defesa , processamento sísmico e telecomunicações . Desde então, a Mercury lançou blades , servidores de rack convencionais e placas aceleradoras PCI Express com processadores Cell.

No outono de 2006, a IBM lançou o módulo blade QS20 usando processadores Cell BE duplos para um desempenho tremendo em certos aplicativos, atingindo um pico de 410 gigaFLOPS na precisão de um quarto do FP8 por módulo. O QS22 baseado no processador PowerXCell 8i foi usado para o supercomputador IBM Roadrunner . A Mercury e a IBM usam o processador Cell totalmente utilizado com oito SPEs ativos. Em 8 de abril de 2008, a Fixstars Corporation lançou uma placa aceleradora PCI Express baseada no processador PowerXCell 8i.

O servidor de computação de mídia de alto desempenho da Sony, ZEGO, usa um processador Cell / BE de 3,2 GHz.

Visão geral

O Cell Broadband Engine , ou Cell, como é mais conhecido, é um microprocessador concebido como um híbrido de processadores de desktop convencionais (como as famílias Athlon 64 e Core 2 ) e processadores de alto desempenho mais especializados, como o NVIDIA e Processadores gráficos ATI ( GPUs ). O nome mais longo indica o uso pretendido, nomeadamente como componente dos atuais e futuros sistemas de distribuição online ; como tal, pode ser utilizado em monitores de alta definição e equipamentos de gravação, bem como em sistemas HDTV . Além disso, o processador pode ser adequado para sistemas de imagem digital (médicos, científicos, etc. ) e simulação física ( por exemplo , modelagem científica e de engenharia estrutural ).

Em uma análise simples, o processador Cell pode ser dividido em quatro componentes: estruturas externas de entrada e saída, o processador principal denominado Power Processing Element (PPE) (um núcleo PowerPC 2.02 multithreaded simultâneo bidirecional ), oito co- totalmente funcionais processadores chamados de Elementos de Processamento Sinérgico , ou SPEs, e um barramento de dados circular especializado de alta largura de banda conectando o PPE, os elementos de entrada / saída e os SPEs, chamado de Barramento de Interconexão de Elemento ou EIB.

Para atingir o alto desempenho necessário para tarefas matematicamente intensivas, como decodificar / codificar fluxos MPEG , gerar ou transformar dados tridimensionais ou realizar a análise de Fourier de dados, o processador Cell combina os SPEs e o PPE via EIB para dar acesso, via DMA (acesso direto à memória) totalmente coerente em cache , tanto para a memória principal quanto para outros armazenamentos de dados externos. Para tirar o melhor proveito do EIB e sobrepor a computação e a transferência de dados, cada um dos nove elementos de processamento (PPE e SPEs) é equipado com um mecanismo de DMA . Como as instruções de carregamento / armazenamento do SPE só podem acessar sua própria memória de rascunho local , cada SPE depende inteiramente de DMAs para transferir dados de e para a memória principal e as memórias locais de outros SPEs. Uma operação de DMA pode transferir uma área de bloco único de tamanho de até 16 KB ou uma lista de 2 a 2048 desses blocos. Uma das principais decisões de design na arquitetura do Cell é o uso de DMAs como meio central de transferência de dados intra-chip, com o objetivo de possibilitar a assincronia e simultaneidade máximas no processamento de dados dentro de um chip.

O PPE, que é capaz de executar um sistema operacional convencional, tem controle sobre os SPEs e pode iniciar, parar, interromper e agendar processos em execução nos SPEs. Para tanto, o PPE possui instruções adicionais relativas ao controle das SPEs. Ao contrário dos SPEs, o PPE pode ler e escrever na memória principal e nas memórias locais dos SPEs através das instruções padrão de carregamento / armazenamento. Apesar de ter arquiteturas Turing completas , os SPEs não são totalmente autônomos e exigem que o PPE os prepare antes que possam fazer qualquer trabalho útil. Como a maior parte da "potência" do sistema vem dos elementos de processamento sinérgico, o uso de DMA como um método de transferência de dados e a pegada de memória local limitada de cada SPE representam um grande desafio para os desenvolvedores de software que desejam aproveitar ao máximo essa potência, exigindo um ajuste cuidadoso dos programas à mão para extrair o desempenho máximo desta CPU.

A arquitetura do PPE e do barramento inclui vários modos de operação, dando diferentes níveis de proteção de memória , permitindo que áreas da memória sejam protegidas do acesso por processos específicos em execução nos SPEs ou PPE.

Tanto o PPE quanto o SPE são arquiteturas RISC com um formato de instrução de 32 bits de largura fixa. O PPE contém um conjunto de registros de uso geral (GPR) de 64 bits, um conjunto de registros de ponto flutuante (FPR) de 64 bits e um conjunto de registros Altivec de 128 bits . O SPE contém apenas registros de 128 bits. Eles podem ser usados ​​para tipos de dados escalares que variam de 8 bits a 64 bits em tamanho ou para cálculos SIMD em uma variedade de formatos de inteiros e de ponto flutuante. Os endereços de memória do sistema para PPE e SPE são expressos como valores de 64 bits para um intervalo de endereço teórico de 2 64 bytes (16 exabytes ou 16.777.216 terabytes). Na prática, nem todos esses bits são implementados em hardware. Os endereços de armazenamento local internos ao processador SPU (Synergistic Processor Unit) são expressos como uma palavra de 32 bits. Na documentação relativa à célula, uma palavra é sempre considerada como significando 32 bits, uma palavra dupla significa 64 bits e uma palavra quádrupla significa 128 bits.

PowerXCell 8i

Em 2008, a IBM anunciou uma variante revisada do Cell chamada PowerXCell 8i , que está disponível em servidores Blade QS22 da IBM. O PowerXCell é fabricado em um processo de 65 nm e adiciona suporte para até 32 GB de memória DDR2 com slot, além de melhorar drasticamente o desempenho de ponto flutuante de precisão dupla nos SPEs de um pico de cerca de 12,8  GFLOPS para 102,4 GFLOPS no total para oito SPEs, que, coincidentemente, tem o mesmo desempenho de pico que o processador vetorial NEC SX-9 lançado na mesma época. O supercomputador IBM Roadrunner , o mais rápido do mundo durante 2008–2009, consistia em 12.240 processadores PowerXCell 8i, junto com 6.562 processadores AMD Opteron . Os supercomputadores PowerXCell 8i também dominaram todos os 6 principais sistemas "mais ecológicos" na lista Green500, com os supercomputadores com a relação MFLOPS / Watt mais alta do mundo. Ao lado do QS22 e dos supercomputadores, o processador PowerXCell também está disponível como um acelerador em uma placa PCI Express e é usado como o processador central no projeto QPACE .

Como o PowerXCell 8i removeu a interface de memória RAMBUS e adicionou interfaces DDR2 significativamente maiores e SPEs aprimorados, o layout do chip teve que ser retrabalhado, o que resultou em um chip e um chip maiores.

Arquitetura

Schema Cell.png

Embora o chip Cell possa ter várias configurações diferentes, a configuração básica é um chip multi-core composto por um "Power Processor Element" ("PPE") (às vezes chamado de "Processing Element" ou "PE"), e vários "Elementos de processamento sinérgico" ("SPE"). O PPE e os SPEs são interligados por um barramento interno de alta velocidade denominado "Barramento de interconexão de elementos" ("EIB").

Elemento do processador de energia (PPE)

PPE (Cell) .png

O PPE é o núcleo de CPU multithreaded simultâneo e bidirecional, baseado em PowerPC , dual-issue in-order com um pipeline de 23 estágios atuando como o controlador para os oito SPEs, que lidam com a maior parte da carga de trabalho computacional. O PPE limitou as capacidades de execução fora de ordem; ele pode realizar cargas fora de ordem e tem pipelines de execução atrasados . O PPE funcionará com sistemas operacionais convencionais devido à sua semelhança com outros processadores PowerPC de 64 bits, enquanto os SPEs são projetados para execução de código de ponto flutuante vetorizado. O PPE contém um cache de nível 1 de 64 KiB (instrução de 32 KiB e dados de 32 KiB) e um cache de nível 2 de 512 KiB. O tamanho de uma linha de cache é 128 bytes. Além disso, a IBM incluiu uma unidade AltiVec (VMX) que é totalmente pipeline para ponto flutuante de precisão única (Altivec 1 não oferece suporte a vetores de ponto flutuante de precisão dupla .), Unidade de Ponto Fixo (FXU) de 32 bits com arquivo de registro de 64 bits por thread, Unidade de carga e armazenamento (LSU) , Unidade de ponto flutuante de 64 bits (FPU) , Unidade de filial (BRU) e Unidade de execução de filial (BXU). O PPE consiste em três unidades principais: Unidade de instrução (IU), Unidade de execução (XU) e unidade de execução vetorial / escalar (VSU). IU contém cache de instrução L1, hardware de previsão de desvio, buffers de instrução e lógica de verificação de dependência. XU contém unidades de execução de inteiro (FXU) e unidade de armazenamento de carga (LSU). VSU contém todos os recursos de execução para FPU e VMX. Cada PPE pode completar duas operações de precisão dupla por ciclo de clock usando uma instrução escalar fundida-multiplicação-adição, que se traduz em 6,4  GFLOPS a 3,2 GHz; ou oito operações de precisão simples por ciclo de clock com uma instrução vetorial fundida-multiplicação-adição, que se traduz em 25,6 GFLOPS a 3,2 GHz.

Xenon no Xbox 360

O PPE foi projetado especificamente para o processador Cell, mas durante o desenvolvimento, a Microsoft abordou a IBM querendo um núcleo de processador de alto desempenho para seu Xbox 360 . A IBM cumpriu e fez o processador Xenon tri-core , baseado em uma versão ligeiramente modificada do PPE com extensões VMX128 adicionadas.

Elementos de processamento sinérgico (SPE)

SPE (célula) .png

Cada SPE é um processador de pedido duplo, composto por uma "Unidade de processamento sinérgico", SPU, e um "Controlador de fluxo de memória", MFC ( DMA , MMU e interface de barramento ). Os SPEs não têm nenhum hardware de previsão de ramificação (portanto, há uma grande carga no compilador). Cada SPE tem 6 unidades de execução divididas entre pipelines ímpares e pares em cada SPE: O SPU executa um conjunto de instruções especialmente desenvolvido (ISA) com organização SIMD de 128 bits para instruções de precisão simples e dupla. Com a geração atual do Cell, cada SPE contém uma SRAM incorporada de 256  KiB para instruções e dados, chamada de "Armazenamento Local" (não deve ser confundida com "Memória Local" nos documentos da Sony que se referem à VRAM) que é visível para o PPE e pode ser endereçado diretamente por software. Cada SPE pode suportar até 4 GiB de memória de armazenamento local. O armazenamento local não funciona como um cache de CPU convencional, pois não é transparente para o software nem contém estruturas de hardware que prevêem quais dados carregar. Os SPEs contêm um arquivo de registro de 128 bits e 128 entradas e medem 14,5 mm 2 em um processo de 90 nm. Um SPE pode operar em dezesseis inteiros de 8 bits, oito inteiros de 16 bits, quatro inteiros de 32 bits ou quatro números de ponto flutuante de precisão única em um único ciclo de clock, bem como uma operação de memória. Observe que a SPU não pode acessar diretamente a memória do sistema; os endereços de memória virtual de 64 bits formados pela SPU devem ser passados ​​da SPU para o controlador de fluxo de memória (MFC) SPE para configurar uma operação DMA dentro do espaço de endereço do sistema.

Em um cenário de uso típico, o sistema carregará os SPEs com pequenos programas (semelhantes a threads ), encadeando os SPEs juntos para lidar com cada etapa de uma operação complexa. Por exemplo, um decodificador pode carregar programas para leitura de DVD, decodificação de vídeo e áudio e exibição e os dados seriam passados ​​de SPE para SPE até finalmente chegarem à TV. Outra possibilidade é particionar o conjunto de dados de entrada e ter vários SPEs executando o mesmo tipo de operação em paralelo. A 3,2 GHz, cada SPE fornece 25,6 GFLOPS teóricos de desempenho de precisão simples.

Comparado com seus contemporâneos de computador pessoal , o desempenho geral de ponto flutuante relativamente alto de um processador Cell aparentemente supera as capacidades da unidade SIMD em CPUs como o Pentium 4 e o Athlon 64 . No entanto, comparar apenas as habilidades de ponto flutuante de um sistema é uma métrica unidimensional e específica do aplicativo. Ao contrário de um processador Cell, essas CPUs de desktop são mais adequadas ao software de uso geral geralmente executado em computadores pessoais. Além de executar várias instruções por clock, os processadores Intel e AMD apresentam preditores de ramificação . O Cell é projetado para compensar isso com a ajuda do compilador, no qual as instruções de preparação para ramificação são criadas. Para operações de ponto flutuante de precisão dupla, como às vezes usado em computadores pessoais e frequentemente usado em computação científica, o desempenho do Cell cai em uma ordem de magnitude, mas ainda atinge 20,8 GFLOPS (1,8 GFLOPS por SPE, 6,4 GFLOPS por PPE). A variante PowerXCell 8i, que foi projetada especificamente para precisão dupla, atinge 102,4 GFLOPS em cálculos de precisão dupla.

Testes da IBM mostram que os SPEs podem atingir 98% de seu desempenho de pico teórico executando multiplicação de matriz paralela otimizada.

A Toshiba desenvolveu um coprocessador alimentado por quatro SPEs, mas nenhum PPE, chamado SpursEngine, projetado para acelerar 3D e efeitos de filme em produtos eletrônicos de consumo.

Cada SPE possui uma memória local de 256 KB. No total, os SPEs possuem 2 MB de memória local.

Barramento de interconexão de elementos (EIB)

O EIB é um barramento de comunicação interno ao processador Cell que conecta os vários elementos do sistema on-chip: o processador PPE, o controlador de memória (MIC), os oito coprocessadores SPE e duas interfaces I / O fora do chip, para um total de 12 participantes no PS3 (o número de SPU pode variar em aplicações industriais). O BEI também inclui uma unidade de arbitragem que funciona como um conjunto de semáforos. Em alguns documentos, a IBM refere-se aos participantes do EIB como 'unidades'.

O EIB é atualmente implementado como um anel circular consistindo de quatro canais unidirecionais de 16 bytes de largura que rodam em pares. Quando os padrões de tráfego permitem, cada canal pode transmitir até três transações simultaneamente. Como o EIB funciona com metade da taxa de clock do sistema, a taxa efetiva do canal é de 16 bytes a cada dois relógios do sistema. Na simultaneidade máxima , com três transações ativas em cada um dos quatro anéis, a largura de banda instantânea de pico do EIB é de 96 bytes por relógio (12 transações simultâneas x 16 bytes de largura / 2 relógios do sistema por transferência). Embora esse número seja frequentemente citado na literatura da IBM, não é realista simplesmente dimensionar esse número pela velocidade do clock do processador. A unidade de arbitragem impõe restrições adicionais .

O engenheiro sênior da IBM David Krolak , designer-chefe do EIB, explica o modelo de simultaneidade:

Um anel pode iniciar uma nova operação a cada três ciclos. Cada transferência sempre leva oito batidas. Essa foi uma das simplificações que fizemos, é otimizado para transmitir muitos dados. Se você fizer operações pequenas, não funcionará tão bem. Se você pensar em trens de oito carros circulando nessa linha, desde que os trens não se encontrem, eles podem coexistir na linha.

Cada participante do EIB tem uma porta de leitura de 16 bytes e uma porta de gravação de 16 bytes. O limite para um único participante é ler e escrever a uma taxa de 16 bytes por relógio EIB (para simplificar, geralmente considerado 8 bytes por relógio do sistema). Cada processador SPU contém uma fila de gerenciamento DMA dedicada , capaz de programar longas sequências de transações para vários terminais sem interferir nos cálculos em andamento da SPU; essas filas de DMA também podem ser gerenciadas local ou remotamente, fornecendo flexibilidade adicional no modelo de controle.

Os dados fluem em um canal EIB gradativamente ao redor do anel. Como há doze participantes, o número total de passos ao redor do canal de volta ao ponto de origem é doze. Seis etapas é a distância mais longa entre qualquer par de participantes. Um canal EIB não tem permissão para transmitir dados que requeiram mais de seis etapas; esses dados devem seguir a rota mais curta ao redor do círculo na outra direção. O número de etapas envolvidas no envio do pacote tem muito pouco impacto na latência de transferência: a velocidade do clock que conduz as etapas é muito rápida em relação a outras considerações. No entanto, distâncias de comunicação maiores são prejudiciais ao desempenho geral do EIB, pois reduzem a simultaneidade disponível.

Apesar do desejo original da IBM de implementar o EIB como uma barra transversal mais poderosa, a configuração circular que eles adotaram para poupar recursos raramente representa um fator limitante no desempenho do chip Cell como um todo. Na pior das hipóteses, o programador deve tomar cuidado extra para agendar padrões de comunicação onde o EIB é capaz de funcionar em altos níveis de simultaneidade.

David Krolak explicou:

Bem, no início, no início do processo de desenvolvimento, várias pessoas pressionavam por um interruptor de barra transversal, e da forma como o ônibus foi projetado, você poderia realmente retirar o EIB e colocar um interruptor de barra transversal se estivesse disposto a dedicar mais silício espaço no chip para a fiação. Tivemos que encontrar um equilíbrio entre conectividade e área, e simplesmente não havia espaço suficiente para colocar um switch de barra transversal completo. Então, criamos essa estrutura de anel que consideramos muito interessante. Ele se encaixa dentro das restrições de área e ainda tem uma largura de banda impressionante.

Avaliação de largura de banda

A 3,2 GHz, cada canal flui a uma taxa de 25,6 GB / s. Visualizar o EIB isoladamente dos elementos do sistema que ele conecta, alcançando doze transações simultâneas nessa taxa de fluxo, resulta em uma largura de banda abstrata do EIB de 307,2 GB / s. Com base nesta visão, muitas publicações IBM descrevem a largura de banda EIB disponível como "maior que 300 GB / s". Este número reflete o pico da largura de banda instantânea do EIB escalonada pela frequência do processador.

No entanto, outras restrições técnicas estão envolvidas no mecanismo de arbitragem para pacotes aceitos no barramento. O grupo IBM Systems Performance explicou:

Cada unidade no EIB pode enviar e receber simultaneamente 16 bytes de dados a cada ciclo do barramento. A largura de banda máxima de dados de todo o EIB é limitada pela taxa máxima na qual os endereços são espionados em todas as unidades do sistema, que é um por ciclo de barramento. Uma vez que cada solicitação de endereço rastreado pode potencialmente transferir até 128 bytes, o pico teórico da largura de banda de dados no EIB a 3,2 GHz é 128Bx1,6 GHz = 204,8 GB / s.

Esta citação aparentemente representa toda a extensão da divulgação pública da IBM desse mecanismo e seu impacto. A unidade de arbitragem EIB, o mecanismo de espionagem e a geração de interrupção em falhas de tradução de segmento ou página não estão bem descritos no conjunto de documentação ainda tornado público pela IBM.

Na prática, a largura de banda efetiva do EIB também pode ser limitada pelos participantes do anel envolvidos. Embora cada um dos nove núcleos de processamento possa sustentar 25,6 GB / s de leitura e gravação simultaneamente, o controlador de interface de memória (MIC) está vinculado a um par de canais de memória XDR, permitindo um fluxo máximo de 25,6 GB / s para leituras e gravações combinadas e o dois controladores IO são documentados como suportando uma velocidade de entrada combinada de pico de 25,6 GB / se uma velocidade de saída combinada de pico de 35 GB / s.

Para aumentar ainda mais a confusão, algumas publicações mais antigas citam a largura de banda do EIB assumindo um clock do sistema de 4 GHz. Este quadro de referência resulta em um valor de largura de banda EIB instantâneo de 384 GB / se um valor de largura de banda limitado por arbitragem de 256 GB / s.

Considerando todas as coisas, o número teórico de 204,8 GB / s mais citado é o melhor a se ter em mente. O grupo IBM Systems Performance demonstrou fluxos de dados centrados em SPU atingindo 197 GB / s em um processador Cell rodando a 3,2 GHz, portanto, esse número também é um reflexo justo da prática.

Controladores de memória e I / O

A célula contém uma macro Rambus XIO de canal duplo que faz interface com a memória Rambus XDR . O controlador de interface de memória (MIC) é separado da macro XIO e é projetado pela IBM. O link XIO-XDR roda a 3,2 Gbit / s por pino. Dois canais de 32 bits podem fornecer um máximo teórico de 25,6 GB / s.

A interface de E / S, também de design Rambus, é conhecida como FlexIO . A interface FlexIO é organizada em 12 pistas, cada uma sendo um caminho ponto a ponto unidirecional de 8 bits de largura. Cinco caminhos ponto a ponto de 8 bits de largura são vias de entrada para a célula, enquanto os sete restantes são de saída. Isso fornece uma largura de banda de pico teórica de 62,4 GB / s (36,4 GB / s de saída, 26 GB / s de entrada) a 2,6 GHz. A interface FlexIO pode ser sincronizada de forma independente, típ. a 3,2 GHz. 4 vias de entrada + 4 vias de saída suportam coerência de memória.

Possíveis aplicações

Placa de processamento de vídeo

Algumas empresas, como a Leadtek , lançaram placas PCI-E baseadas no Cell para permitir a transcodificação "mais rápida do que em tempo real" de vídeo H.264 , MPEG-2 e MPEG-4 .

Servidor blade

Em 29 de agosto de 2007, a IBM anunciou o BladeCenter QS21. Gerando operações de ponto flutuante medido de 1,05 giga por segundo (gigaFLOPS) por watt, com desempenho máximo de aproximadamente 460 GFLOPS, é uma das plataformas de computação com maior eficiência energética até hoje. Um único chassi BladeCenter pode atingir operações de ponto flutuante de 6,4 tera por segundo (teraFLOPS) e mais de 25,8 teraFLOPS em um rack padrão de 42U.

Em 13 de maio de 2008, a IBM anunciou o BladeCenter QS22. O QS22 apresenta o processador PowerXCell 8i com cinco vezes o desempenho de ponto flutuante de precisão dupla do QS21 e capacidade para até 32 GB de memória DDR2 no blade.

A IBM descontinuou a linha de servidores Blade baseada em processadores Cell a partir de 12 de janeiro de 2012.

Placa PCI Express

Várias empresas fornecem placas PCI-e utilizando o IBM PowerXCell 8i. O desempenho é relatado como 179,2 GFlops (SP), 89,6 GFlops (DP) a 2,8 GHz.

Videogames para console

Sony 's PS3 consola de jogos de vídeo foi a primeira aplicação de produção do processador celular, clock de 3,2  GHz e contendo a sete dos oito SPEs operacionais, para permitir Sony para aumentar o rendimento no fabrico do processador. Apenas seis dos sete SPEs são acessíveis aos desenvolvedores, já que um é reservado pelo sistema operacional.

Cinema em casa

A Toshiba produziu HDTVs usando Cell. Eles apresentaram um sistema para decodificar 48 streams MPEG-2 de definição padrão simultaneamente em uma tela 1920 × 1080 . Isso pode permitir que um espectador escolha um canal com base em dezenas de vídeos em miniatura exibidos simultaneamente na tela.

Supercomputação

O supercomputador da IBM , IBM Roadrunner , era um híbrido de General Purpose x86-64 Opteron e também de processadores Cell. Este sistema assumiu o primeiro lugar na lista dos 500 melhores de junho de 2008 como o primeiro supercomputador a funcionar em velocidades petaFLOPS , tendo ganho uma velocidade sustentada de 1.026 petaFLOPS usando o benchmark LINPACK padrão . O IBM Roadrunner usou a versão PowerXCell 8i do processador Cell, fabricado com tecnologia de 65 nm e SPUs aprimorados que podem lidar com cálculos de precisão dupla nos registros de 128 bits, atingindo precisão dupla de 102 GFLOPs por chip.

Computação de cluster

Clusters de consoles PlayStation 3 são uma alternativa atraente para sistemas de ponta baseados em Cell blades. O Innovative Computing Laboratory, um grupo liderado por Jack Dongarra , do Departamento de Ciência da Computação da Universidade do Tennessee, investigou essa aplicação em profundidade. A Terrasoft Solutions está vendendo clusters PS3 de 8 e 32 nós com Yellow Dog Linux pré-instalado, uma implementação da pesquisa de Dongarra.

Conforme relatado pela primeira vez pela Wired em 17 de outubro de 2007, uma aplicação interessante de usar o PlayStation 3 em uma configuração de cluster foi implementada pelo astrofísico Gaurav Khanna , do departamento de Física da Universidade de Massachusetts Dartmouth , que substituiu o tempo usado em supercomputadores por um cluster de oito PlayStation 3s. Posteriormente, a próxima geração desta máquina, agora chamada de PlayStation 3 Gravity Grid , usa uma rede de 16 máquinas e explora o processador Cell para a aplicação pretendida, que é a coalescência de buraco negro binário usando a teoria de perturbação . Em particular, o cluster realiza simulações astrofísicas de grandes buracos negros supermassivos capturando objetos compactos menores e gerou dados numéricos que foram publicados várias vezes na literatura científica relevante. A versão do processador Cell usada pelo PlayStation 3 tem uma CPU principal e 6 SPEs disponíveis para o usuário, dando à máquina Gravity Grid uma rede de 16 processadores de uso geral e 96 processadores vetoriais. A máquina tem um custo único de US $ 9.000 para ser construída e é adequada para simulações de buracos negros que, de outra forma, custariam US $ 6.000 por execução em um supercomputador convencional. Os cálculos do buraco negro não consomem muita memória e são altamente localizáveis ​​e, portanto, são adequados para essa arquitetura. Khanna afirma que o desempenho do cluster excede o de um cluster Linux tradicional com mais de 100 núcleos Intel Xeon em suas simulações. O PS3 Gravity Grid atraiu atenção significativa da mídia em 2007, 2008, 2009 e 2010.

O laboratório computacional de Bioquímica e Biofísica da Universitat Pompeu Fabra , em Barcelona , implantou em 2007 um sistema BOINC denominado PS3GRID para computação colaborativa baseado no software CellMD, o primeiro desenvolvido especificamente para o processador Cell.

O Laboratório de Pesquisa da Força Aérea dos Estados Unidos implantou um cluster de PlayStation 3 com mais de 1700 unidades, apelidado de "Condor Cluster", para analisar imagens de satélite de alta resolução . A Força Aérea afirma que o Condor Cluster seria o 33º maior supercomputador do mundo em termos de capacidade. O laboratório abriu o supercomputador para uso por universidades para pesquisa.

Computação distribuída

Com a ajuda do poder de computação de mais de meio milhão de consoles PlayStation 3, o projeto de computação distribuída Folding @ home foi reconhecido pelo Guinness World Records como a rede distribuída mais poderosa do mundo. O primeiro recorde foi alcançado em 16 de setembro de 2007, pois o projeto ultrapassou um petaFLOPS , o que nunca havia sido atingido por uma rede de computação distribuída. Além disso, os esforços coletivos permitiram que o PS3 sozinho atingisse a marca dos petaFLOPS em 23 de setembro de 2007. Em comparação, o segundo supercomputador mais poderoso do mundo na época, o BlueGene / L da IBM , teve desempenho em torno de 478,2 teraFLOPS, o que significa computação de Folding @ home a potência é aproximadamente o dobro do BlueGene / L (embora a interconexão da CPU no BlueGene / L seja mais de um milhão de vezes mais rápida do que a velocidade média da rede no Folding @ home). Em 7 de maio de 2011, o Folding @ home rodava a cerca de 9,3 x86 petaFLOPS, com 1,6 petaFLOPS gerado apenas por 26.000 PS3s ativos. No final de 2008, um cluster de 200 consoles PlayStation 3 foi usado para gerar um certificado SSL desonesto , efetivamente quebrando sua criptografia.

Mainframes

A IBM anunciou em 25 de abril de 2007 que começaria a integrar seus microprocessadores Cell Broadband Engine Architecture na linha de mainframes da empresa . Isso levou a um gameframe .

Quebra de senha

A arquitetura do processador o torna mais adequado para aplicativos de ataque de força bruta criptográfico assistido por hardware do que os processadores convencionais.

Engenharia de software

Devido à natureza flexível da Cell, existem várias possibilidades de utilização dos seus recursos, não se limitando apenas a diferentes paradigmas computacionais:

Fila de trabalho

O PPE mantém uma fila de trabalhos, agenda trabalhos em SPEs e monitora o andamento. Cada SPE executa um "mini kernel" cuja função é buscar um trabalho, executá-lo e sincronizá-lo com o PPE.

Auto-multitarefa de SPEs

O mini kernel e o agendamento são distribuídos entre os SPEs. As tarefas são sincronizadas usando mutexes ou semáforos como em um sistema operacional convencional . Tarefas prontas para execução aguardam em uma fila para que um SPE as execute. Os SPEs usam memória compartilhada para todas as tarefas nesta configuração.

Processamento de fluxo

Cada SPE executa um programa distinto. Os dados vêm de um fluxo de entrada e são enviados para SPEs. Quando um SPE termina o processamento, os dados de saída são enviados para um fluxo de saída.

Isso fornece uma arquitetura flexível e poderosa para processamento de fluxo e permite o agendamento explícito para cada SPE separadamente. Outros processadores também são capazes de realizar tarefas de streaming, mas são limitados pelo kernel carregado.

Desenvolvimento de software de código aberto

Em 2005, os patches que permitem o suporte a Cell no kernel do Linux foram enviados para inclusão por desenvolvedores IBM. Arnd Bergmann (um dos desenvolvedores dos patches mencionados acima) também descreveu a arquitetura Cell baseada em Linux na LinuxTag 2005. A partir da versão 2.6.16 (20 de março de 2006), o kernel do Linux oficialmente suporta o processador Cell.

Ambos PPE e SPEs são programáveis ​​em C / C ++ usando uma API comum fornecida por bibliotecas.

A Fixstars Solutions fornece Yellow Dog Linux para sistemas baseados em IBM e Mercury Cell, bem como para o PlayStation 3. Terra Soft fez uma parceria estratégica com a Mercury para fornecer um Linux Board Support Package para Cell e suporte e desenvolvimento de aplicativos de software em vários outros Cell plataformas, incluindo o IBM BladeCenter JS21 e Cell QS20, e soluções baseadas em Mercury Cell. A Terra Soft também mantém o Conjunto de Construção e Gerenciamento de Clusters Y-HPC (Computação de Alto Desempenho) e ferramentas de sequenciamento de genes Y-Bio. O Y-Bio foi desenvolvido com base no padrão RPM Linux para gerenciamento de pacotes e oferece ferramentas que ajudam os pesquisadores de bioinformática a conduzir seu trabalho com maior eficiência. A IBM desenvolveu um pseudo-sistema de arquivos para Linux, denominado "Spufs", que simplifica o acesso e o uso dos recursos SPE. A IBM está atualmente mantendo um kernel Linux e portas GDB , enquanto a Sony mantém a cadeia de ferramentas GNU ( GCC , binutils ).

Em novembro de 2005, a IBM lançou um "Cell Broadband Engine (CBE) Software Development Kit Versão 1.0", que consiste em um simulador e ferramentas variadas, em seu site. As versões de desenvolvimento do kernel e das ferramentas mais recentes para o Fedora Core 4 são mantidas no site do Barcelona Supercomputing Center .

Em agosto de 2007, a Mercury Computer Systems lançou um kit de desenvolvimento de software para PlayStation 3 para computação de alto desempenho.

Em novembro de 2007, a Fixstars Corporation lançou o novo módulo "CVCell" com o objetivo de acelerar várias APIs OpenCV importantes para Cell. Em uma série de testes de cálculo de software, eles registraram tempos de execução em um processador Cell de 3,2 GHz entre 6x e 27x mais rápido em comparação com o mesmo software em um Intel Core 2 Duo de 2,4 GHz.

Galeria

Ilustrações das diferentes gerações de processadores Cell / BE e do PowerXCell 8i. As imagens não estão em escala; Todos os pacotes Cell / BE medem 42,5 × 42,5 mm e o PowerXCell 8i mede 47,5 × 47,5 mm.

Veja também

Referências

links externos