Você está na página 1de 15

MC722 Projeto de Sistemas Computacionais

ARQUITETURAS VETORIAIS

Marcelo Oliveira de Paiva 016762 Marcelo Picolo Khoury 951119 Joo Eduardo Ferreira Bertacchi 016364

1. Introduo
O processamento vetorial est intimamente associado ao conceito de supercomputador. Assim como a maioria das tcnicas de arquitetura para conseguir alto desempenho, ele explora a regularidade da estrutura a ser computada, no caso, o fato de que muitos cdigos contm laos que varrem vetores lineares de dados, realizando operaes simtricas. Podem ser imaginadas diversas aplicaes para estes processadores. Podemos citar simulaes climticas, seqenciamento do genoma, clculos cientficos (mecnica dos fluidos, por exemplo), processamento de imagens, entre muitas outras. Todas estas aplicaes envolvem o processamento de uma quantidade imensa dados de modo relativamente simtrico. Nada mais lgico do que utilizar processadores vetoriais, os quais nasceram justamente para resolver estes problemas. Neste trabalho veremos um breve histrico do desenvolvimento dos processadores vetoriais seguido do estudo do primeiro computador a utilizar esta tecnologia na forma plena, o Cray-1. Em seguida faremos uma anlise mais aprofundada sobre como funciona a arquitetura vetorial. Para terminar, sero apresentados dois casos atuais em que o processamento vetorial utilizado: ESC e Cell.

2. Histrico
A primeira vez que se ouviu falar em processamento vetorial foi no inicio da dcada de 1960 na Westinghouse Electric Corporation durante o projeto Solomon. Sua meta era aumentar o desempenho matemtico, utilizando-se de uma grande quantidade de co-processadores matemticos sob o controle de uma nica CPU. Isso permitiria que um conjunto de dados, agrupados num vetor, fosse processado por instrues especiais. Em 1962 o projeto foi cancelado e, mais tarde, retomado pela Universidade de Illinois. Iniciaram com a meta de atingir 1Gflops, mas no final s conseguiram 150Mflops. Outros projetos se seguiram a este. Foram criados o STAR-100, da CDC e o ASC, da Texas Instruments. Ambos no obtiveram sucesso; no caso do ASC por trabalhar com vetores muito pequenos (quatro elementos) e no caso do STAR-100 por ser mais lento que os computadores da CDC que no se utilizavam da arquitetura vetorial. A tcnica s foi utilizada eficientemente em 1976, por Seymour Cray. Ele foi o fundador da Cray Research e, durante cerca de 30 anos, a resposta para a pergunta: Quem fabrica o computador mais rpido de todos?. O supercomputador Cray-1 foi o primeiro a se beneficiar de uma arquitetura

vetorial. Diferentemente do ASC e do STAR-100, que trabalhavam com os dados em memria, este possua registradores vetoriais, que faziam com que o processamento dos dados fosse diversas vezes mais rpido que seus concorrentes vetoriais. Aps o uso em carter de teste durante seis meses, foi adquirido pela NCAR (National Center for Atmospheric Research), o primeiro cliente da Cray

Research, pelo valor de US$8,86 milhes. O supercomputador, que pesava 5,5 toneladas e possuia um sistema de refrigerao a gs freon, era capaz de atingir o pico de 133 Megaflops com seus 8MB de memria de alto desempenho. Com o desenvolvimento desta nova arquitetura, tornou-se necessria a criao de um pacote de software voltado para ela. Foram lanados ento, em 1978, um sistema operacional (COS Cray Operating System), o primeiro compilador Fortran com vetorizao automtica (CFT) e a Cray Assembler Language (CAL). Outras mquinas se seguiram aps o Cray-1. A CDC, por exemplo, deu sua ltima cartada no mercado de supercomputadores com o ETA-10. Este foi um fracasso de vendas, o que serviu para que a companhia abandonasse completamente o ramo dos computadores de alto desempenho. Diversas companhias japonesas (Fujitsu, Hitachi e NEC) passaram a desenvolver computadores similares ao Cray-1, com relativo sucesso. Porm Cray continuou sendo o lder de desempenho com a srie de mquinas Cray-2, Cray X-MP e Cray Y-MP. Atualmente, o mercado de supercomputadores est voltado para o processamento em paralelo realizado por diversas mquinas ao invs de melhoras na tecnologia vetorial. Isto se deve principalmente ao melhor custo benefcio da soluo.

3. Teoria do processamento vetorial


No ano de 1972, o pesquisador Michael Flynn dividiu os computadores em quatro classes de processamento:

SISD: o computador consiste de uma unidade de processamento que recebe um fluxo simples de instrues e opera sobre um simples fluxo de dados. SIMD: N processadores, cada um com sua unidade de controle e unidade de processamento, dividem uma mesma memria e executam diferentes instrues sobre o mesmo dado. O processamento vetorial muito parecido com este modelo, diferindo somente pelo fato de que as unidades funcionais em mquinas vetoriais so projetadas para funcionar na forma de pipeline, enquanto em mquinas SIMD os elementos so operados todos de uma s vez [Patterson]. MISD: o computador consiste de uma unidade de controle e N unidades de processamento. Todo o processamento esta sobre o controle de um nico fluxo de instrues mas opera sobre N fluxos de dados. Esta arquitetura pode ser utilizada para o caso de diferentes algoritmos atuarem em um mesmo conjunto de dados, no entanto muito difcil de ser encontrada. MIMD: o computador consiste de uma unidade de controle e N unidades de processamento. Todo o processamento esta sobre o controle de um nico fluxo de instrues mas opera sobre N fluxos de dados

Os processadores vetoriais se diferenciam dos escalares pelo fato de trabalharem com conjuntos de operaes em alto nvel, que so chamados de vetores. Nas arquiteturas vetoriais, so utilizados registradores de 1 a 8 Kb que podem ser vistos como arranjos de 64, 32, 16 ou 8 bits. Vale lembrar que a quantidade de registradores depende do projeto, podendo variar de 8 a algumas dezenas.

Os processadores vetoriais tm algumas vantagens sobre os SISD tradicionais, dentre elas: 1. Resultados independentes dos anteriores, permitindo pipelines mais profundos que podem funcionar em clocks muito mais elevados. 2. Uma nica instruo vetorial tem a capacidade de realizar uma grande quantidade de trabalho. Isto significa que uma menor quantidade de instrues so buscadas na memria e que menos instrues de desvio sero realizadas, diminuindo assim os problemas causados por desvios condicionais em pipeline. 3. As instrues vetoriais acessam um bloco em cada acesso, diminuindo o perodo de latncia (inicializao + enchimento do pipeline). 4. Pelo fato das instrues vetoriais acessarem a memria segundo padres muito bem definidos, existe a possibilidade de inmeros bancos de memria operarem simultaneamente no fornecimento de operandos.

Componentes de um processador vetorial


Um computador vetorial consiste basicamente dos seguintes elementos:

1. Memria principal 2. Processador escalar 3. Controlador vetorial 4. Controlador de memria e gerador de endereos vetoriais 5. Registradores 6. Unidade aritmtica pipeline

O Processador escalar realiza as tarefas que devem ser feitas de modo seqencial, como execuo de trechos de cdigo seqenciais, testes de dependncia de dados, gerenciamentos de E/S e memria, e controle de programa. Quando o processador escalar identifica uma instruo vetorial, esta passada ao Controlador vetorial. Este controla a execuo das instrues, calculando os parmetros de endereamento dos operandos vetoriais e configurando a Unidade aritmtica pipeline.

Os parmetros de endereamento so enviados ao Controlador de memria e gerador de endereos que a partir destes parmetros realiza os acessos Memria principal para a busca dos

operandos. A Unidade aritmtica pipeline executa as instrues vetoriais aplicando as funes aritmticas sobre vetores. Os registradores tm como objetivo alimentar com dados a Unidade aritmtica, servindo como meio de armazenamento intermedirio entre a Unidade aritmtica e a Memria principal. Por fim, vale observar que existem dois aspectos a serem considerados em um processador vetorial. O primeiro diz respeito ao tempo de inicializao do pipeline, relacionado preparao do Controlador vetorial e do Controlador de memria e gerador de endereos vetoriais. O segundo ponto importante o tempo de enchimento do pipeline, contado desde o incio da operao no pipeline at a sada do primeiro resultado.

Formas de endereamento
Existem duas maneiras de realizar o endereamento na arquitetura vetorial: denso e esparso.

1. Endereamento denso

a. Seqencial - os dados so dispostos de maneira adjacente, ou seja, se encontramos o valor E(i) uma posio de memria M, o valor E(i + 1) estar na posio M + 1. b. No seqencial mas regular - assim como no caso seqencial, os dados se encontram adjacentes, com a diferena que dados contguos mantm uma distncia fixa K, ou seja, caso o valor E(i) esteja na posio de M, o valor E(i + 1) ser encontrado na posio de memria M + (1 x K), o valor E(i + 2) na posio M + (2 x K) e assim por diante. c. Submatriz - Para acessar uma submatriz m x n da matriz M x N, devem ser lidos os n dados a partir do primeiro elemento (primeira linha). Pulam-se (N n) dados e lem-se os n dados da prxima linha, at completar as m linhas.

Figura 1: Diagrama ilustrativo de um processador vetorial

2. Endereamento esparso

O modo esparso de enderear uma maneira muito eficiente em casos onde os dados analisados so, por exemplo, matrizes contendo na maior parte da sua extenso valores nulos. Nestes casos, o despercio de memria seria muito grande caso fosse utilizada a maneira usual de acessar e tratar os dados. Para corrigir esse problema, foram criadas duas tcnicas. A primeira delas utiliza um vetor de bits, que tem a funo de indicar qual elemento de um vetor devem participar ou no de uma operao. Por exemplo, caso a operao seja uma multiplicao por 2 com operando A, resultado da multiplicao V, resultado final R e vetor de bits B, podemos ter:

R(i) = A(i) se B(i) = 0 ou R(i) = V(i) se B(i) = 1

Desta maneira, o vetor de bits mapeia todos os operando de uma maneira eficiente e econmica. Vale lembrar que este tipo de endereamento complica consideravelmente a implementao. Um segundo modo seria por meio da utilizao de vetores de ndice, que guardam o endereo (ou deslocamento a partir de um registrador base), de onde est o elemento do vetor. Assim, em cada posio do vetor haver, em vez do elemento a ser operado, o endereo do elemento na memria. A implementao desta tcnica causa um grande aumento na complexidade do hardware da mquina, pois alm de haver mais de um acesso memria para busca de cada dado, devem ser realizadas operaes como soma de base e deslocamento para clculo de endereos.

Comprimento do vetor
Os registradores vetoriais conseguem armazenar um nmero finito mximo de elementos. Este nmero armazenado no registrador MVL (maximum vector length). No entanto, este tipo de estruturao gera alguns problemas. Um deles est relacionado ao fato de termos (ou no) que trabalhar sempre com um nmero de elementos mltiplo de MVL. A resposta a isto est na utilizao de um vetor chamado VL (vector length), que alm de controlar a leitura e escrita por meio de load e store vetoriais, ajuda em casos onde o nmero de elementos s efetivamente conhecido em tempom de execuo. Esta tcnica conhecida por minerao de superfcie e pode ser observada no exemplo:
VL = (N mod MVL); for (I=0; I<VL; I++) Y[I]=A*X[I]+Y[I]; // Primeiro conjunto de elementos

low = (N mod MVL); // O ponto de partida o ltimo lido VL = MVL; for (I=low; I<N; I++) Y[I]=A*X[I]+Y[I]; // Demais N elementos com tamanho MVL

Processamento Horizontal e Vertical


Boa parte das aplicaes em processamento vetorial envolvem o clculo e tratamento de matrizes. As matrizes podem ser processadas horizontalmente (operaes feitas linha-a-linha, da esquerda para a direita) ou verticalmente (operaes efetuadas sobre as colunas, de cima para baixo). Existe ainda o Processamento hbrido, ou processamento em lao, que envolve ambos os tipos anteriores de processamento. Considere uma matriz Xnm a ser processada da maneira horizontal com resultado armazenado em Vn. Realizam-se m-1 somas por linha, em seqncia. Assim, processa-se a soma de todos os elementos da linha 1, e guarda-se o resultado em Y1. Ento, realiza-se o mesmo procedimento at a ltima linha. No caso de processamento vertical, todos os somatrios so realizados gradativamente, em paralelo, armazenando os resultados em somas parciais. Para cada linha do vetor so operados os elementos correspondentes s duas primeiras colunas, o resultado de cada uma destas operaes posteriormente operado com o prximo elemento de cada linha (prxima coluna), e assim se procede, at que se tenha processado todas as colunas. Ao fim de todas as operaes, as somas parciais sero o resultado final. Isto significa que, ao fim da operao sobre a ltima coluna, todos os elementos do resultado sero obtidos em paralelo. De maneira simplificada, pode-se dizer que o processamento vertical possibilita uma melhora significativa no tempo total de execuo, que ocorre devido a uma inicalizao nica do pipeline. No processamento horizontal, realiza-se um somatrio por linha da matriz, fazendo com que seja necessria a reinicializao do pipeline a cada nova linha.

Estilos de arquiteturas vetoriais


Os processadores vetoriais do tipo Memria-Memria tm a caracterstica de realizar todas as operaes diretamente em memria. Em processadores do tipo Vetor-Registrador, todas as operaes so realizadas em registradores, com exceo das instrues load e store, equivalente ao que conhecemos na arquitetura load-store convencional. Vale lembrar que a partir do final dos anos 80, praticamente todas as mquinas vetoriais fabricadas passaram a ser do tipo Vetor-Registrador.

Instrues vetoriais
As instrues vetoriais normalmente possuem os seguintes campos:

1. Cdigo da operao: indica qual a operao a ser realizada no pipeline; 2. Endereo de base: tambm pode ser um registrador vetorial, especifica de onde buscar os operandos e onde armazenar os resultados. 3. Incremento de endereo: indica de quanto deve ser incrementado o endereo para se encontrar o prximo elemento do vetor; 4. Off-set de endereo: deslocamento em relao ao endereo base, para acessar vetores deslocados em paralelo; 5. Tamanho do vetor: usado para determinar onde a instruo deve parar de operar sobre o vetor.

Na tabela 1, podemos observar algumas instrues vetoriais em linguagem de montagem. De maneira resumida, a instruo VLD carrega o registrador vetorial V1 a partir do endereo que esta em R1 considerando o espaamento ou stride igual a uma unidade, a instruo VLDS inicia o carregamento dos dados a partir do endereo que est em R1 mas considerando o espaamento indicado em R2 e finalmente a instruo VLDX carrega o registrador vetorial V1 tambm a partir do endereo R1 no entanto, o espaamento dado pelos valores contidos no registrador vetorial V2.

Instruo VADD.VV VADD.SV VLD VLDS VLDX

Operandos V1, V2, V3 V1, R0, V2 V1, R1 V1, R1, R2 V1, R1, V2

Operao V1 = V2 + V3 V1 = R0 + V2 V1 = M[ R1 . . R1 + 63 ] V1 = M[ R1 .. R1+63*R2 ] V1 = M[ R1 + V2(i), i = 0 .. 63 ]

Comentrios Vetor x Vetor Escalar x Vetor Load com Stride igual a 1 Load com Stride igual a R2 Load indexado

Tabela 1: exemplo de instrues vetoriais.

O termo stride est relacionado forma de leitura dos dados, que pode ser seqencial assim como na VLD ou seqencial espaado como em VLDS.

Encadeamento

O encadeamento ou chaining uma tcnica utilizada para aumentar a performance no processador.

Considere o seguinte cdigo:

MULTV V1, V2, V3 ADDV V4, V1, V5

Normalmente, a segunda instruo seria executada somente aps o trmino da primeira, pois h uma dependncia dos dados contidos no vetor V1. Isto ocorre porque o vetor V1 considerado como uma nica entidade, e no como um grupo de registradores individuais. Ao considerarmos cada elemento como um elemento individual, podemos aplicar o conceito de forwarding usado em pipelines. Assim, possvel iniciar a instruo VADD em outra unidade funcional quando o primeiro resultado estiver disponvel.

Figura 2: encadeamento chaining (obtido na referncia bibliogrfica 3)

4. Anlise de caso: Cray-1


O Cray-1 foi um poderoso computador de propsito geral capaz de elevadas taxas de processamento. Essas taxas eram alcanadas combinando processamento vetorial e escalar numa nica unidade central de processamento, que tinha sua disposio uma extensa e rpida memria.

A unidade central de processamento (CPU) consistia de uma sesso computacional, uma de memria e uma de entrada/sada. O operava com um perodo de clock de 12,5 ns, processando 80 milhes de instrues por segundo (MIPS). A memria podia variar de 0,25 milho de palavras de 64 bits a 1 milho de palavras. Existiam 12 canais e entrada e 12 de sada, na sesso de entrada/sada, conectando uma unidade de controle de manuteno (MCU), que servia como terminal para interface

de comunicao entre o operador e o CRAY-1, um subsistema de disco e uma variedade terminais e perifricos.

Sesso computacional
A sesso computacional do CRAY-1 era formada pelo conjunto de registradores, incluindo os registradores vetoriais, quatro conjunto de unidades funcionais e buffers de instrues.

Figura 3: Pipeline do computador Cray-1.

Registradores
O CRAY-1 possua duas categorias de registradores: os registradores operacionais e os de suporte. Os primeiros eram responsveis diretos pelo processamento das instrues no CRAY-1. Os de suporte eram encarregados do controle na execuo das instrues. Os registradores operacionais eram divididos em cinco conjunto de registradores, sendo trs primrios e dois secundrios. Os registradores primrios eram: oito registradores de endereamento de 24 bits (A), oito registradores escalares 64 bits (S) e oito registradores de vetores 64 elementos de 64 bits para cada elemento (V). Os registradores secundrios eram: sessenta e quatro registradores intermedirios de endereamento de 64 bits (B) e sessenta e quatro registradores intermedirios escalares de 64 bits (T).

Os registradores tipo V eram vitais para o processamento vetorial. Sendo um agrupamento de 64 elementos, os registradores V podiam ser considerados como vetores, sendo possvel tambm usa-los para representao de matrizes. Era possvel tambm fazer transferncias entre registradores S e elementos individuais dos registradores V.

Existiam oito registradores de suporte com funes bem definidas que compreendiam controle do tamanho do vetor processado nos registradores vetoriais, contador de instrues, endereo base, endereo limite, flag, entre outras funes.

Figura 4: Um supercomputador CRAY-1

Figura 5: O mdulo do CRAY-1

Unidades funcionais
O CRAY-1 possua doze unidades funcionais, trabalhando juntas em pipeline. As doze unidades funcionais eram divididas em quatro grupos: 1. Unidade Funcional Vetorial: operava com os registradores vetoriais, permitindo diversas operaes com vetores atravs das instrues vetoriais. 2. Unidade Funcional de Ponto Flutuante: era usada em operaes escalares e vetoriais. 3. Unidade Funcional Escalar: operava com os registradores escalares (S). 4. Unidade Funcional de Endereamento: operava com os oito registradores de endereo (A).

a. Buffers de instrues

O CRAY-1 possua quatro buffers de instrues com 64 parcelas de instrues de 16 bits cada. Sua taxa de transferncia com a memria era quatro vezes mais rpida que para os registradores vetoriais.

b. Memria

O CRAY-1 podia ter uma capacidade de memria de 2 MB, 4 MB ou 8 MB. Cada memria possua 16 bancos indepentes com 65 mil palavras de 64 bits cada. O perodo de acesso a cada banco era de 50 ns. A taxa de transferncia para registradores do tipo B, T e V era de uma palavra por ciclo de clock, e para os do tipo A e S era de duas palavras por ciclo de clock. Para os buffers de instrues, a taxa era de 4 palavras por ciclo de clock.

c. Entrada e sada

A sesso de entrada e sada possua vinte quatro canais de I/O separados em quatro grupos de seis canais cada um. Cada grupo tinha seis canais de entrada e seis de sada, que eram alimentados com dados da memria a cada 4 ciclos de clock. A taxa mxima de transferncia em cada canal era de 1 palavra em cada 100 ns. O tamanho mximo de um fluxo monoltico de dados era de 500 mil palavras.

5. Aplicaes Prticas
Earth Simulator Computer (ESC)
Entre os anos de 2002 e 2004, sua capacidade de processamento de 35.86 TeraFlops renderam-lhe o ttulo de

computador mais rpido do mundo. Foi construdo pela NEC, Nippon Electric

Corporation, com a finalidade de realizar simulaes climticas e est localizado no Earth Simulator Center, Yokohama-shi,

Japo.. composto por 640 ns, cada um com 8 processadores vetoriais e 16 GB de memria. O sistema tem capacidade de armazenamento em disco de 700TB e armazenamento em massa (fita) de 1,6 petabytes.

Processamento de Imagens (PS3 - Cell)


De certa forma ainda um mistrio como ser o novo PlayStation da Sony, o PS3. A entrada da Microsoft no mercado de consoles para vdeo games, com seu X-BOX, assustou a atual lder de mercado, Sony. Afinal, a empresa de Bill Gates tem um vasto histrico de prticas monopolistas e destruio de empresas slidas. Um exemplo clssico foi a total extino da Netscape, lder absoluta no mercado de browsers at 1997, que ocorreu em menos de 5 anos. A gigante do software no entrou sozinha neste mercado. Procurou a parceria de peso da Intel, a maior produtora de processadores. Uma anlise realista fez a Sony perceber que o novo console da concorrente tem potencial para produzir grficos a uma qualidade um pouco superior a do PS2 e, o pior, ser vendido a um preo mais baixo. Isto porque a produo em grande escala de chips da Intel barateia enormemente o custo de produo e o X-BOX produzido com os mesmos chips que vo parar nos PCs. Vendo-se acuada, a atual lder dos consoles buscou parceiras a altura da concorrncia. Manteve seu contrato com a Toshiba, co-desenvolvedora do PS2, e buscou a ajuda da IBM, uma grande criadora de chips de alto desempenho. Foi ai que nasceu o projeto Cell. Trata-se de um novo processador, com uma arquitetura totalmente nova. Especialistas dizem que um produto desses, totalmente novo, aparece em mdia uma vez a cada dcada. A arquitetura baseada num sistema de clulas, cada uma contendo uma CPU e oito processadores vetoriais (APU) cada um com 128K de memria. As clulas so conectadas memria central de 64MB atravs de um barramento de

1024 bits. Estima-se que o PS3, a ser construdo com esta nova arquitetura, ser entre 200 e 1000 vezes mais rpido que o PS2. Se for 1000 vezes mais rpido que o PS2, o console ser capaz de produzir imagens com qualidade de foto em tempo real. Porm ainda restam algumas duvidas. Inicialmente, a concluso do projeto Cell estava marcada para 2007, enquanto que o lanamento do PS3 no mercado era projetado para 2005. Outro ponto a forma como 3 empresas com focos de atuao to diferentes como Toshiba, Sony e IBM iro se utilizar do mesmo processador. Aparentemente a Sony ir utilizar o processador em seu novo console. Especula-se que a Toshiba planeja utiliz-lo em uma nova gerao de celulares, enquanto que a IBM o utilizaria em seu mais novo supercomputador, o BlueGene. Dizem que uma crise pode ser desencadeada quando chegar a hora do processador ir para o mercado. Segundo Rob Enderle, da Giga Information Group, a Sony j mostrou que uma empresa que no sabe jogar com as regras da industria quando tentou impor o padro Betamax. Nos resta aguardar a concluso do processador e ver como o mercado reagir.

Figura 6: Arquitetura do PlayStation3

6. Bibliografia
1. Organizao e Projetos de Computadores - A interface hardware/software. Patterson, David A. - 2 edio. 2. The CRAY-1 Supercomputer: Hioki, Andie 3. CRAY-1 Computer System Hardware Reference Manual 2240004 4. www.cs.berkeley.edu/~culler 5. www.lsi.usp.br/~navarro/aulas/Lec20-vetor.ppt 6. www.campusprogram.com/reference/en/wikipedia/s/se/seymour_cray.html 7. en.wikipedia.org/wiki/Vector_processor 8. www.campusprogram.com/reference/en/wikipedia/c/cr/cray_1.html 9. www.scd.ucar.edu/computers/gallery/cray/cray1a/cray1.html 10. www.inf.ufrgs.br/procpar/disc/inf1191/trabs/992/ArqVetorial/arqvet.html 11. www.clubedohardware.com.br/milenio4.html 12. www.scd.ucar.edu/computers/gallery/index.html 13. research.microsoft.com/users/gbell/craytalk/ 14. www.cgl.ucsf.edu/home/tef/cray/tribute.html 15. www.inf.ufrgs.br/procpar/disc/inf1191/trabs/992/ArqVetorial/arqvet.html 16. encyclopedia.thefreedictionary.com/Cray-1 17. Sonys Dream Team: www.designchain.com/coverstory.asp?issue=spring03 18. PS3: graphics architecture: http://www.flipcode.com/cgi-bin/fcmsg.cgi?thread_show=24205 19. PS3: a supercomputer for your desktop: http://www.axisnova.com/articles/playstation_3.shtml 20. PS3 architecture revealed: http://www.theinquirer.net/?article=7078 21. United States Patent Application:0020138637:appft1.uspto.gov/netacgi/nphParser?Sect1=PTO2&Sect2=HITOFF&p=1&u=/netahtml/PTO/searchbool.html&r=1&f=G&l=50&co1=AND&d=PG01&s1=20020138637&OS=20020138637&RS=2002013863 7 22. www.cs.unc.edu/~zimmons/Zimmons__CellGFX.ppt