universidade federal fluminense antonio adÍlson ferreira … · um estudo sobre processadores cell...

136
UNIVERSIDADE FEDERAL FLUMINENSE ANTONIO ADÍLSON FERREIRA e EDUARDO ASSIS SILVEIRA UM ESTUDO SOBRE PROCESSADORES CELL E GPU: A ANUCIAÇÃO DA NOVA ERA DA COMPUTAÇÃO PARALELA HETEROGÊNEA Niterói 2007

Upload: dangnhi

Post on 19-Nov-2018

217 views

Category:

Documents


0 download

TRANSCRIPT

UNIVERSIDADE FEDERAL FLUMINENSE ANTONIO ADÍLSON FERREIRA e EDUARDO ASSIS SILVEIRA

UM ESTUDO SOBRE PROCESSADORES CELL E GPU:

A ANUCIAÇÃO DA NOVA ERA DACOMPUTAÇÃO PARALELA

HETEROGÊNEA

Niterói2007

ANTONIO ADÍLSON FERREIRA e EDUARDO ASSIS SILVEIRA

UM ESTUDO SOBRE PROCESSADORES CELL E GPU:

A ANUCIAÇÃO DA NOVA ERA DACOMPUTAÇÃO PARALELA

HETEROGÊNEA

Trabalho de Conclusão de Curso subme-

tido ao Curso de Tecnologia em Siste-

mas de Computação da Universidade

Federal Fluminense como requisito par-

cial para obtenção do Tecnólogo em Sis-

temas de Computação.

Orientador:Leandro Soares de Sousa

NITERÓI2007

ANTONIO ADÍLSON FERREIRA e EDUARDO ASSIS SILVEIRA

UM ESTUDO SOBRE PROCESSADORES CELL E GPU:

A ANUCIAÇÃO DA NOVA ERA DACOMPUTAÇÃO PARALELA

HETEROGÊNEA

Trabalho de Conclusão de Curso subme-

tido ao Curso de Tecnologia em Siste-

mas de Computação da Universidade

Federal Fluminense como requisito par-

cial para obtenção do Tecnólogo em Sis-

temas de Computação.

Niterói,18 de Dezembro de 2007.

Banca Examinadora:

• Profa. Anna Dolejsi Santos, Dr.Sc. - Universidade Federal Fluminense

• Prof. Leandro Soares de Sousa, Msc. - Universidade Federal Fluminense

• Profa. Talita de Oliveira Ferreira, Msc. – Universidade Federal do Rio de Janei-

ro

Dedicamos aos nossos pais, responsá-veis primeiros pelas dádivas das concep-ções de nossas vidas.

Às empresas AMD, IBM, INTEL e NVIDIA assim como o LANL - Los Alamos Lab pela generosidade em tornar público, em seus sítios na Internet, informações vitais para todos sobre o as-sunto em questão.

Aos institutos MIT, GeogeTech e à uni-versidade de Stanford pelos materiais de cursos online.

AGRADECIMENTOS

A Deus, que ilumina todos os caminhos.

A nosso Orientador Leandro Soares de Sousa

pelo estímulo e atenção que nos concedeu

durante o curso.

Às coordenadoras Marta e Rosana do Pólo

de Angra dos Reis do CEDERJ por seus

enormes e solidários préstimos.

Aos colegas de trabalho pelo apoio e suporte:

Anis, Jorge e Waldirio (Windows); Leandro

(Linux); e Paulo (CELL e GPU).

Ao Paulo Fernando pelo enorme espírito de-

mocrático, liderança nata e profissional,

incentivador da educação e cultura.

Às nossas esposas e aos nossos filhos.

“Quem não soube a sombra, não sabe a luz.”Taiguara Chalar da Silva

“O estilo é uma dificuldade de expressão.”Mário Quintana

“Agente vai contra a corrente, até não poder resistir.

Na volta do barco é que sente, o quanto deixou de

cumprir”.Chico Buarque de Holanda, em Roda Viva, 1967.

“Muitos escritores novos dizem que seu maior pro-

blema é saber por onde começar. Não é. O maior

problema de quem escreve (ou compõe, ou interpre-

ta, ou, principalmente, discursa) é saber onde parar.”

Luis F.Veríssimo em “Robinho e o Paradoxo”, O Globo, 1/7/7

“To put it quite bluntly: as long as there were no ma-

chines, programming was no problem at all; when

we had a few weak computers, programming be-

came a mild problem, and now we have gigantic

computers, programming has became an equally gi-

gantic problem.”

E. Dijkstra.Turing Award, 1972.

RESUMO

Este trabalho descreve a origem do multicore e as tendências em compu-tação paralela heterogênea de alto desempenho. Especialmente arquiteturas como GPUs e o processador CELL da IBM, que são o nosso principal alvo de estudo.

Fornecemos alguns detalhes de especificações e implementações do hardware e software para estas arquiteturas bem como suas aplicações em diversas áreas de atuação. Nos aprofundamos principalmente na computação de alto desem-penho, no processamento gráfico e de multimídia.

Detalhamos muitas características, tecnologias envolvidas, programação, mercados de atuação e propostas para novos processadores gráficos, GPUs, e uma nova abordagem para processadores com múltiplos núcleos, heterogêneos, com rede interna e arquitetura SMP, com modelo de programação paralela heterogênea, como tendência tecnológica a ser consolidada.

Descrevemos e detalhamos o porquê da tecnologia multicore, e os funda-mentos teóricos motivados inicialmente pela Lei de Moore, que ainda vigora mas tal-vez não vigorará devido aos limites impostos pela Física e estabelecidos pela Mecâ-nica Quântica, que inviabilizam os processos de fabricação atual da eletrônica digital baseado na tecnologia CMOS para processadores de computador e que, possivel-mente, serão repensados e redirecionados para uma nova tecnologia.

Comentamos sobre os paradigmas da computação atual tanto nos pro-cessos de fabricação tecnológicos, com tecnologia CMOS, quanto o de programa-ção seqüencial com a programação serializada e algumas das novas tendências tec-nológicas de hardware e software.

Mostramos as tendências atuais de fabricação de processadores com múltiplos núcleos, homogêneos e heterogêneos, associados à computação paralela heterogênea de alto desempenho e as novas tecnologias candidatas à substituição da tecnologia CMOS, em especial a Spintrônica como sendo a melhor posicionada.

Palavras-chaves: CELL, COMPUTAÇÃO HETEROGÊNEA, GPU, GPGPU, HPC,

MULTICORE, PROCESSADOR, PROGRAÇÃO PARALELA, SPINTRÔNICA.

LISTA DE ILUSTRAÇÕES

Figura 1: Evolução do processos de fabricação de processadores até 2.012...........29

Figura 2: Evolução da potência consumida das CPUs x performance escalar..........30

Figura 3: Limitações físicas inviabilizam o aumento das freqüências........................31

Figura 4: O multicore como solução para as limitações impostas pela Física...........32

Figura 5: Consumo crescente de potência nos últimos 20 anos................................33

Figura 6: A inexorável jornada para o multicore.........................................................34

Figura 7: Evolução da bitola equivalente do fio em ciclos de máquina......................35

Figura 8: Processador single core: em extinção.........................................................36

Figura 9: O singlecore tende a extinção. O multicore floresce...................................37

Figura 10: Problema fundamental: alta dissipação térmica........................................38

Figura 11: Aquecimento das CPUs.............................................................................38

Figura 12: A gênesis do problema está na Física.......................................................39

Figura 13: A inviabilidade de se aumentar a freqüência indefinidamente..................40

Figura 14: A história se repete ou nós já vimos isto ocorrer anteriormente...............41

Figura 15: As diminutas dimensões do processador CELL........................................42

Figura 16: GPUs de mercado: Nvidia Quadro FX 5600 e ATI (AMD) R600.........44

Figura 17: Acelerada evolução do poder computacional das GPUs..........................49

Figura 18 Diagrama de blocos das unidades de processamento das GPUs............56

Figura 19: Características gerais de um CELL...........................................................59

Figura 20: Fotografia da pastilha de um processador CELL.....................................63

Figura 21 Jogos de mercado: Sony PS3, Microsoft Xbox 360 e Nintendo Wii..........70

Figura 22: Cluster Linux de IBM CELL com Sony PS3...............................................88

Figura 23: Lâminas de CELL e IBM CELL Blade Center QS20 ................................89

Figura 24: Instalações típicas de clusteres Linux Beowolf.........................................89

Figura 25: Ambiente Teste: Sun + NV FX 5600 + cluster PS3 + switch Gig E........91

Figura 26: IBM BlueGene/P........................................................................................94

Figura 27: Logo do projeto RoadRunner.....................................................................96

Figura 28: Distintas abordagens e direções na busca do PetaFLOPS......................97

Figura 29 O processador CELL, peça fundamental do projeto RoadRunner............98

Figura 30 Em apenas 18 racks , 7.000 CPUs e 13.000 CELLs : 1 PetaFLOPS......99

Figura 31 Arquiteturas distintas com duas CPUs físicas distintas...........................100

Figura 32 Um exemplo marcante de heterogeneidade............................................103

Figura 33 O futuro imita o passado..........................................................................105

Figura 34 Tributo a Gordon Moore...........................................................124

LISTA DE TABELAS

Tabela 1 Exemplos de processadores multicore ....................................................... 43

Tabela 2 Características gerais de alguns processadores multicore ......................... 43

Tabela 3 Algumas aplicações para GPGPUs ............................................................. 54

Tabela 4 Tipos de operações em GPU e localização de ocorrência ...................... 75

Tabela 5 Exemplo de limites superiores para GPU .................................................. 75

Tabela 6 Acesso á memória pelo tipo específico de memória .................................. 78

Tabela 7 Característica de cada memória de uma moderna GPU ............................ 80

LISTA DE GRÁFICOS

Gráfico 1 Evolução do número de transistores nos microchips Intel no tempo.......124

LISTA DE ABREVIATURAS E SIGLAS

AMD - Advanced Micro Devices

ANSI - America National Standard Interchange

API - Application Program Interface

ATI - ATI Fabricante de GPUs e Placas de Vídeo (AMD)

BW - Broadband With

CDC - Control Data Corporation

CEDERJ - Centro de Educação Superior à Distância do RJ

CELL BE - CELL Broadband Engine

CMOS - Complementary Metal-Oxide-Semiconductor

CPU - Central Processor Unit

CTM - Close to The Metal

CUDA - Computer Unified Development Architecture

DD - Data Definition

DDR2 - Double Data Rate 2DMA - Direct Memory Access

DP - Double Precision

DRAM - Dynamic Read Access Memory

EIB - Element Interconnected Bus

FFT3D - Fast Fourier Transform 3D

FLEXIO - Flexible Input Output

FORTRAN - Formula Translator

FPAP - Floating Point Array Processor

FPGA - Field-Programmable Gate Array

FPS - Floating Point System

GDB - GNU Debugger

GEOGIATECH - Georgia Technology Institute

GF - Giga Flops

GFLOPS - Giga Floating Point Operations Per Second

GNU - Gnu is Not Unix

GTS - Modelo de GPU da Nvidia

GTX - Modelo de GPU da Nvidia

HPC - High Performance Computing

HT - Hyper Transport

HTX - Hyper Transport Extended

I/O - Input-Output

I486 - Intel Architecture 80486

IBM - International Business Machine

IBM BLUE GENE - A PetaFLOPS supercomputer of IBM IBM ES9000 - A mainframe Enterprise System of IBM

IBM POWER - Workstation Technology from IBM

INTEL - Intel Corporation

JCL - Job Control Language

LANL - Los Alamos National Laboratory

LCM/SCM - Small Fast Core Memory / Large Core Memory

LLNL - Lawrence Livermore National Laboratory

MASS - Mathematical Application Statistical Subroutines

MIPS - Old Manufacturer of Processors

MIT - Massachussetts Institute of Technology

MPI - Message Passing Interchange

NVCC - Nvidia C Compiler

NVIDIA - Manufacturer of GPUs

OPENMP - Free Library of Message Passing Open

PC - Personal Computer

PCI EXPRESS - Peripheral Card Interface model Express 16x

PDA - Personal Digital Assistants

PPE - Power Processor Element

PPU - Power Processor Unit

PS3 - Sony Game Play Station 3

RAM - Read Access Memory

RED HAT WS - Linux Operating System for Workstation

ROAD RUNNER - HPC Project of Los Alamos National Lab

RPC - Request Procedure for Comments

SCEI - Sony Computer Entertainment Inc.

SDK - Software Development Kit

SGI - Silicon Graphics Inc.

SIMD - Single Instruction Multiple Data

SM - Single Multiprocessor

SMP - Symmetric Multi Processor

SOI - Silicon Over Insulator

SP - Single Precision

SPE - Synergetic Processor Element

SSE - Internet Streaming SIMD Extensions

STANFORD - Stanford University

STI - Joint Venture Sony-Toshiba-IBM

TFLOPS - Tera Floating Point Operations Per Second

TSUBAME - A supercomputer of Japan

WII - A Game of Nintendo Manufacturer

X86_64 - Architecture based in Intel 80486 processor

XBOX360 - A Game of Microsoft Corporation

XDR - Memória Rambus

XEON - Processador Intel x86_32, x86_64 bits

SUMÁRIO

RESUMO ...................................................................................................................... 7

LISTA DE ILUSTRAÇÕES ........................................................................................... 8

LISTA DE TABELAS .................................................................................................. 10

LISTA DE GRÁFICOS ................................................................................................ 11

LISTA DE ABREVIATURAS E SIGLAS ..................................................................... 12

SUMÁRIO ................................................................................................................... 15

1 INTRODUÇÃO ........................................................................................................ 16

2 HISTÓRICO .............................................................................................................. 18

3 OS PROCESSADORES MULTICORE .................................................................... 20

3.1 CONCEITOS PRELIMINARES ......................................................................... 20

3.2 A EVOLUÇÃO DO SINGLECORE ................................................................... 22

3.2.1 Os limites da tecnologia singlecore ........................................................... 23

3.3 A TECNOLOGIA MULTICORE ........................................................................ 24

3.3.1 Arquiteturas Multicore ............................................................................... 26

4 O PORQUÊ DA TRANSIÇÃO PARA O MULTICORE ............................................. 27

4.1 TAXONOMIA DOS MULTICORES ................................................................... 42

5 GPU .......................................................................................................................... 44

5.1 FUNÇÕES COMPUTACIONAIS ...................................................................... 45

5.2 GPGPU ............................................................................................................. 46

5.2.1 Conceitos de Programação em GPGPU .................................................... 47

5.3 PORQUE USAR GPGPU? ............................................................................... 48

5.4 TÉCNICAS GPGPU .......................................................................................... 50

5.4.1 Classificação das operações das GPUs .................................................... 50

5.5 ESTRUTURA DE DADOS ................................................................................ 53

5.6 APLICAÇÕES EM GPGPU .............................................................................. 53

5.7 DIAGRAMA DE BLOCOS DA GPU .................................................................. 54

5.8 PRINCIPAIS LINGUAGENS PARA USO EM GPUs ........................................ 56

6 CELL ......................................................................................................................... 57

6.1 UMA HISTÓRIA ROMÂNTICA ......................................................................... 57

6.2 DA IMAGINAÇÃO À REALIDADE .................................................................... 57

6.3 DISPOSITIVOS DE VETORIZAÇÃO DO CELL ................................................ 64

6.4 DESENVOLVIMENTO PARA O CELL ............................................................. 66

6.5 É O PROCESSADOR CELL DE FIM GERAL? ................................................ 67

6.6 A ARQUITETURA RISC ATACA NOVAMENTE .............................................. 68

7 DIFERENÇAS ENTRE O PROCESSADOR CELL E GPUs .................................... 69

8 RUDIMENTOS DE SOFTWARE PARA GPUs ........................................................ 72

8.1 A ARQUITETURA CUDA COMO PADRÃO PARA GPU .................................. 73

8.2 CONCLUSÃO SOBRE A ARQUITETURA CUDA EM GPU ............................. 76

8.3 UMA IMPLEMENTAÇÃO CUDA NO HARDWARE G80 ................................... 78

8.4 IMPLEMENTAÇÃO DA ARQUITETURA DE MEMÓRIA - G80 ........................ 78

8.5 SÍNTESE DO MODELO DE HARDWARE dA G80 .......................................... 79

8.6 APIs PARA GPUs .............................................................................................. 80

8.7 COMPILAÇÃO EM CUDA ................................................................................. 82

8.8 LINK-EDIÇÂO EM CUDA .................................................................................. 82

8.9 DEPURAÇAO EM CUDA .................................................................................. 83

8.10 A NOVA ARQUITETURA DE DESENVOLVIMENTO EM GPUS ................... 84

9 RUDIMENTOS DE SOFTWARE PARA CELL ........................................................ 85

10 USO DE GPUs E DE CELL NO AMBIENTE HPC ................................................ 86

11 UMA EXPERIÊNCIA PRÁTICA COM GPUS E CELL ........................................... 90

12 A COMPUTAÇÃO DE PETAFLOPS ................................................................... 93

12.1 SISTEMAS DE COMPUTAÇÃO HÍBRIDA ESTÃO CHEGANDO ................. 101

12.2 “DEJA VU” (PARECE QUE A HISTÓRIA SE REPETE) .............................. 104

13 TECNOLOGIAS ALTERNATIVAS A SUBSTITUIÇÃO DO CMOS ..................... 106

13.1 A EVOLUÇÃO DAS TECNOLOGIAS DOS TRANSISTORES ..................... 106

13.2 LIMITES de TRANSISTORES na TECNOLOGIA MOSFET ........................ 108

13.3 AS FUTURAS TECNOLOGIAS QUE SE APRESENTAM ........................... 109

1.1.1Tecnologia de Diodos Ressonantes de Tunelamento ............................... 109

1.1.2AUTÔMATOS CELULARES QUÂNTICOS (QCA) .................................... 110

1.1.3Nanoeletrônica Molecular .......................................................................... 110

1.1.4SPINTRÔNICA ........................................................................................... 111

14 CONCLUSÕES ................................................................................................... 113

REFERÊNCIAS BIBLIOGRÁFICAS ........................................................................ 118

ANEXOS ................................................................................................................... 122

ANEXO A - LEI DE MOORE .................................................................................... 123

ANEXO B - PRINCÍPIO DA INCERTEZA DE HEISENBERG ................................. 128

1 INTRODUÇÃO

O objetivo fundamental deste trabalho é de apresentar duas mais impor-

tantes tecnologias de processadores da atualidade, CELL e GPU, que despontam e

disputam as preferências técnico-científica, comercial e de público para uma enorme

gama de aplicações tais como: jogos, computação gráfica e computação de alto de-

sempenho. Ele foi elaborado fundamentalmente através de vários cursos on-line

disponibilizados pelos fabricantes IBM, Nvidia, Intel e instituições científicas como

MIT, Los Alamos Lab, Geogia Tech, Stanford University, dentre outras, aliado a mui-

tos trabalhos publicados e informações também disponibilizadas na Internet. A moti-

vação básica reside na necessidade de se ter acesso e disponibilidade de computa-

ção de altíssimo desempenho e a um baixo custo, ou seja, TeraFLOPS por centenas

de dólares. Este trabalho não é original nem tem a pretensão de sê-lo, pois procurou

extrair aquilo que considerarmos ser de melhor na bibliografia e em todas as referên-

cias encontradas. A maior dificuldade foi exatamente a escolha e ordenação do con-

teúdo, imagens, gráficos e figuras, bem como o texto e a ordenação do mesmo

numa modesta tentativa de conduzir o leitor de tal forma que este possa ter uma re-

ferência e um roteiro significativos na língua nacional sobre o tema e, de posse des-

tes, possa guiar-se e enveredar pelo conhecimento nesta área.

O despertar do século XXI traz boas novas em termos tecnológicos e, em

particular, novíssimas arquiteturas de processadores para enfrentar o desafio impos-

to pelas necessidades econômicas de baixos custos e ambientais, de melhor e mais

racional uso dos recursos energéticos aliados à requisição de processadores muito

mais velozes. Em especial, no que tange a computação de alto desempenho, objeti -

vando apresentar e resolver várias aplicações como processamento de imagens, si -

mulações, cálculos científicos, pesquisas em biologia, química, física e medicina,

processamento sísmico e pesquisas espaciais entre tantas outras. A restrição tecno-

lógica fundamental reside nas limitações impostas para consumo de energia e ne-

cessidades de refrigeração dos processadores devidos ao enorme consumo e des-

perdício, provenientes da dissipação de calor, além do grande espaço físico para

acomodar os equipamentos e os altíssimos custos de aquisição, manutenção e ga-

rantia dos mesmos.

Estamos vivendo num momento nitidamente propício para a ruptura do

paradigma vigente de computação e programação numa busca de um novo paradig-

ma. No paradigma atual, a computação homogênea, isto é, aquela baseada em pro-

cessadores com um ou mais núcleos homogêneos idênticos e de mesma natureza

como, por exemplo os dos fabricantes Intel ou AMD de um único núcleo (singlecore),

dois núcleos (dualcore), quatro núcleos (quadcore), oito núcleos (octocore) [10], etc; e,

a programação seqüencial (baseadas em programas compostos por instruções que

são executadas passo a passo, seqüencialmente) é seu carro-chefe. Nesta nova

era que se vislumbra e que se estabelecerá definitivamente nos próximos dez ou

vinte anos, os computadores heterogêneos multicore (baseado em múltiplos núcleos

distintos) e a programação paralela (“de pedaços das linhas de códigos a serem

executados sequencialmente” ou “um fluxo de controle sequencial isolado dentro de

um programa” – threads – sendo executados em paralelo pelos distintos núcleos do

processador) [17] reinarão hegemônicos e, motivados pelas de necessidades de

computação de alto desempenho e baixos custos, estarão disponíveis para a grande

maioria dos usuários em seus próprios desktops, notebooks, laptops, e nos novos

dispositivos de tecnologia convergente que se apresentarão, permitindo que a com-

putação de teraflops (trilhões de operações de ponto flutuante por segundo) fique à

disposição de todos por custos muito baixos.

Duas das tecnologias representantes desta verdadeira revolução, que se

configura, podem ser identificadas nos processadores gráficos (GPUs) e nos proces-

sadores heterogêneos multicore (IBM CELL, por exemplo), ou, também, nos multico-

re homogêneos (com microarquitetura x86_64 dual, quad, octocore da Intel ou AMD)

[7,10]. Por considerar este tema apaixonante e excitante, modestamente discorrere-

mos em particular sobre estas duas tecnologias e alguns tópicos relacionados ao

tema da computação de alto desempenho, computação paralela e os novos desafios

delas decorrentes.

17

2 HISTÓRICO

No último quarto do século XX, observou-se uma desenfreada e frenética

competição na corrida pelo aumento da freqüência do clock, ou seja, da velocidade

de operação, dos processadores como o modo mais simples de se obter o aumento

de desempenho dos computadores. Desde os 4.77 MHz do IBM PC original lançado

em agosto de 1981 [1,2] até os 3.4 GHz dos monoprocessados e singlecore Intel

Xeon ou AMD Opteron [7,10] ou, a impressionante freqüência de 4.7 GHz do IBM

Power 6 dualcore [3], a corrida parece ter chegado ao seu limiar. Limiar este que es-

barrou nos limites decorrentes das propriedades físicas dos materiais envolvidos e

de suas dimensões físicas, que definiram uma barreira intransponível para os fabri-

cantes de processadores. Dos fabricantes de processadores apenas a IBM segue

em frente, imediatamente, com freqüências de clocks além de 4 GHz [5] como, por

exemplo, o seu já citado IBM Power6 que, em sua versão comercial de 2007, pode

operar em até 4.7 GHz ou 4.2 GHz ou 3.7 Ghz [3], como possibilidades de atingir algo

próximo a 6 Ghz [4] em versões futuras, segundo o próprio fabricante, mas por um

custo altamente proibitivo para a maioria dos usuários. Do ponto de vista tecnológi-

co, o custo não é relevante, o que importa é possibilidade de ultrapassar os limites

anteriores com inovação tecnológica e pesquisa de novos materiais e propriedades

destes para obtenção das metas, mas do ponto de vista econômico-financeiro, é im-

portantíssimo o baixo custo, para uma possível produção em massa e a dissemina-

ção dos benefícios da tecnologia para um maior número possível de pessoas e sis-

temas.

As atuais e futuras necessidades computacionais passam diretamente

pela obrigatória ruptura com o estabelecido, isto é, dadas as barreiras e restrições

de energia finita, espaço exíguo e refrigeração também finita, não se pode ou poderá

conceber arquiteturas computacionais gulosas e ineficientes nestes pontos de vista.

A mitigação dos recursos energéticos, principalmente, aliada a impossibilidade de se

elevar o clock dos processadores a níveis além dos atualmente alcançados (que já

atingiu um ponto de temperatura equivalente ou próximo do ponto das reações nu-

cleares e que, se levado avante, alcançaria a temperatura da superfície solar –

18

10.000 graus centígrados), conforme mostram, respectivamente, as Figuras 10 e 11,

induzindo obrigatoriamente a uma mudança tecnológica. Esta mudança, pelas ra-

zões anteriores e por outras que detalharemos mais à frente, implicou na tecnologia

multicore [18] por um lado e por outro, como fruto da natural evolução tecnológica dos

conceitos de co-processador matemático dedicado, de uma outra tecnologia: proces-

sadores gráficos (GPU) [11], aplicados inicialmente à computação gráfica e atualmen-

te com incursões na área da computação de alto desempenho.

As GPUs encontraram um rico e profícuo ambiente de altos e relevantes

investimentos no mercado de jogos eletrônicos e na indústria do entretenimento for-

mada pelos desenhos em 3D, sofisticadas texturas, computação física, etc. O mer-

cado de jogos eletrônicos primordialmente é o principal mote da evolução tecnológi-

ca das GPUs, representando bilhões de dólares de faturamento, o que permitiu mai-

ores investimentos nesta tecnologia e um alto nível de capitalização dos fabricantes

de GPUs, tendo o fabricante Nvidia [9] como o maior e melhor representante como

poder comprovado por seus balanços financeiros e valorização de suas ações no

mercado de capitais.

Por outro lado, grandes fabricantes de computadores e produtos de con-

sumo do mercado de eletro-eletrônico, em defesa de seus interesses, uniram-se

numa parceria batizada como IBM STI (Sony, Toshiba e IBM) no despertar deste,

que será um luminoso século, para definir aquilo que se espera que não seja apenas

uma evolução da tecnologia existente aplicada a um nicho de mercado, como o da

computação gráfica ou jogos eletrônicos, mas para a computação de fim geral e

também aplicável em problemas mais específicos. Especialistas da IBM denominam

esta evolução de “A vingança da arquitetura RISC” [21]. Esta parceria gerou como

fruto o IBM CELL Broadband Engine, o CELL BE, a qual detalharemos nos capítulos

seguintes bem como a também o faremos com relação a GPU (Graphical Processor

Unit).

19

3 OS PROCESSADORES MULTICORE

3.1 CONCEITOS PRELIMINARES

As principais partes dos processadores convencionais são [22]:

1 – Núcleo (em inglês, Core): local onde as instru-

ções são executadas. Ou seja, é aqui que as coisas realmente acontecem. Que tipo

de coisas? Execução de instruções, cálculos, etc.

2 – Cache: é uma memória que se encontra dentro

do processador. Ao invés de termos o processador indo buscar dados na memória

principal o tempo todo, aplicando-se o Princípio da Localidade [23], ele possui uma

memória interna onde os dados são armazenados temporariamente. O processador

procura por um dado primeiramente dentro de sua memória cache antes de ir buscar

o dado na memória principal. Por este motivo, o cache também influencia no desem-

penho do processador. Resumindo, cache é uma pequena quantidade de memória

estática de alto desempenho, tendo por finalidade aumentar o desempenho realizan-

do uma busca antecipada na memória RAM. A taxa de acerto típica é de 80% a 90% [11].

Note-se que a palavra Núcleo em inglês é Core. Quando colocamos den-

tro de um processador mais do que um núcleo, ele se torna um processador Multi-N-

úcleos ou MultiCore.

No caso dos processadores que possuem dois núcleos, eles são chama-

dos de DualCore. Qualquer que seja o processador, quando ele for identificado

20

como sendo Dual Core, terá dois núcleos de execução. Quando os processadores

DualCore começaram a aparecer no mercado [24], dizia-se que tínhamos colocado

dois processadores em um. Isso não é verdade mas serve muito bem como analo-

gia. Há também, os processadores que possuem 4 (quatro) núcleos. Esses proces-

sadores são chamados de QuadCore e estão presentes hoje em desktops e servido-

res. Tanto a empresa Intel como a sua concorrente em arquiteturas x86, fabricam

processadores dualcore e quadcore disponíveis no mercado como, por exemplo,

Intel Xeon Core Duo (para laptops e desktops), Intel Xeon Quad Core (para servido-

res), AMD Opteron Dual Core, AMD Opteron Quad Core. Os processadores IBM

Power5+ e IBM Power 6 são dualcore [8]. Existem também, no mercado, processado-

res com 8 núcleos como o Sun T1 [25] ou de 9 (nove) núcleos como o IBM CELL [26],

que está incorporado nas consoles de jogos Sony PS3 e outros com muitos núcle-

os, ditos manycores ainda não comercializáveis ou em testes nos laboratórios dos

fabricantes como o Octocore da Intel, o Octocore da AMD, o MIT Raw (16 núcleos),

etc.

Existem processadores ainda não comerciais como o Intel Larrabee de 80

(oitenta) núcleos ou outros em desenvolvimento, como na universidade de Tókio

com 512 núcleos denominado Grape DR e destinado à computação de alto desem-

penho (HPC) [30].

A existência de vários núcleos dentro dos processadores é uma tendência

e deve-se esperar que a quantidade de núcleos cresça para além dos quatro exis-

tentes hoje como os vistos no parágrafo anterior. Colocar vários núcleos dentro de

um processador foi uma das formas encontradas para se aumentar ainda mais o seu

desempenho. Isto gerou uma quebra de paradigma (tabú). O desempenho dos pro-

cessadores sempre foi definido simplificadamente pelo clock (freqüência de opera-

ção do processador), ou o popular GHz (gigahertz, ou seja, tendo hertz como unida-

de de medida de freqüência). Esta foi uma boa medida durante muito tempo. Quan-

do vamos para processadores com múltiplos núcleos, a coisa muda de figura. Pro-

cessadores com dois núcleos e com freqüência de clock menor possuem desempe-

nho superior a processadores com um único núcleo trabalhando a uma freqüência

21

maior. Ou seja, ao analisarmos o desempenho de processadores não devemos con-

siderar a freqüência do clock como o único e exclusivo indicador de desempenho.

Os processadores têm um ou mais núcleos e uma ou mais memórias ca-

che. Internamente, o núcleo ainda é subdividido em vários componentes. A forma

como os elementos internos do núcleo estão dispostos, como eles irão se comuni-

car, a maneira como o cache será acessado, como as instruções serão executadas

– serializadas ou em paralelo - etc, tudo isso define o que chamamos de Microarqui -

tetura. É a partir de uma concepção de Microarquitetura que os processadores são

criados. Os processadores criados a partir de uma mesma Microarquitetura terão as

mesmas características básicas, apesar de poderem ter pequenas alterações para

funcionamento em desktops, notebooks ou servidores devido às particularidades dis-

tintas de cada um destes como dimensão física, alimentação, autonomia, robustez,

etc. Porque uma Microarquitetura é importante? A mudança de uma Microarquitetura

pode fazer com que uma nova geração de processadores atinja um desempenho

(performance) muito melhor e consiga, por exemplo, ter um consumo muito menor

de energia, como é a proposta dos multcores: IBM CELL (9 cores e heterogêneo: 1

PPE e 8 SPEs) [28]; e os homogêneos Intel Larrabee (80 cores), Sun T1

(octocore) [27], AMD Barcelona (quadcore), Intel Xeon (quadcore) [10], etc.

3.2 A EVOLUÇÃO DO SINGLECORE

Os processadores multicore representam uma grande revolução da tecno-

logia computacional. São capazes de prover maior capacidade de processamento

com uma relação entre custo e benefício melhor do que os processadores singleco-

re. São uma resposta científica às crescentes demandas por desempenho e uma

forma de contornar as limitações impostas pela Física para os processadores single-

core, preservando o paradigma vigente da tecnologia CMOS.

22

3.2.1 OS LIMITES DA TECNOLOGIA SINGLECORE

As demandas de complexas simulações 3D, arquivos de streaming me-

dia, níveis adicionais de segurança, interfaces do usuário mais sofisticadas, bancos

de dados mais robustos e cada vez mais e mais usuários conectados on-line estão

sempre requisitando por maior poder de processamento. A solução aplicada até

agora, de maneira simplificada, foi aumentar a freqüência de operação dos proces-

sadores, aumentando-se assim a sua capacidade de processamento. Isto exige que

o processo de fabricação de transistores seja feito em camadas de silício cada vez

menos espessas. Entretanto, este método de fabricação tem seus dias contados [28]

o que obriga a busca de uma tecnologia alternativa para a fabricação de circuitos in-

tegrados e, com eles, microprocessadores.

Conforme Figura 1, podemos verificar que as tecnologias de fabricação

de 90 nm com espessura de porta de 50 nm, e as seguintes deverão ter sua exaus-

tão lá pelos idos de 2012, conforme previsões dos cientistas das empresas fabrican-

tes de processadores. Isto porque, quanto menor for à largura da porta mais próxima

as regiões da fonte e do dreno do transistor ficarão. Pelas leis da Física Quântica,

quando a largura da porta atingir a 5 nm, a fonte e o dreno ficarão separados por um

trecho de silício tão pequeno que não se conseguirá isolá-los completamente, geran-

do uma probabilidade de 50% de que a corrente flua mesmo quando não houver ten-

são aplicada à porta (este fenômeno denomina-se na Física Quântica de tunelamen-

to do elétron). Quando isto ocorre, o transistor deixa de ser confiável como dispositi-

vo de processamento de dados pois passamos a não ter mais controle sobre seu

comportamento ou propriedades [28,29]. Além disso, temos outro problema ainda mais

grave: a dissipação de energia em forma de calor. Devido à miniaturização dos no-

vos processos de fabricação de circuitos integrados, cada vez mais se fabricam pro-

cessadores com mais e mais transistores equivalentes em menores áreas do chip.

Quanto menores são os transistores do circuito integrado, maior sua “densidade su-

perficial” , ou seja, o número de transistores por unidade de área. O acúmulo de um

número muito grande de transistores numa área tão pequena concentra tremenda-

23

mente a produção de calor devido à dissipação de energia pela corrente elétrica

que circula nos transistores (dada pela Lei de Joule:P = i2 R) [31]. Se essa energia

não for rapidamente removida do circuito e transferida para o ambiente, o chip atingi-

rá temperaturas tão elevadas que, literalmente, derreterá [32]. As Figuras 10 e 11,

respectivamente, mostram a evolução da energia dissipada por processador.

Afirmam os cientistas que, mesmo que se conseguisse contornar o limite

da largura de porta, não haveria como remover o calor do processador com a mes-

ma velocidade com que ele seria produzido. O chip se autodestruiria [22].

Além dessas, há diversas outras limitações impostas pela arquitetura de

núcleo único. Entre elas, temos que a estreita banda de dados, aliada a grande dife-

rença entre a velocidade do processador e a da memória, faz com que 75% do tem-

po da CPU, em média, seja gasto esperando por resultados dos acessos à

memória [33].

3.3 A TECNOLOGIA MULTICORE

A tecnologia multicore (múltiplos núcleos) consiste em colocar duas ou

mais unidades de execução (cores) no interior de um único “pacote de processador”

(um único chip). O sistema operacional trata esses núcleos como se cada um fosse

um processador diferente, com seus próprios recursos de execução. Na maioria dos

casos, cada unidade possui seu próprio cache e pode processar várias instruções si-

multaneamente.

Adicionar novos núcleos de processamento a um processador possibilita

que as instruções, das aplicações, sejam executadas em paralelo em vez de serial-

mente, como ocorre em um único núcleo (considerando um único pipeline de execu-

ção - pipeline é uma técnica de hardware que permite que a CPU realize a busca de

uma ou mais instruções além da próxima a ser executada [11]).

24

Os processadores de múltiplos núcleos permitem trabalhar em um ambi-

ente multitarefa. Em ambientes de um só núcleo, as funções de multitarefa podem

ultrapassar a capacidade da CPU, o que resulta em queda de desempenho enquan-

to as operações aguardam serem executadas. Em sistemas de múltiplos núcleos,

como cada núcleo tem seu próprio cache, o sistema operacional dispõe de recursos

suficientes para lidar com o processamento intensivo de tarefas executadas em pa-

ralelo. Portanto, melhora-se a eficiência do sistema como um todo e o desempenho

dos aplicativos, em computadores que executam vários aplicativos simultaneamen-

te. A presença de vários núcleos é particularmente eficaz quando uma das aplica-

ções deve ficar sendo executada continuamente (ou quase), como no caso dos dis-

positivos das consoles gráficas de jogos, nos dispositivos de convergência digital

(som, vídeo, etc), entre outros.

As principais vantagens da arquitetura multicore são:

1. Maior eficácia (throughput) do sistema e desempenho aprimorado

de aplicativos em computadores que executam vários aplicativos

simultaneamente.

2. Desempenho aprimorado para aplicativos multi-threaded.

3. Maior capacidade para mais usuários ou tarefas em aplicativos

com muitas transações.

4. Desempenho superior em aplicativos que utilizem processamento

de forma intensiva.

5. Economia no preço do licenciamento de software proprietário, pas-

sando a ter um maior poder de processamento sem necessitar de

uma nova máquina (os fabricantes de software podem rever suas

políticas de comercialização de licenças de software por processa-

dor para core, minimizando esta vantagem).

6. Redução da dissipação térmica quando comparado ao singlecore.

25

3.3.1 ARQUITETURAS MULTICORE

Uma arquitetura multicore é, geralmente, um multiprocessamento simétri-

co (SMP) implementado em um único circuito VLSI (Very Large Scale Integrated). O

objetivo é melhorar o paralelismo no nível das threads, ajudando especialmente as

aplicações que não conseguem se beneficiar dos processadores superescalares

atuais, por não possuírem um bom paralelismo ao nível de instruções. Essa arquite-

tura propicia o chamado paralelismo em nível de chip. Algumas de suas vantagens

são: melhor localidade de dados se comparado com outras arquiteturas de multi-pro-

cessamento; melhor comunicação entre as unidades; economia de espaço e ener-

gia. É importante observar que o aumento de throughput não ocorre ao acaso da

execução de uma única aplicação que não possa ser paralelizada, mas, nos outros

casos, e sempre que se considera o sistema como um todo (rodando várias aplica-

ções simultaneamente), tal aumento é bastante notável. Com todas essas vanta-

gens, os multicores apresentam uma melhor relação custo / benefício do que os sin-

glecore.

Uma alternativa ao multiprocessamento simétrico, ou SMP (Symmetric

Multi Processing), é uma arquitetura de multiprocessadores na qual dois ou mais

processadores idênticos são conectados a uma única memória principal. Isso permi-

te que qualquer processador trabalhe em qualquer tarefa, não importando onde ela

esteja localizada. Assim, é possível ficar movendo as tarefas entre processadores de

modo a tornar a carga de trabalho o mais eficiente possível. Porém, há um custo a

se pagar: como a memória é muito mais lenta que o processador, se em arquiteturas

singlecore é gasta uma grande parcela de tempo esperando pelos dados da memó-

ria, na SMP fica pior ainda, pois vários processadores podem ficar esperando por

uma mesma memória [22].

26

Uma alternativa ao SMP é a NUMA (Non-Uniform Memory Access), na

qual cada processador tem a sua própria parte de memória. Essa arquitetura permite

acessos paralelos à memória, melhorando em muito o throughput, se os dados de

um processo forem bem localizados. Por outro lado, o custo de se mover os dados

de um processador para o outro fica bem mais caro, ou seja, balancear a carga de

trabalho é bem mais custoso do ponto de vista computacional, ou seja, exige mais

recursos de processador, rede, ocupação de banda, comunicação e tempo [11].

Há ainda alternativas não tão utilizadas como as acima: o Multiprocessa-

mento Assimétrico (ASMP) designa diferentes processadores especializados para

tarefas específicas, enquanto que, no multiprocessamento com clusters de computa-

dores, nem toda a memória está disponível para todos os processa -

dores [22].

Como exemplo de implementação multicore podemos citar: Intel Xeon

Core Duo, Intel Xeon Quad Core, Intel Larrabee (80 cores), AMD Opteron Dual Core,

AMD Barcelona Quad Core, SUN T1 (octocore), IBM Power 6, IBM CELL (ninecore),

etc.

4 O PORQUÊ DA TRANSIÇÃO PARA O MULTICORE

Como visto anteriormente, a corrida pelo aumento de desempenho dos

processadores com o mais conveniente e fácil procedimento, que é o da elevação

do clock do processador, atingiu o seu ápice ao esbarrar no superaquecimento e na

baixa relação entre o desempenho e o consumo de energia, medido agora não em

milhões de instrução de ponto flutuante por segundo apenas, mas também dividido

pelo consumo energético em watts (GFLOP/Watt). Além do aumento do clock, a tec-

nologia de múltiplos processadores numa mesma placa mãe (sistemas multiproces-

sados – ditos MP) não era, por si só, suficiente devido a vários problemas de geren-

ciamento do sistema operacional e, mais especificamente, o da memória ou do ca-

27

che ou cachês associados a um ou vários dos processadores. O resultado não era

suficiente e deparava-se com a Lei de Amdahl [35] para sistemas multiprocessados,

ou seja, tudo indicava não adiantar juntar muitos processadores numa mesma placa-

mãe devido ao custo-benefício e as dificuldades de gerenciamento acrescido do pro-

blema das aplicações não aproveitarem esta arquitetura do tipo SMP (Symmetric

Multi Processing).

O problema crucial é o do consumo energético. Como resolver ou contor-

nar? Não foi e não é simples. Uma idéia, que foi implementada com distintas arquite-

turas, foi a de aumentar o número de cores ou núcleos numa mesma pastilha ou

chip. Assim, para um pequeno aumento no consumo energético poderíamos aumen-

tar, em tese, significativamente o desempenho. A tecnologia de 90 nm dos chips as-

sim o permitia e os primeiros, em verdade, eram como ainda muitos o são, apenas

dois cores acoplados numa mesma pastilha, isto é, praticamente se estendeu à tec-

nologia SMP a um único processador, por analogia, com o diferencial de ser contro-

lado por um único sistema operacional. Outra abordagem é a de uma arquitetura

multicore, mas com um barramento interno de comunicação de alta velocidade entre

esses núcleos ou cores, ou seja, em rede.

Neste ponto, devemos frisar bem que, enquanto a GPU é uma sofisticada

evolução de um co-processador, o IBM CELL, um processador heterogêneo formado

por vários e distintos processadores em uma mesma pastilha e estes interconecta-

dos entre si através de uma rede compartilhada de alta velocidade, é uma revolucio-

nária proposta de uma nova arquitetura de um processador nativamente paralelo e

internamente em rede. De fato, não é uma proposta, é uma realidade e o futuro pró-

ximo irá julgar a ousadia de seus criadores (STI) [36].

Para nosso discurso inicial, acrescentarmos convenientemente alguns

gráficos e diagramas, que enriqueçam ou comprovem nossos argumentos. A transi-

ção obrigatória para o multicore está na Física. São as propriedades e leis físicas

que implicam diretamente no multicore [34].

28

Figura 1: Evolução do processos de fabricação de processadores até 2.012.

Fonte: Webinar da Intel, www.intel.com em 20 de março de 2007 [34].

Como podemos observar na Figura 1, os processos de fabricação de

chips estão cada vez mais provocando um adensamento de transistores numa me-

nor área. É esperado que se atinjam processos de fabricação que possibilitem até

22 nm no ano de 2012. Atualmente são comercializados chips com tecnologia de

65nm e os de 45 nm deverão se tornar comercializáveis até 2009.

Historicamente, a análise de processadores monoprocessados revela que

enquanto o desempenho cresce linearmente, a potência necessária para operação

deste cresce exponencialmente como pode ser exemplificado com os processadores

da Intel do i486 ao Pentium(Prs) na curva normalizada ao consumo de energia do

i486 da Figura 2, demonstrando assim a insustentabilidade de se tentar aumentar o

desempenho de processadores apenas com o aumento da freqüência pois, do ponto

de vista energético, o consumo é excessivamente ineficiente e implica numa enorme

necessidade de refrigeração, o que inviabiliza soluções tecnológicas nesta direção.

29

Figura 2: Evolução da potência consumida das CPUs x performance escalar

Fonte: Webinar da Intel, www.intel.com em 20 de março de 2007 [34].

Como conseqüência da Lei de Moore [anexo A], a quantidade de transistores

dobra a cada dezoito meses, o que adensa mais ainda o número de transistores

numa menor área do chip, enquanto a espessura do óxido também se encurta, au-

mentando as freqüências e reduzindo o limiar das voltagens envolvidas. Mas a es-

pessura já atingiu as dimensões atômicas e não pode mais ser encurtada tão rapida-

mente. Logo, só podemos obter pequenos aumentos de freqüências com menores

reduções na voltagem, o que implica num maior consumo energético e maior dissi-

pação térmica como esboçado na Figura 3.

30

Figura 3: Limitações físicas inviabilizam o aumento das freqüências

Fonte: Webinar da Intel, www.intel.com em 20 de março de 2007 [34].

Em longo prazo, a única solução a ser considerada, sem levar em conta

novas descobertas na ciência dos materiais e na física, seria a de introduzir vários

núcleos num mesmo chip, ou seja, passar-se a fabricar e produzir processadores

com múltiplos núcleos em uma mesma pastilha, levando-se em conta a viabilidade

de fazê-lo devido ao adensamento de transistores, causado pelas novas tecnologias

de fabricação de chips, como conseqüência da Lei de Moore, contornando os pro-

blemas determinados pelas limitações da Física e, principalmente, observando que

com múltiplos núcleos num mesmo chip, podemos assim obter um melhor desempe-

nho do processador com uma maior eficiência energética. Portanto, a tecnologia de

fabricação de processadores com muitos núcleos, dita multicore, vem obrigatoria-

mente, como uma forma de contornar as limitações impostas leis da Física e assim

obter um maior desempenho, com maior eficiência energética e melhor gerenciabili-

dade técnica, isto é, menor necessidade de refrigeração do calor gerado pela dissi-

pação térmica do processador.

31

Figura 4: O multicore como solução para as limitações impostas pela Física

Fonte: Webinar da Intel, www.intel.com em 20 de março de 2007 [34].

Por exemplo: suponhamos um chip com um dado número de transistores

e a este associado uma potência unitária e um desempenho unitário. Para aumen-

tarmos o desempenho de maneira ingênua e direta, quadruplicamos o número de

transistores num chip maior, significando apenas a duplicação do desempenho a um

custo também quadruplicado da potência consumida. Por outro lado, se formos ca-

pazes de colocar quatro pequenos núcleos com o mesmo número de transistores da

hipótese inicial, num mesmo chip poderíamos obter ao invés de um único chip com

um único núcleo, um novo chip com quatro núcleos mais eficiente em performance e

consumo energético, além de menor dissipação térmica (Figura 4).

32

Figura 5: Consumo crescente de potência nos últimos 20 anos.

Fonte: MIT Course 6.189 IAP, 2007 [37]

O aumento do número de transistores no chip devido à Lei de Moore e o

associado aumento da potência consumida pelo chip, medida em Watts (Figura 5),

provocaram, quase que obrigatoriamente, a marcha para o multicore, como pode ser

visto na Figura 6.

33

Figura 6: A inexorável jornada para o multicore

Fonte: MIT Course 6.189 IAP, 2007 [37]

Estima-se que até o ano de 2012 já se possam construir chips com pro-

cesso de fabricação de 0,02 microns em pastilhas de 400 mm2 com freqüências de

clock de 13.5 GHz, conforme pode ser visto na Figura 7. Atualmente, o que está dis-

ponível no mercado são os chips com tecnologia de fabricação CMOS de 45 nm e

wafer de 300 mm2 com processadores multicore de até oito núcleos de vários fabri-

cantes como Intel, AMD, Sun (com oito núcleos), IBM com dois núcleos para proces-

sadores Power5+ e Power6 e nove núcleos com processadores CELL. Cabe lembrar

que, na microeletrônica, um wafer é uma fina fatia de material semicondutor, assim

como o cristal de silício, na qual microcircuitos são construídos pela dopagem (por

exemplo, difusão ou implantação de íons), separação química com ácidos, e deposi-

ção de vários materiais. Wafers são importante chave para a construção de disposi-

tivos de semicondutores, assim como circuitos integrados. Eles são feitos de tama-

nhos variados, de cerca de 1 polegada (25,4 mm) até 11,8 polegadas (300mm) e es-

pessura da ordem de 0,5 mm. Geralmente, eles são provenientes do corte de uma

barra pura de um material cristalizado, usando-se para o corte uma serra de diaman-

te ou um fio desse mesmo material, e então polidos em uma ou nas duas faces. Os

wafers fazem parte do resultado final do processo de fabricação de processadores

34

para computador: hoje em dia, aproximadamente cada wafer gera 400 microproces-

sadores [61].

Figura 7: Evolução da bitola equivalente do fio em ciclos de máquina

Fonte: MIT Course 6.189 IAP, 2007 [37]

Como uma conseqüência imediata da chegada dos processadores multi-

core no mercado, motivada pelas necessidades de maior desempenho a custos de

consumo e gerenciamento energéticos mais baixos e contornando problemas da Fí-

sica, parece inexorável a extinção dos processadores com um único núcleo, ou sin-

glecore. Este movimento e tendência podem ser avaliados conforma apresentado na

Figura 8.

35

Figura 8: Processador single core: em extinção

Fonte: MIT Course 6.189 IAP, 2007 [37]

Na verdade, já podem ser vistas e comprovadas as movimentações do

mercado nesta direção desde os primeiros anos deste século, com concentrações e

forte tendência após 2004, conforme exposto na Figura 9, com destaque para MIT

Raw (2004) não comercial, o IBM CELL (2005) e o IBM Power 6 (2006) neste perío-

do.

36

Figura 9: O singlecore tende a extinção. O multicore floresce.

Fonte: MIT Course 6.189 IAP, 2007 [37]

O problema fundamental que levou à tecnologia de processadores multi-

core, como visto anteriormente, foi o da necessidade de se reduzir a potência consu-

mida pelos processadores das gerações anteriores (Figura 10), cujas energias dissi -

padas já beiravam a temperaturas de reações nucleares e, se levadas avante, tem-

peraturas equivalentes à da superfície solar (Figura 11), que seriam inimagináveis

ou de difícil implementação, inviabilizando novos projetos de fabricação de proces-

sadores. O multicore floresce na tentativa de contornar três barreiras intransponíveis

devido às limitações da tecnologia CMOS: a de energia, a de potência e de tamanho

de escala ou dimensões dos transistores na pastilha ou wafer definidas pela Mecâni-

ca Quântica [29].

37

Figura 10: Problema fundamental: alta dissipação térmica

Fonte: MIT Course 6.189 IAP, 2007 [34]

Figura 11: Aquecimento das CPUs

Fonte: MIT Course 6.189 IAP, 2007 [34]

A causa fundamental do problema, apresentado nas figuras 10 e 11, está

na sua natureza física, pois a potência consumida é proporcional ao quadrado da

voltagem e a freqüência de operação. Isto significa que para os processos de fabri-

38

cação de 65 nm os problemas de alimentação do processador e refrigeração seriam

intransponíveis (Figura 12).

Figura 12: A gênesis do problema está na Física.

Fonte: MIT Course 6.189 IAP, 2007 [34]

Re-avaliando e analisando historicamente o problema, verificamos que o

mesmo já havia ocorrido desde o instante inicial da produção do primeiro processa-

dor nos idos de 1945 até data de 1990, com a inserção do mainframe IBM ES9000

(Figura 13).

39

Figura 13: A inviabilidade de se aumentar a freqüência indefinidamente

Fonte: MIT Course 6.189 IAP, 2007 [34]

Naquela oportunidade, ainda foi possível uma quebra de paradigma base-

ada na introdução de uma nova tecnologia, findando assim a era dos processadores

com tecnologia Bipolar e surgindo uma nova era da tecnologia de processadores

CMOS. Mas, esta nova era com seu novo paradigma tecnológico resistiu uns poucos

quinze anos, até 2005, e já demonstra as suas vulnerabilidades teoricamente previs-

tas, ou seja, necessita de ajustes tecnológicos, como indicado pela Figura 14, que é

chegado o momento. Estes ajustes tecnológicos visam equilibrar melhor o balanço

de energia, permitindo que além de aumentar ligeiramente as freqüências de cada

núcleo, pode-se fazê-lo minimizando o consumo energético do processador como

um todo, assim garantindo um melhor desempenho do mesmo. Portanto, o novo pa-

radigma tecnológico: o de multicore com processamento paralelo heterogêneo se

vislumbra como o florescer desta novíssima era do multicore e da computação para-

lela heterogênea e de teraflops num desktop.

40

Figura 14: A história se repete ou nós já vimos isto ocorrer anteriormente.

Fonte: MIT Course 6.189 IAP, 2007 [34]

Um dos melhores exemplos desta ruptura tecnológica, que podemos exi-

bir, é a do processador IBM CELL, com suas diminutas dimensões, alta densidade

de transistores (cerca de 241 milhões), alta freqüência de operação (3.2 GHz), hete-

rogeneidade de processadores (1 PPE + 8 SPE) e altíssimo desempenho (240

GFLOPS teoricamente). Um novo olhar tecnológico se aproxima para iluminar nossa

visão. O CELL não pode esperar, nem nós podemos esperar o CELL (Figura 15).

41

Figura 15: As diminutas dimensões do processador CELL

Fonte: MIT Course 6.189 IAP, 2007 [34]

4.1 TAXONOMIA DOS MULTICORES

Os multicores podem ser divididos em três principais grupos, descritos na

seqüência:

Memória Compartilhada: Neste os processadores comparti-

lham uma única memória comum, acessível por todos os núcleos.

Rede Compartilhada: Os núcleos compartilham internamente

um barramento exclusivo para comunicação entre eles próprios.

Crippled ou Minicores: Os núcleos ou minicores são desabilita-

dos de algumas funções básicas para fins de simplificação e apro-

veitamento de projetos mais sofisticados em processadores mais

simples e mais baratos – um tipo de desmembramento.

Memória Compartilhada Rede Compartilhada Crippled ou Minicores

42

Intel Yonah, AMD Opteron MIT Raw Intel Tflops

IBM Power 5 & 6 IBM CELL PicoChips

Sun Niagara T1, T2

Tabela 1 Exemplos de processadores multicore

Fonte: MIT Course 6.189 IAP, 2007 [34]

Algumas das significativas características dos computadores listados na Tabela 1 são detalhadas na Tabela 2, a seguir:

Processador Multicore Características

Intel Yonah, AMD Opteron Primeiro dualcore comercial da Intel, lançado em 2005, com 65 nm e também com versão singlecore

IBM Power 5 & 6 Processadores dualcore IBM, sendo que o Power 6 pode atingir até 4.7 Ghz de clock, lançado em 2007 para servidores high-end

Sun Niagara T1, T2 Denominado T1 pela Sun, possui 8 cores e 32 threads, enquanto o modelo T2 possui 8 cores e 64 threads simultâneas.

MIT Raw Multicore experimental do MIT com 16 cores com rede interna de alta velocidade

IBM CELL Bastante discutido neste trabalho, 9 cores heterogêneos (1 PPE + 8 SPEs)

Intel Tflops Nome inicial para projeto Intel do processador com 80 cores

PicoChips Multicore heterogêneo, constituído de muitos microprocessadores que podem ser desmembrados e agregados para constituir funções de processamento específicas

Tabela 2 Características gerais de alguns processadores multicoreFonte: Sites dos fabricantes (Intel [7], IBM [8], Sun [25], MIT [14])

43

5 GPU

GPU ou unidade de processamento gráfico (Graphical Processor Unit) é

um dispositivo de renderização gráfica para PC, workstation ou console de jogos ele-

trônicos. As modernas GPUs são muito eficientes em manipular e exibir gráficos

computadorizados e suas estruturas internas altamente paralelas as tornam mais efi-

cientes que as CPUs típicas e convencionais, para uma faixa de algoritmos que re-

quisitam um intenso e massivo uso de cálculos.

Uma GPU pode alojar-se numa placa de vídeo em separado ou estar inte-

grada na própria placa mãe. Na Figura 16, temos exemplos de GPUs.

Figura 16: GPUs de mercado: Nvidia Quadro FX 5600 e ATI (AMD) R600

Fonte: Sites dos fabricantes Nvidia [9] e AMD [10]

As modernas GPUs são descendentes dos chips gráficos monolíticos dos

idos anos de 80 e 90 e possuem hardwares especializados, que são capazes de efe-

tuar a maior parte de operações gráficas 2D e operações para traçar retângulos,

triângulos, círculos e arcos. As mais recentes também já possuem suporte a 3D e ti -

picamente incluem funções relativas a processamento de vídeo digital.

Algumas GPUs podem fazer uso de DMAs (dispositivos de acesso direto

à memória) para reduzir os tempos de load/restore nos processadores dos hosts as-

sociados.

As GPUs surgiram da especialização de funções gráficas e ainda hoje

estão para os processadores como os co-processadores das famílias inicias de x86,

44

ditos x87. Esta analogia será crucial para entendimento das diferenças nos capítulos

seguintes.

Hoje, as GPUs paralelas avançam contra mercados específicos domina-

dos pelas CPUs convencionais, como veremos, devido à alta especialização de suas

funções, num elevado grau de paralelismo e acentuado poder de computação arit-

mética.

O mercado de entretenimento formado pelos jogos eletrônicos e dese-

nhos animados em 3D foi o grande impulsionador das GPUs e aceleradores gráfi -

cos, permitindo uma enorme capitalização das duas principais empresas responsá-

veis pelo desenvolvimento e comercialização de GPUs: Nvídea e ATI (atualmente in-

corporada como uma divisão pela fabricante de processadores AMD).

5.1 FUNÇÕES COMPUTACIONAIS

As GPUs mais recentes usam a maior parte de seus transistores para efe-

tuar cálculos relativos a gráficos computacionais 3D. Elas foram inicialmente usadas

para acelerar o trabalho de mapeamento de texturas e renderização de polígonos

com uso intensivo de memória, posteriormente foram adicionadas unidades para

aceleração de cálculos geométricos tais como as transformações de vértices entre

diferentes sistemas de coordenadas. Desenvolvimentos recentes, em GPUs, inclu-

em suporte para sombreamentos programáveis, que podem manipular vértices e

texturas com muitas das mesmas operações suportadas pelas CPUs, com técnicas

de extrapolação e interpolação para reduzir as distorções, e com alta precisão no es-

paço de cores. Devido a maior parte destas computações envolverem matrizes e ve-

tores, engenheiros e cientistas demandaram maiores estudos do uso de GPUs

para cálculos não-gráficos [11].

45

5.2 GPGPU

Um novo apelo comercial com a mudança de nome de GPU para GPG-

PU, busca efetuar um novo enquadramento das GPUs no mercado diretamente do-

minado pelas CPUs, pois quando estas são comparadas com os processadores con-

vencionais atuais são de desempenho muito superior para aplicações especializadas

de diversas ordens, como as científicas, que fazem uso intensivo de cálculos aritmé-

ticos e uma nítida paralelização muito própria e conveniente às arquiteturas das

GPUs existentes.

A General-Purpose Computing on Graphics Processing Units (GPGPU),

ou GPU de fins gerais, é uma recente tendência que força e incentiva o uso de

GPUs para efetuar computação no lugar de CPUs. A adição de estágios programá-

veis e precisão aritmética mais alta para pipelines de renderização permitem aos de-

senvolvedores de software usar as GPUs para aplicações não relacionadas a gráfi-

cos apenas. Pela exploração das arquiteturas extremamente paralelas das GPUs,

que usam a abordagem de processamento de stream (um stream é uma seqüência

da dados que podem ser números, cores, vetores RGBA, etc.), muitos problemas de

computação em tempo real podem ser acelerados consideravelmente [12].

Por muitos anos as funcionalidades das GPUs foram limitadas. De fato,

por muitos anos elas foram usadas para acelerar certas partes dos pipelines gráfi-

cos. Algumas melhorias eram necessárias antes que a GPGPU se tornasse factível.

A facilidade de programação e os tipos de dados foram as principais me-

lhorias acrescentadas as GPUs, para permitir sua melhor utilização pelos desenvol-

vedores de jogos para obter efeitos mais realísticos. O desenvolvedor não precisa fi-

car muito preocupado em portar seu programa para GPUs, pois não é uma tarefa

tão difícil quanto no caso do processador CELL, mas, com relação às estruturas de

dados, estas sim precisam ser mais bem detalhadas e compreendidas.

46

5.2.1 CONCEITOS DE PROGRAMAÇÃO EM GPGPU

As GPUs são projetadas especificamente para gráficos e assim são muito

restritas em termos de operações e programação. Por causa de sua natureza, as

GPUs não são eficientes para lidar com problemas que podem ser resolvidos usan-

do-se processamento de stream e o hardware só pode ser usado em certas

ocasiões [11].

PROCESSAMENTO STREAM

As GPUs só podem processar vértices e fragmentos independentes, mas

podem processar muitos deles em paralelo. Portanto, é especialmente eficiente

quando o programador quer processar muitos vértices da mesma forma. Neste senti-

do, as GPUs são stream processadas -- os processadores que podem operar em

paralelo pela execução de um único kernel ou muitos registros num mesmo stream

de uma única vez.

Um stream é simplesmente um conjunto de registros de computação simi-

lar. Nas GPUs, vértices e fragmentos são elementos no stream e vértices e sombre-

adores de fragmentos são os kernels a serem executados sobre eles. Logo, as

GPUs processam elementos independentemente, se os dados são compartilhados

ou estáticos. Para cada elemento só podemos lê-lo da entrada, efetuar operações

sobre ele, e gravá-lo na saída. São permitidas múltiplas entradas e múltiplas saídas,

mas nunca um pedaço de memória que é de leitura e gravação simultaneamente.

Aritmética intensiva é definida como a operação executada por palavra de

memória transferida. É importante para aplicações GPGPU que se tenha aritmética

intensiva ou a latência de acesso à memória limitará a velocidade de computação.

47

Aplicações ideais para GPGPU possuem grandes arquivos, alto paralelis-

mo, e mínima dependência entre os elementos de dados.

5.3 PORQUE USAR GPGPU?

As GPUs hoje são bens de consumo praticamente adquiríveis e vendá-

veis como commodities (produtos de prateleira) e possuem preços relativos muitos

baixos, sendo o melhor e mais poderoso hardware computacional mensurado em

GFLOPS pelo menor custo, ou seja, o melhor valor por dólar empregado. Portanto,

tem sido uma excelente opção de todos que dos seus recursos necessitam para

suas aplicações extensíveis um pouco além de suas características específicas de

processamento gráfico, com várias aplicações de fins gerais sendo portadas para as

GPUs, graças as suas novíssimas características de facilidade de programação, ou

“programabilidade” como denominaremos doravante neste trabalho, e uma enorme

largura de banda de memória. Não somente o hardware é rápido, mas também as

suas atualizações e novas tecnologias estão sendo disponibilizadas mais rapida-

mente que a tecnologia de seu concorrente, as CPUs, com disponibilização de devi-

ce drivers (programas acionadores dos dispositivos que permitem a utilização dos

mesmos pelo sistema operacional e aplicações dos usuários) rapidamente para sis-

temas Linux e Windows [9].

48

Figura 17: Acelerada evolução do poder computacional das GPUs

Fonte: Tutorial sobre GPU de Mike Houston na SIGGRAPH 2007 [38]

As GPUs são onipresentes e economicamente menos custosas, ou seja,

estão em todos os dispositivos: placas gráficas, desktops, notebooks, PDAs, celula-

res, etc. Atualmente já alcançaram um bom nível de maturidade tecnológica e cientí-

fica.

Na Figura 17, podemos observar que num curto espaço de tempo, de

2001 a 2007, as GPU não apenas aumentaram seu desempenho centenas de vezes

como também o fizeram com uma velocidade muito maior que as CPUs, que além

de crescer muito pouco em termos de desempenho, no mesmo período, também o

fizeram de modo muito lento relativamente as GPUs, isto no que se refere às suas

aplicações gráficas específicas, é claro.

49

5.4 TÉCNICAS GPGPU

As técnicas básicas de operação com GPUs são aplicadas em computa-

ção gráfica para renderização de figuras 2D utilizando primitivas gráficas para traçar

retângulos, triângulos, círculos, arcos, preenchendo áreas, processando vértices e

fragmentos, etc. E, também como texturização, iluminação e suavização para figuras

3D nas modernas GPUs, além de incluírem funções relacionadas a processamento

de vídeo digital.

5.4.1 CLASSIFICAÇÃO DAS OPERAÇÕES DAS GPUS

PROCESSAMENTO STREAM

As GPUs [49] podem processar vértices e fragmentos em separado mas

podem fazê-lo em muitos desses e de modo paralelo ao mesmo tempo, ou seja, o

desempenho das GPUs podem ser muito acelerado em comparação as CPUs, pois

as GPUs são processadores de streams, isto é, processadores que podem operar

em paralelo pela execução em um único kernel de muitos registros num mesmo

stream de cada vez.

50

MAPEAMENTO

A operação de mapeamento simplesmente aplica uma dada função (um

kernel) a todo o elemento no stream. Como, por exemplo, o aumento do brilho de

uma imagem com a aplicação de um fator constante a cada valor num stream. A

operação de mapeamento é de simples aplicação na GPU. O programador gera um

fragmento para cada pixel na tela e aplica o programa fragmento a cada um. O stre-

am resultante é do mesmo tamanho do armazenado no buffer de saída.

REDUÇÃO

Algumas computações requerem o cálculo de um stream pequeno (possi-

velmente um stream de um elemento a partir de um stream muito maior). Esta ope-

ração é chamada de redução. Geralmente, uma redução pode ser obtida em múlti-

plos passos. Os resultados dos passos anteriores são usados como entradas para

os passos seguintes e o resultado final destas operações é reduzido até que se atin-

ja um elemento restante.

SCATTER

A operação de scatter é mais naturalmente definida sobre um processa-

dor de vértices. O processador de vértices é capaz de ajustar as posições dos vérti-

ces, o que permite ao programador controlar onde a informação será armazenada

no grid (rede de pontos que formam uma malha bidimensional retangular ou tridi-

mensional cúbica).

51

GATHER

O processador de fragmentos é capaz de ler texturas num modo de aces-

so aleatório, tal que pode obter informação de qualquer célula do grid, ou múltiplas

células, se assim o desejar.

FILTROS DE STREAM

Um stream filter é essencialmente uma redução não-uniforme. A filtragem

envolve a remoção de itens do stream baseada em algum critério.

SORT

A operação sort (classificar, ordenar) transforma um conjunto desordena-

do de elementos em um conjunto ordenado de elementos.

SEARCH

A operação search (busca, procura) permite ao programador encontrar

um elemento particular num stream, ou possivelmente encontrar vizinhos de um ele-

mento específico. A GPU não é usada para acelerar a busca de um elemento indivi -

dual, mas sim executar buscas múltiplas em paralelo.

52

5.5 ESTRUTURA DE DADOS

As estruturas de dados das GPUs são bem conhecidas e descendentes

diretas da representação de dados gráficos para texturização, renderização, buferi-

zação, etc. Permitem representar dados estruturados como vetores em uma, duas

ou três dimensões (1D, 2D ou 3D) de forma direta (1D ou 2D) e indireta (3D) mas

com limitações dependentes da memória da GPU.

5.6 APLICAÇÕES EM GPGPU

As aplicações para GPPGUs foram desenvolvidas inicialmente para as

necessidade de computação gráfica. Essencialmente: translações, rotações, texturi-

zação, rasterização, iluminação e todos os aplicativos dependentes destes procedi-

mentos como: gráficos 2D e 3D, otimização geométrica, multiplicação matricial, pro-

cessamento de sinal, etc. Posteriormente, desenvolveram-se, graças a novos algorit-

mos e novas potencialidades e performance das novas GPGPUs algoritmos para

sistemas de partículas, dinâmica de fluidos, processamento de vídeo, dinâmica mo-

lecular, simulação física, Ray-Tracing (traçado de raios), etc. A extensão de aplica-

ções de computação de alto desempenho (HPC) para GPU é muito recente e possui

um amplo espectro à sua frente como, por exemplo, processamento sísmico, FFT

3D, dinâmica das nuvens, imagens médicas, etc. Novas aplicações são esperadas

mas restringe-se ao processamento de ponto fixo ou ponto-flutuante simples, ou

seja, processamento com dados numéricos do tipo inteiro ou que necessitem de bai-

xa precisão de cálculo ou poucas casas decimais de resultados.

Aplicações em GPGPU

53

Análise de Dados Dinâmica das Nuvens

Otimização Geométrica Biomédica

Simulação Física Dinâmica dos Fluídos

Multiplicação Matricial Reconhecimento de Voz

Sistema de Partículas Processamento de Vídeo

Simulação do Campo de Forças FFT 3D

Dinâmica Molecular Análise Léxica

Desenho de Grafos Avaliação Polinomial

Processamento de Sinal Processamento Sísmico

Gráficos Comparação de Strings

Ray-Tracing (Traçado de Raios) Imagens Médicas

Tabela 3 Algumas aplicações para GPGPUs

Fonte: http://www.cis.upenn.edu/~suvenkat/700/. [39]

5.7 DIAGRAMA DE BLOCOS DA GPU

Na Figura 18, podemos verificar os detalhes arquiteturais da GPU da

Nvidia, modelo Nvidiia GeForce 8800. Existem muitos elementos na pastilha da pla-

ca gráfica ou GPU. Estes elementos, esquematicamente podem ser visualizados no

diagrama de blocos mostrado na mesma Figura 18. Os blocos verdes marcados

com “SP” e arranjados em grupos de 16 são o que a Nvidia denomina “stream pro-

cessors” (processadores de stream). A arquitetura G80 da Nvidiia, da qual faz parte

a GeForce 8800, possui oito grupos de SPs, num total de 128 processadores de

stream. Existem sombreadores de pixels e vértices mas existem processadores, de

ponto flutuante, capazes de operar sobre vértices, pixel ou outros tipos de dados. A

maior parte das GPUs operam sobre dados de pixel na forma de vetor emitindo ins-

truções concorrentes sobre múltiplos componentes de cor de um pixel (tais como

vermelho, verde, azul ou alfa), mas os processadores stream da arquitetura G80 são

54

escalares – cada SP manipula um componente. Os SPs podem ser redirecionados

para manipular dados de vértices (ou outras coisas) dinamicamente, de acordo com

a demanda. Também, diferentemente dos processadores de gráficos tradicionais,

aqueles cujas freqüências devem estar próximas a 600 MHz ou superior, estes

possuem velocidade de clock próximas a freqüências de 1,35 GHz, dando a

GeForce 8800 um tremendo poder de processamento de ponto flutuante. A maior

parte do restante do chip trabalha a uma freqüência independente e mais convenci-

onal, da ordem de 575 MHz.

Abaixo dos oito clusters, encontra-se o chaveamento do barramento (os

pedaços com todas as linhas e setas) que conectam os clusters às seis partições

ROP. Cada partição ROP tem sua própria memória cache L2 e uma interface à me-

mória gráfica (ou frame buffer, indicada pelo rótulo “FB”) que tem 64 bits de largura.

No total, isto fornece 384 bits de largura para a memória.

Cada conjunto de 16 SPs é formado por dois grupos de oito SPs. Cada

grupo tem seu próprio endereçamento de textura (TA) e unidades de filtragem (TF,

blocos azuis) e seu próprio pool de cache L1. Além do cache L1, existe uma cone-

xão de barramento que leva às unidades ROP, com seus caches L2 e conexões à

memória principal.

55

Figura 18 Diagrama de blocos das unidades de processamento das GPUs

Fonte: Course of Stanford University – CS448-07-spring [40]

5.8 PRINCIPAIS LINGUAGENS PARA USO EM GPUS

Historicamente, as principais linguagens para desenvolvimento específico

de programas para GPUs são: Brook, Cg, GLSL, HLSL, Sh [41]

Existem muitos pacotes de desenvolvimento de software (SDK)

para programadores desenvolverem aplicações para GPUs. O principal deles, atual-

mente, é o CUDA (Computer Unified Development Architecture), desenvolvido pela

empresa Nvidia e, ao que tudo indica, passará a ser o padrão. Outro pacote de de-

56

senvolvimento para GPU prometido pelo fabricante AMD é o CTM (Close to The Me-

tal) mas, ao que tudo indica, tenderá a aderência ao padrão CUDA da Nvidia por

motivos de racionalidade, evitando competições que enfraqueceriam o mercado nes-

te nicho de mercado com área tão específica [42].

6 CELL

6.1 UMA HISTÓRIA ROMÂNTICA

O conceito de CELL foi criado pela Sony Computer Entertainment Inc., do

Japão, para Sony PlayStation 3. A gênese da idéia foi em 1999 quando o japonês

Ken Kuratagi da Sony [Kuratage], “pai do PlayStation 3”, imaginou um computador

que atuasse como uma célula num sistema biológico. Uma patente foi aplicada em

nome de Masakazu Suzuoki e Takeshi Yamazaki como inventores em 2002. Segun-

do o próprio Kuratage [43],

“Embora vendido como uma console de jogo, o que vai de fato

entrar na casa é um computador baseado em célula.”

6.2 DA IMAGINAÇÃO À REALIDADE

No verão de 2000 em Tóquio, Japão, as empresas IBM, Sony SCEI e

Toshiba, com o objetivo de iniciar um projeto de uma nova e revolucionária micro-ar-

quitetura de processador, visando às futuras necessidades interativas de processa-

57

mento e objetivando alcançar desempenho 1000 vezes superior ao daquele momen-

to, considerando-se a arquitetura computacional vigente insatisfatória para as neces-

sidades computacionais projetadas para os dispositivos interativos do futuro próxi-

mo. Ficou a cargo da divisão de pesquisa da IBM a responsabilidade pela aborda-

gem de uma nova organização de projeto, levando em conta o estado da arte do

processo tecnológico de 90 nm com silício-sobre-isolante (SOI), dielétricos com bai-

xo-k (pequena constante dielétrica relativa ao dióxido de silício – SiO2 ) e intercone-

xões de cobre. Já em sua concepção inicial pretendia-se uma fortíssima capacidade

de processamento central, para sistemas de entretenimento,. juntamente com uma

interconexão de broadband (banda larga) e estruturas de super computadores. Vári-

as propostas foram discutidas, todas multicore, indo de chips multiprocessados até

multiprocessadores orientados a fluxos de dados (streams)

No final daquele ano acordou-se que a arquitetura aprovada seria uma

combinação da arquitetura IBM Power de 64 bits com processadores “sinergéticos” a

fim de obter a densidade e a eficiência de potência necessária aos requisitos compu-

tacionais desejados.

Após meses de discussão arquitetural e negociações contratuais, consti-

tui-se uma joint venture denominada STI (Sony SCEI – Toshiba - IBM) localizada em

Austin, Texas, Estados Unidos, e com investimentos de 400 milhões de dólares e

cerca de 400 cientistas alocados ao projeto em março de 2001.

Os objetivos e desafios do projeto foram: excelência em performance, es-

pecialmente em jogos e aplicações multimídia; tempos de resposta para usuário e

rede compatível com sistemas em tempo real; aplicabilidade a um vasto intervalo de

plataformas; e, suporte para ser introduzido em 2005 [36].

Uma nova arquitetura denominada Broadband Processor Architecture, es-

tende a arquitetura Power de 64 bits com a cooperação de processadores de alívio

(“ditos processadores sinergéticos”), com acesso direto à memória (DMA) e meca-

nismos de sincronização de comunicação com os mesmos (“Memory Flow Control”),

e com melhorias para gerenciamento de tempo-real. A primeira geração do proces-

sador CELL combina dual-threaded, dual-issue, arquitetura Power 64-bit compatível.

58

O Power Processor Element (PPE) com oito novíssimas arquiteturas Synergistic

Processor Element (SPEs), o controlador de memória no chip (LS – local storage --

memória local) e contando com um controlador para interface de I/O configurável.

Estas unidades são interconectadas com um elemento de barramento de intercone-

xão coerente no próprio chip (EIB). Suporte extensivo para funções pervasivas, tais

como: power-on, teste, depuração de hardware no chip, e funções de monitoração e

performance também estão incluídas [36].

As características básicas lógicas e físicas do processador CELL estão

descritas na Figura 19.

Figura 19: Características gerais de um CELL

Fonte: MIT Course 6.189 IAP, 2007 [34]

59

Os atributos chave deste conceito são [36]:

• Um projeto para altas freqüências, pequeno número

de portas por ciclo, permitindo ao processador operar a baixa voltagem e

baixa potência enquanto mantém alta freqüência e alta performance.

• Compatibilidade com arquitetura IBM Power para

fornecer um ponto de entrada convencional para programadores, para vir-

tualização, suporte a múltiplos sistemas operacionais e habilitado a utilizar

a experiência IBM em projetar e verificar multiprocessadores simétricos.

• Arquitetura SIMD (Single Instruction, Multiple Data),

suportado para ambas as extensões de mídias vetoriais em PPE e conjun-

tos de instruções no SPEs, como um dos meios de melhorar o desempe-

nho em jogos / mídia e aplicações científicas, aumentando-se a eficiência

consumo / dissipação de energia.

• A eficiência de potência e área do PPE, que suporta

o projeto de alta freqüência.

• SPEs para alívio coerente. SPEs possuem memória

local, DMA assíncrono coerente, e um grande número de registradores

unificados para melhorar a largura e para um novo nível de eficiência de

potência e desempenho combinados. Os SPEs são dinamicamente confi-

guráveis para suportar a proteção de conteúdo e privacidade.

• Um barramento coerente com alta largura de banda

e também uma alta largura de banda de memória para permitir eficiência e

desempenho às aplicações que deles necessitarem para fazer uso intensi-

vo e para permitir interações no chip através da alta largura de banda de

comunicação entre os elementos do processador. O barramento é coeren-

te para permitir que um único espaço de endereçamento seja compartilha-

do pelos PPEs e SPEs, visando eficiência de comunicação e facilidade de

programação.

60

• Alta largura de banda de I/O flexível e configurável

para suportar um grande número de sistemas operacionais, incluindo con-

figuração num único chip com interfaces duais e desacopladas com coe-

rente configuração dual-processada que não requer chips adicionais de

chaveamento para conectar os dois processadores.

• Implementação modular totalmente configurável

para maximizar performance por watt e performance por milímetro quadra-

do de silício, além de facilitar o projeto de produtos derivados.

• Suporte extensível para gerenciamento de potência

e dissipação térmica do chip, testes de fabricação, hardware e software de

depuração, e análise de performance.

• Alta performance, baixo custo da tecnologia de em-

pacotamento.

• Alta performance, baixa potência com tecnologia

SOI de 90 nm.

Em síntese, temos:

• Projeto de alta freqüência e baixa voltagem.

• Compatibilidade com arquitetura Power 64 bit.

• Arquitetura Single Instruction Multiple Data (SIMD).

• Elemento de Processamento Power (PPE).

• Elemento de Processamento Sinergético (SPE).

• Alta largura de banda coerente de fabrica no chip e alta largura

de banda de memória.

• Alta largura de banda de I/O flexível.

61

• Implementação totalmente reconfigurável.

• Funcionalidade pervasiva (notável, que se espalha) extensiva.

• Alta performance, baixo custo de tecnologia de empacotamen-

to.

• Alta performance e baixa potência com tecnologia CMOS SOI.

Modelo e facilidades de programação:

o Modelo de função de relaxamento.

o Modelo de extensão de dispositivo.

o Modelo de aceleração computacional.

o Modelos de streaming.

o Modelo multiprocessador com memória compartilhada.

o Modelo de thread assimétrica em tempo de execução.

Os elementos componentes básicos do processador CELL, que podem

ser vistos na Figura 20, são:

• 1 Power Processor Element (PPE).

• 8 Synergistic Processor Elements (SPEs).

• Element Interconnect Bus (EIB).

62

• Controladores de Acesso Direto à Memória (DMAs).

• 2 controladores de memória Rambus XDR.

• Interfaces de (Input/Output) Rambus FlexIO.

Figura 20: Fotografia da pastilha de um processador CELL

Fonte: MIT Courrse 6.189 IAP, 2007 [34]

Na Figura 20, podemos observar os componentes físicos do processador

CELL na pastilha, e que a pastilha do CELL é formada por 1 PPE + 8 SPE, com uma

interconexão IEB e um cachê L2, dentre outros elementos como a controladora de

Entrada e Saída, duas interfaces de memória XDRAM, o controlador de memória e

o FlexIO do tipo Rambus além do circuito lógico para depuração e teste.

63

6.3 DISPOSITIVOS DE VETORIZAÇÃO DO CELL

AltiVec (VMX IBM ou Engine Velocity Apple)

O AltiVec é uma máquina SIMD e uma extensão para o conjunto de ins-

truções do IBM PowerPC, projetado para melhorar o desempenho de qualquer apli -

cação que explore o paralelismo em nível de dado [44]. AltiVec é usado para aumen-

tar o desempenho no processamento de aplicações de áudio, vídeo e comunicação.

Para fazer uso do AltiVec, o desenvolvedor não precisa necessariamente reescre-

ver o código inteiro da aplicação, mas a aplicação deve ser reprogramada ou, no mí-

nimo, recompilada. Aplicações que usam o AltiVec não requerem que sejam escritas

em Assembler (linguagem de máquina). É possível usar as linguagens de alto nível

C, C++ ou C Orientado a Objeto para facilitar o uso do AltiVec.

ALTIVEC NO PPE

Um outro interessante fato sobre o PPE é que ele inclui suporte para as

instruções vetoriais VMX (também conhecidas como ”AltiVec” ou “Velocity Engine”

devido a Apple, descrito no parágrafo anterior). O VMX acelera de cálculos financei-

ros a funções do sistema operacional apesar de que (mesmos nos equivalentes dos

PCs) não aparente ser usado atualmente. Uma empresa que usa extensivamente o

VMX é a Apple, que a usa para acelerar as funções de seu sistema operacional OS

X, e não daria muito trabalho para a Apple utilizar o elemento PPE do processador

CELL se assim o deseja-se [43].

64

AltiVec no SPE

Os SPEs são processadores vetoriais (ou SIMD). Isto é, eles efetuam

múltiplas operações simultaneamente numa única instrução. A computação vetorial

existe nos supercomputadores desde os idos de 1970 (o computador Cray 1 foi o

primeiro a usar essa técnica) e modernas CPUs têm aceleradores de mídias (isto é,

MMX, SSE, VMX / AltiVec) que funcionam com o mesmo princípio. Cada SPE é ca-

paz de executar 4 operações de 32 bits cada por ciclo de instrução (8 se levarmos

em conta multiplicar-somar). A fim de tirar vantagem dos SPEs, os programas execu-

táveis precisam ser “vetorizados”, isto pode ser feito em muitas áreas de aplicação

como vídeo, áudio, gráficos 3D, memória principal (eles podem mover os dados en-

tre as memórias locais dos SPEs) [43].

Enquanto os processadores convencionais têm unidades vetoriais na pla-

ca (SSE ou VMX / AltiVec) eles não estão dedicados a processadores vetoriais. A ca-

pacidade de processamento vetorial é agregada ao conjunto de instruções existente

e tem que compartilhar os recursos de CPU. Já os SPEs são dedicados a processa-

dores vetoriais de alta velocidade e com sua própria memória, não necessitando

compartilhar qualquer outro recurso senão a memória (e nem mesmo esta se a mai-

or parte dos dados puder se ajustar ou estar contido completamente em sua memó-

ria local). Além desse fato, existem oito deles, SPEs, e portanto, podemos perceber

porque o seu potencial computacional é tão grande.

Tal discrepante diferença de desempenho soa parecer ridículo mas, na

verdade, já está presente nas modernas placas gráficas de sistemas existentes com

capacidade análoga de processamento como, por exemplo, as Nvidia GTX 8800.

Existem GPUs que já podem fornecer um poderoso processamento maciçamente

paralelo, quando programadas propriamente mas isto não é exatamente uma tarefa

fácil. A diferença com o processador IBM CELL, conforme alegam seus defensores,

é que este, num futuro próximo, será mais barato, consideravelmente mais fácil de

programar e será usado para uma vasta classe de problemas. Esta afirmativa não

parece estar longe da verdade, pois a Join Venture STI (Sony-Toshiba-IBM) preten-

65

de embarcar não apenas a atual geração de Sony PlayStation 3 mas as seguintes,

como também as TVs de alta definição (HDTV), os dispositivos de disco rígido de

alta definição HD BlueRay, os HD DVDs também de alta definição, dentre outros que

surgirão, enquanto as GPUs ficarão, no máximo, confinadas a placas gráficas de-

pendentes de hosts para terem seus serviços disponibilizados além de preços talvez

não competitivos devidos a fatores de economia de escala de produção [43].

6.4 DESENVOLVIMENTO PARA O CELL

Enquanto desenvolver para o processador CELL poderia soar como uma

forma esquisita de tortura, na verdade, isto não é bem o caso. Se pudermos com-

preender o desenvolvimento de programação para multithreading, gerenciamento de

cache e SSE / VMX / AltiVec, parece que não teremos problemas com o CELL.

A linguagem primária para desenvolvimento no CELL esperada é a lingua-

gem C com técnicas de sincronização de thread normais usadas para controlar a

execução de diferentes cores. A linguagem C++ também é suportada num certo

grau e outras linguagens também estão em desenvolvimento (incluindo, aparente-

mente, FORTRAN).

Vários sistemas estão em desenvolvimento para controlar a execução em

CELL, tal que os desenvolvedores deverão ter uma plenitude de opções, comparável

ao desenvolvimento do Sony PlayStation 2 (PS2), que era primariamente feito em

assembly (instruções em linguagem de máquina) e era altamente restritivo e, hoje, já

existem centenas de jogos para este sofisticado hardware de console de jogos.

A distribuição de tarefas para os SPEs, que funcionam como aliviadores

de carga dos PPEs, pode ser manuseada pelo sistema operacional ou middleware

(middleware é um software que faz a mediação entre diversos tipos de hardware e

software em uma rede, de modo a possibilitar a integração de seus aplicativos). Esta

66

distribuição de tarefas pode ser implementada compilando-se as aplicações ou

mesmo, de modo corajoso, desenvolvendo-ser a aplicação diretamente na própria

linguagem de máquina (assembly) do CELL através de instruções diretas do PPE e

SPEs, sendo responsabilidade do desenvolvedor fazer fluir seu próprio sistema.

Prometem os fabricantes, que os SPEs serão dinamicamente selecionáveis e

acionados, e que os desenvolvedores não necessitarão se preocupar com o que os

SPEs estão fazendo.

O fabricante Toshiba está desenvolvendo software para executar CELL

em seus bens de consumo. Eles falaram em um sistema operacional sob medida

para seus produtos (atualmente, uma versão de Linux adequada) no qual as tarefas

são divididas entre os “módulos” dos SPEs e do PPE. Cada módulo do SPE é uma

subtarefa que pode operar usando um ou mais SPEs, dependendo do poder com-

putacional requerido, os módulos também podem trocar dados via stream uns com

os outros [45].

6.5 É O PROCESSADOR CELL DE FIM GERAL?

O CELL foi projetado como um processador de fim geral, mas otimizado

para tarefas que requeiram o uso de computação intensiva. O PPE é um processa-

dor convencional e continua agindo como tal. A grande diferença estará nos SPEs,

como foram projetados para acelerar tipos específicos de códigos e serão notavel-

mente melhores e mais eficientes em algumas áreas do que em outras, mesmo que

os SPEs não sejam de fim geral. O CELL é em sua essência voltado para executar

todos os programas a velocidades moderadas com capacidade para mudar para

execução a altas velocidades para certos tipos de códigos [21].

O PPE é um core de fim geral e não deve apresentar problemas para a

maioria dos códigos. Diz-se que o PPE tem uma arquitetura simplificada quando

comparada com outros processadores de desktops e parecem ter razão, não pela

67

pelo baixo desempenho mas pelo baixo desempenho em códigos voltados para fins

gerais. Devemos tomar cuidado com esta afirmação porque esse código pode ou

não ser de fim geral. Alguns fazem uma vaga referência à perda de capacidade do

hardware de executar instruções fora de ordem ou limitada capacidade de predição

de desvios [21].

Esta relativa simplicidade pode ser desvantajosa em alguns casos. Entre-

tanto, o PPE não existe isoladamente e será capaz de deslocar o trabalho pesado

para os SPEs. Mesmo que a diferença de desempenho transferida seja maior do

que a perda devido a simplificação.

6.6 A ARQUITETURA RISC ATACA NOVAMENTE

A tendência nas CPUs dos últimos 15 anos tem sido aumentar o desem-

penho não apenas aumentando a taxa da freqüência do processador mas, também,

aumentando o número de instruções por ciclo (IPC). Os projetistas têm usado tran-

sistores adicionais a cada processo de miniaturização para criar adicionalmente má-

quinas mais sofisticadas, que podem executar mais e mais instruções indo até ao re-

quinte de executá-las fora de ordem. Muitas CPUs de modernos desktops fazem

isso, exceto alguns processadores Transmeta, VIA e Itanium da Intel. A execução fo-

ra-de-ordem é uma raridade nos dispositivos embarcados com processadores devi-

do as considerações de consumo de energia não o permitirem.

O PPE é completamente diferente, entretanto. Ele usa um projeto muito

simples e não contém nenhum hardware de previsão de execução fora de ordem, o

que é completamente oposto à abordagem do último core do PowerPC, o 970FX,

também conhecido como G5.

68

A razão para a completa mudança na direção da filosofia do

projeto é devido aos projetistas estarem se deparando agora com as limitações físi-

cas da CPU. As CPUs, que executam instruções fora de ordem, são altamente com-

plexas e usam um grande número de transistores para alcançar seus objetivos, es-

tes requerem muita energia e, portanto, necessitam de resfriamento para a energia

dissipada. O resfriamento se torna um problema crescente à medida que os transis-

tores começam a perder elétrons transformando parte da potência consumida mes-

mo quando não estão em uso ativo. Este problema é comum a todos os fabricantes

de CPUs de desktops e estes tentam ganhar mais desempenho aumentando as ve-

locidades dos clocks dos processadores e são levados, ao invés disso, a uma abor-

dagem de multicore. Aqueles que ainda não foram levados a esta simplificação, cer-

tamente o serão, conforme a tendência de multicore dos fabricantes comprova estes

fatos [21].

7 DIFERENÇAS ENTRE O PROCESSADOR CELL E GPUS

As diferenças fundamentais entre o processador IBM STI CELL e as

GPUs são intrínsecas e fundamentais que vão desde suas concepções arquiteturais

até as suas pretensões mercadológicas e econômicas, ou seja, já nasceram distin-

tas e não convergirão para um foco comum. Enquanto as GPUs, querendo ou não,

representam uma sofisticadíssima evolução dos co-processadores matemáticos,

como assim se apresentam para efeito de simplicidade, e pertencem à categoria de

processadores de fins específicos, o processador CELL propõe-se a ser de fins ge-

rais desde sua concepção e não é nem se pretende ser evolução de uma arquitetura

existente e sim uma nova e revolucionária arquitetura de multicore heterogênea com

uma rede interna de alta velocidade entre os seus núcleos, acrescido do legado IBM

Power 64 bits no PPE e com memória distribuída nos SPEs do próprio processador,

podendo todos estes últimos elementos acessar diretamente a memória principal via

DMA ou trocar dados entre as memórias locais e a principal a altíssimas velocida-

des num barramento de até 300 GB/s (giga bytes por segundo).

69

A conseqüência fundamental das diferenças, acima expostas, é que isto

implica numa maior complexidade de desenvolvimento de software, bibliotecas,

compiladores e, portanto, programas para os processadores CELL.

As GPUs possuem uma grande presença de mercado. De fato, são de

mais fácil programação, com as novas características, sem grandes traumas para os

desenvolvedores. Praticamente dominam o mercado de jogos e a industria do entre-

tenimento como os desenhos animados. Mas, como podemos exemplificar com os

principais fabricantes de hardware para jogos eletrônicos com seus produtos como

Microsoft Xbox 360, Sony PlayStation PS3 e Nintendo Wii, já se utilizam todos eles

de processadores IBM multicore de distintas gerações, tendo a Sony o privilégio de

ter o seu PS3 como sendo o primeiro produto de mercado com o processador CELL,

graças aos frutos da parceria STI (Sony-Toshiba-IBM). Isto é, de fato, fora do circuito

das GPUs em placas gráficas para PCs, principalmente para os jogos eletrônicos,

existe um domínio completo de processadores IBM na indústria de jogos

eletrônicos [34] e com suas consoles apresentadas na Figura 21.

Figura 21 Jogos de mercado: Sony PS3, Microsoft Xbox 360 e Nintendo Wii

Fonte: Sites dos fabricantes Microsoft [46], Sony [19] e Nintendo [47]

70

As conseqüências econômicas da parceria STI serão importantíssimas

para toda a economia de escala de produção e comercialização de produtos com o

processador CELL internalizados. Tudo indica que os parceiros desejam embutir o

processador CELL em todo e qualquer eletro-eletrônico de suas indústrias o que im-

plicará numa gigantesca economia de escala para todos, em especial para os con-

sumidores, permitindo-se assim que as mais avançadas tecnologias estejam dispo-

níveis em muitas das atualmente primordiais ferramentas dos seres humanos em

toda e qualquer parte do globo terrestre ou mesmo fora deste. As dimensões, consu-

mo elétrico e necessidades de refrigeração foram concebidas para tal, aguardando

apenas o transcurso natural da mudança definitiva do paradigma de programação

seqüencial para a programação paralela como pré-requisito fundamental da transi-

ção tecnológica.

E quanto as GPUs? Bem, os movimentos que se podem observar indicam

que os defensores ideológicos ou comerciais das GPUs não buscam se comparar

com processador CELL mas sim com aqueles processadores que consideram seu

adversário natural: as CPUs convencionais, com um ou poucos núcleos. Tudo leva a

crer que a maior interessada nesta contenda, as fabricantes de processadores Intel

a fabricante AMD, reagirão e procurarão reverter o jogo a seu favor, se assim o de-

sejarem. A esta incursão invasiva das GPUs, que se pretendem muito superiores em

preço e desempenho e se qualificam como sendo de fins gerais, quando compara-

das com as CPUs convencionais [12], é preciso dar um tempo e aguardar o desenro-

lar dos fatos para se verificar se concretizará ou se não será apenas um apelo de

marketing. A tendência, sob uma ótica simplificada, seria a inserção de funcionalida-

des e facilidades de programação de GPUs em CPUs via inserção nos chips de

nova geração e tecnologia de 45nm ou de dimensão inferior ou nas modernas pla-

cas mãe que hão de vir, como abordaremos em capítulo específico à frente.

Cabe, ainda, ressaltar a dependência fundamental das GPUs em função

das CPUs, sem as quais tornam-se produtos inoperantes e inúteis. Sem dúvida, vis-

tas por esta ótica, não são tão mais baratas assim, pois não são autônomas e enca-

recem mais ainda os desktops, laptops ou outros dispositivos que as utilizem. O pro-

blema fundamental das GPUs não é o de se tornarem mais especializadas ainda,

71

muito pelo contrário, é de buscarem se fazer e comportar de modo tal que sejam de

uso geral e não especificamente para o processamento gráfico. Sabedores dos prós

e contras das próprias GPUs, e das fragilidades das CPUs convencionais, é conve-

niente do ponto de vista comercial, tentar conquistar novos mercados e territórios co-

merciais, que não os já quase que exclusivamente dominados pelas GPUs como o

de computação gráfica (na indústria de entretenimento: desenhos animados, jogos

eletrônicos em PCs, filmes, etc).

8 RUDIMENTOS DE SOFTWARE PARA GPUS

A GPU é altamente especializada para computação intensiva e paraleliza-

da, devido a sua origem voltada para o desenvolvimento de computação gráfica e os

problemas computacionais relacionados (processamento de imagens, renderização,

sombreamento, texturização, etc.) e, também, ao rápido crescimento da indústria de

jogos. A programação de GPU é feita com linguagens de alto nível e tem suporte a

precisão de ponto flutuante simples (32 bits), não possuindo suporte a precisão du-

pla, pois esta não é necessária para a indústria de jogos ou entretenimento. O atual

modelo de programação desenvolvido pela empresa Nvidia, fabricante de GPUs e

placas gráficas muito conceituadas no mercado, e que praticamente o domina, esta

concebeu toda uma nova arquitetura de programação a que batizou de CUDA (Com-

puter Unified Device Architecture) que é composta de APIs, compiladores, depurado-

res, ferramentas e toda a sorte de meios para facilitar e auxiliar os desenvolvedores

de aplicação para o uso de GPUs [9], fazendo com que estas passassem a integrar e

solucionar problemas de fins gerais, passando a denominá-las comercialmente

como GPGPUs, que tem um bom apelo comercial por dar a entender que as moder-

nas GPU são aplicáveis ao processamento de fins gerais sob o domínio das CPUs

mas, logicamente, não é válido para todos os casos, porém é válido para algumas

aplicações importantes, de simulações a cálculos científicos que envolvam matrizes

e solucionadores de sistemas equações lineares.

72

8.1 A ARQUITETURA CUDA COMO PADRÃO PARA GPU

Então, esta nova arquitetura denominada CUDA, proposta pela Nvidia [9],

baseia-se num modelo de programação de fim geral partindo de lotes de threads dos

usuários a serem executados nas GPUs, que podendo executar centenas de theads

passam a funcionar como um co-processador para problemas com dados maciça-

mente paralelos.

CUDA possui em sua arquitetura: acionadores (drivers) para carregar pro-

gramas nas GPUs que podem ser usados exclusivamente e são otimizados para

computação intensiva; utilização de interfaces projetadas para uso de gráficos, sem

a necessidade de APIs; compartilhamento de dados com objetos do tipo buffers de

OpenGL; velocidades de download e de releitura máximas garantidas; e, gerencia-

mento explícito de memória da GPU [48].

A arquitetura CUDA possibilita a integração de um programa de aplicação

escrito na linguagem C da CPU + GPU, onde a parte serial é executada na CPU e a

parte paralela ou acelerável do Kernel em C é executada nos blocos de threads da

GPU.

Para o modelo de programação CUDA, que é o de um co-processador al-

tamente multi-threaded, a GPU é vista como um device (dispositivo), isto é: encon-

tra-se na CPU ou host, tem sua própria memória DRAM e é capaz de executar mui-

tas threads em paralelo. Esboçaremos a seguir os passos lógicos de execução de

programas em conformidade com a arquitetura CUDA [48]:

As porções paralelas dos dados são executadas nos dispositivos como

kernels (um kernel é um fragmento, uma porção limitada e definida do programa que

é executada em cada elemento de um stream do programa, gerando um stream de

saída – pixel bufffer).

73

Por sua vez, os kernels são executados em paralelo em muitos threads.

Os threads são extremamente leves e exigem pouquíssimo overhead (trabalho adici-

onal) de criação e, enquanto as GPUs exigem milhares de threads por razões de

eficiência (quanto mais threads concorrentes maior o desempenho da GPUs), as

CPUs multicore necessitam de uns poucos threads.

Um kernel é executado como um grid de blocos de threads e todos esses

compartilham os mesmos dados do espaço de memória da GPU.

Um bloco de thread é um lote de threads, que podem cooperar entre si,

sincronizando suas execuções e compartilhando eficientemente os dados através de

uma memória compartilhada de baixa latência num mesmo bloco. Dois threads de

diferentes blocos não podem cooperar entre si.

Threads e blocos possuem identificadores, IDs, tal que cada thread possa

decidir em que identificador do bloco, bloco ID ( 1D ou 2D), ou identificador da thre-

ad, thread ID (1D, 2D ou 3D) trabalhar, permitindo-se assim uma simplificação do

endereçamento de memória quando do processamento de dados multidimensionais.

Como, por exemplo, no processamento de imagens, etc. Cada thread pode efetuar a

leitura e / ou gravação a depender do tipo de operações que irá realizar, conforma

Tabela 3.

74

Operação Onde ocorreLer/Gravar nos registradores por threadLer/Gravar na memória local por threadLer/Gravar na memória compartilhada por blocoLer/Gravar a memória global por gridApenas Ler as constantes de memória por gridApenas Ler a memória de textura por grid

Tabela 4 Tipos de operações em GPU e localização de ocorrência

Fonte: Tutorial da Nvidia em SISGRAPH 2007 [48]

O host pode ler e gravar as memórias global, constante e de textura, que

são de acesso lento por serem de alta latência.

Os limites máximos para os elementos de memória ou threads são carac-

terísticos de cada GPU. Por exemplo, nas placas gráficas Nvidia modelo GeForce

8800 GTX ou GTS, estes elementos estão presentes com as seguintes limitações

mostradas na Tabela 4.

Quantidades Limites Máximos512 theads no máximo por bloco

65.535 como tamanho máximo da dimensão de um grid16/12 processadores de streaming @675/600 Mhz em GTX/GTS

768/640 MB de dispositivo de memória (GTX/GTS)16 KB memória compartilhada por multiprocessador em 16 bancos 64 KB memória para constantes

32 threads por Warp com 16 Warps por blocoTabela 5 Exemplo de limites superiores para GPU

Fonte: Tutorial da Nvidia em SISGRAPH 2007 [48]

A arquitetura CUDA foi concebida para ser fácil e leve. Portanto, as APIs

são escritas como extensões da linguagem C ANSI. Logo, tem uma baixa curva de

aprendizagem e, o projeto do hardware foi elaborado para alto desempenho com

leve intervenção de acionadores em tempo de execução.

75

CUDA possuem funções de alocação ou liberação de memória global do

dispositivo (GPU) como cudaMalloc () e cudaFree(), respectivamente bem como fun-

ções de transferência de dados do host para o dispositivo como cudaMemcpy().

Existem funções de declaração pré-fixadas e pós-fixadas por dois carac-

teres de sublinhado (underscore) “__”, como:

__device__ float DeviceFunc(), chamado e executado no dispositivo

__global__ void KernelFunc(), chamado no host e executado no dispositivo

__host__ float HostFunc(), chamado e executado no host

As funções que envolvem dispositivos do tipo (__device__) não podem ter

seus endereços dados e, para as funções executadas nos dispositivos: não há re-

cursividade. Não podem existir declarações estáticas no interior destas funções e o

número de argumentos deve ser fixo, ou seja, não pode ser variável na chamada

das destas funções.

Uma função Kernel deve ser chamada numa configuração de execução e

qualquer chamada a uma função Kernel é assíncrona a partir da versão CUDA 1.0, e

uma sincronização explícita é necessária para blocagem.

8.2 CONCLUSÃO SOBRE A ARQUITETURA CUDA EM GPU

A arquitetura CUDA visa habilitar o paralelismo na memória compartilhada

do chip da GPU, para maior eficiência do compartilhamento de dados inter-threads,

melhorando todo o legado das antigas limitações de hardware das GPUs da seguin-

te maneira: o acesso à memória para leitura ou gravação era feito em pixels, o que

tornava a programação menos flexível e, ao invés disso, tornar a programação mais

flexível, fornecendo um endereçamento genérico à memória DRAM permitindo a lei-

tura ou gravação de não mais apenas um e somente um pixel, ou seja, tornando

76

mais eficiente o uso da memória compartilhada da GPU, economizando assim a lar-

gura de banda de grandes memórias.

Memórias local e global residem num mesmo dispositivo de memória

(DRAM) muito mais lento do que a memória compartilhada.

Então, há uma maneira mais lucrativa de executar computação no dispo-

sitivo blocando os dados para se beneficiar da vantagem da maior velocidade da

memória compartilhada da seguinte forma:

Particionando os dados em subconjuntos de dados que se ajus-

tem na memória compartilhada.

Manipular cada subconjunto de dados com um único bloco de

thread tal que:

• O carregamento do subconjunto de dados da memória

global para a memória compartilhada, usando-se múlti-

plos threads para se explorar o paralelismo em nível de

memória;

• Efetuar a compilação do subconjunto na memória com-

partilhada, cada thread pode fluir eficientemente sobre

múltiplos conjuntos de dados; e

• Copiar os resultados da memória compartilhada para a

memória global.

As memórias de textura e constante também devem residir no dispositivo

de memória (DRAM) de acesso mais lento que a memória compartilhada, o que é al -

tamente eficiente para dados de leitura.

Cuidadosamente, os dados devem ser divididos conforme o padrão de

acesso descrito na Tabela 5.

Tipo de Acesso à Memória Tipo de Memória

77

Apenas Leitura, sem estrutura memória constanteApenas Leitura de arrays estruturados memória de texturaLeitura e Gravação compartilhada dentro de blocos memória compartilhadaLeitura e Gravação de registradores na memória local memória localLeitura e Gravação de entradas / resultados memória global

Tabela 6 Acesso á memória pelo tipo específico de memória

Fonte: Tutorial da Nvidia em SISGRAPH 2007 [48]

8.3 UMA IMPLEMENTAÇÃO CUDA NO HARDWARE G80

Uma nova série de GPUs da Nvidia, denominada G80, implementa por

hardware o modelo de programação acima descrito da seguinte forma:

i. O dispositivo tem um conjunto de 16 multiprocessadores;

ii. Cada multiprocessador tem um conjunto de 32 processadores

com arquitetura SIMD -- unidade de instrução compartilhada;

iii. A cada ciclo de clock, o multiprocessador executa a mesma ins-

trução num grupo de threads denominado warp;

iv. O número de threads num warp é o tamanho do warp.

8.4 IMPLEMENTAÇÃO DA ARQUITETURA DE MEMÓRIA - G80

Os espaços de memórias locais, globais, constantes e de texturas são re-

giões do dispositivo de memória. Cada multiprocessador tem:

o Um conjunto de registradores de 32 bits por processador.

78

o Uma memória compartilhada no chip, onde reside o espaço de memó-ria compartilhada.

o Um cache constante apenas para leitura para acelerar o espaço de memória constante.

o Um cache de textura apenas para leitura para acelerar o espaço de memória de textura.

8.5 SÍNTESE DO MODELO DE HARDWARE DA G80

Cada bloco de um grid é desdobrado em warps, que é executado em um

único multiprocessador (SM), e o dispositivo só processa um único grid por vez.

Cada bloco de threads é executado por um único multiprocessador tal que

o espaço de memória compartilhada reside no chip da memória compartilhada.

Um multiprocessador pode executar múltiplos blocos concorrentemente

sendo que as memórias compartilhadas e os registradores são particionados dentre

as threads de todos os blocos concorrentes tal que se diminui o uso da memória

compartilhada (por bloco) e aumenta-se o número de blocos que podem ser execu-

tados concorrentemente.

Em resumo, podemos afirmar:

• Uma GPU é um dispositivo ou conjunto de multiprocessadores.

• Um multiprocessador é um conjunto de processadores e memória

compartilhada.

79

• Um Kernel é um programa GPU ou programa que roda na GPU.

• Um grid é um array de blocos de threads que executam uma thread.

• Um bloco de thread é um grupo de threads SIMD que executam um

Kernel e podem comunicar-se via memória compartilhada.

• Os tipos de memória, sua localização em relação ao chip gráfico, seu

tipo de acesso e autorização podem ser identificados na Tabela 6.

Memória Localização Em cache Acesso Quem acessaLocal fora do chip Não Leituta/Gravação Uma thread

compartilhada fora do chip N/D – residente Leituta/Gravação Toda thread do blocoGlobal fora do chip Não Leituta/Gravação Toda thread + host

constante fora do chip Sim Só Leitura Toda thread + hostTextura fora do chip Sim Só Leitura Toda thread + host

Tabela 7 Característica de cada memória de uma moderna GPUFonte: Tutorial da Nvidia em SISGRAPH 2007 [48]

8.6 APIS PARA GPUS

A API para GPUs é uma extensão da linguagem C e consiste de:

• Extensões da linguagem C para porções de código que residem no

dispositivo; e,

• Uma biblioteca runtime, desdobrada em:

o Componentes comuns provendo tipos intrínsecos de vetor e

subconjuntos de bibliotecas runtime em C para ambos os códi-

gos, do host e do dispositivo.

80

o Um componente host para controlar ou acessar um ou mais

dispositivos do host.

o Um componente dispositivo provendo funções específicas do

dispositivo.

Existem qualificadores de tipos de variáveis (__device__, __local__,

__constante__, __shared__, etc) e variáveis automáticas que sem qualquer qualifi-

cador que residem nos registradores, exceto os vetores que residem em memória lo-

cal.

Existem restrições como, por exemplo, a dos ponteiros só poder apontar

para memória alocada ou declarada na memória global.

Os componentes comuns fornecem intrínsecos do tipo vetor e um subcon-

junto de bibliotecas runtime em C suportada tanto pelo código do host quanto do dis-

positivo.

Para as componentes comuns de runtime, as funções matemáticas como,

por exemplo: pow, sqrt, exp, log, sin, cos, ceil, floor, etc, quando executadas no host

se estiverem disponíveis, serão usadas e somente serão suportadas para tipos es-

calares e não vetoriais.

Para as componentes runtime de host, as funções fornecem uma maneira

de lidar com: gerenciamento de dispositivos (incluindo sistemas multi-dispositivos),

gerenciamento de memória e manipulação de erros. São inicializadas na primeira

vez em que são chamadas e uma thread de host pode invocar um código de disposi-

tivo para apenas um dispositivo, ou seja, múltiplas threads de host exigem execução

em múltiplos dispositivos.

Algumas funções matemáticas (sin(x), por exemplo) possuem menor pre-

cisão mas, para dispositivos mais rápidos, apenas uma versão (por exemplo,

__sin(x), __pow(x), __log(x), __exp(x), __cos(x), __tan(x), ...)

81

Também são disponibilizadas funções de sincronização para permitir a

disponibilização de sincronismo de todas as threads de um bloco. Por exemplo,

void __syncthreads();

Uma vez atingido este ponto, a execução prossegue normalmente. É mui-

to usado para evitar conflitos de memória compartilhada ou memória global. É permi-

tindo em construções condicionais apenas se for uniforme aplicação em todo o bloco

de threads.

8.7 COMPILAÇÃO EM CUDA

Qualquer arquivo fonte contendo extensões de CUDA, deve ser compilá-

vel com o produto da Nvidia para GPUs CUDA compatíveis, o denominado nvcc. O

nvcc é um acionador de compilador e trabalha invocando todos os compiladores e

ferramentas necessárias como cudacc, g++, cl, etc.

A saída do nvcc pode ser também um código C que então deve ser com-

pilado com o resto da aplicação usando-se outra ferramenta ou um código objeto di-

retamente.

8.8 LINK-EDIÇÂO EM CUDA

Qualquer executável com código em CUDA requer duas bibliotecas as di-

nâmicas a seguir:

cudart biblioteca runtime de CUDA

82

cuda biblioteca core de CUDA

8.9 DEPURAÇAO EM CUDA

A depuração em CUDA é, basicamente, realizada usando-se o modo de

emulação do dispositivo, que é obtido ativando-se o modo de emulação através da

palavra chave – deviceemu - quando da chamada do compilador nvcc (nvcc -devi-

ceemu) e nenhum dispositivo ou device driver de CUDA é necessário e cada thread

é emulada como uma thread de host.

Quando se executa no modo de emulação do dispositivo, pode-se:

Usar o suporte nativo de depuração do host (breakpoints, ins-

pection, etc).

Acessar qualquer dado de dispositivo específico do código do

host e vise-versa.

Chamar qualquer função do host a partir do código do dispositi-

vo (por exemplo, printf) e vice-versa.

Detectar situações de deadlock causadas pelo uso impróprio de

__syncthreads.

As threads de emulação de dispositivos são executadas seqüencialmente,

isto significa que acessos de mesmas posições de memória por múltiplos threads

podem produzir resultados diferentes.

A referência de ponteiros de dispositivos para hosts ou de ponteiros de

host para dispositivos podem produzir resultados corretos no modo de emulação do

dispositivo, mas gerarão um erro no modo de execução do dispositivo.

83

Resultados de operações de ponto flutuante podem ser ligeiramente dife-

rentes por causa das diferentes saídas dos compiladores, conjuntos de instruções e

uso de precisão estendida para resultados intermediários.

8.10 A NOVA ARQUITETURA DE DESENVOLVIMENTO EM GPUS

O fabricante AMD está propondo uma nova arquitetura para suas próprias

GPUs ou CPUs com alto poder de processamento gráfico e / ou de fins gerais que

ele denominou CTM (Close to The Metal) e pretendia lançar todo um pacote de de-

senvolvimento específico para esta arquitetura de mesmo nome. Mas, por razões de

racionalidade e custo, dado que o seu concorrente primeiro e mais relevante na

área, Nvidia, já possui a arquitetura CUDA bem estabelecida, difundida e de fácil im-

plementação, parece indicar, pelos últimos movimentos do jogo, até aqui, que eles

pretendem fazer de CUDA a arquitetura padrão para GPUs ou GPGPUs, que rodari-

am em plataformas de GPUs de distintos fabricantes como Nvidia, ATI (AMD), etc.

Nota: É significativa outra iniciativa da AMD, com outra de suas tecnologi-

as denominada “Torrenza”, que pretende licenciar o HyperTransport coe-

rente para terceiras-partes poderem fabricar sockets compatíveis com co-

processadores e aceleradores. Permitir também que terceiras-partes de

PPUs, GPUs e co-processadores possam acessar memórias de sistemas

de processamento principal diretamente e coerentemente. Isto poderia

permitir que modelos de aceleração de processamento pudessem ser de

mais fácil uso, tendo o processador CELL como exemplo onde os SPEs

não podem acessar a memória diretamente.

84

9 RUDIMENTOS DE SOFTWARE PARA CELL

O processador CELL suporta uma variedade de modelos de programa-

ção.

No modelo de extensão de dispositivo, um ou mais SPEs são fornecidos

como função de uma interface como dispositivo. A aplicação não cuida dos SPEs,

apenas os vê como um conjunto de capacidades, que noutros sistemas podem ser

fornecedores de processadores gráficos, processadores físicos, processadores de

imagem, processadores de áudio, codificadores, decodificadores, etc. Neste modelo

os SPEs não são acessados diretamente pela aplicação.

No modelo de função de alívio, os SPEs são usados para acelerar fun-

ções de computação intensiva. As funções são invocadas de uma maneira tipo RPC

por uma chamada de uma thread que executa no processador Power. Como a toda

thread de um SPE está associada uma thread do processador Power, os SPEs po-

dem retornar funções de chamada do sistema operacional que então servem a thre-

ad pelo PPE. Enquanto este modelo de programação forneça, talvez, a extensão

mais direta de programação de multi-threading de SMP, este é relativamente fácil de

sobrecarregar o processador Power (PPE). O conjunto de funções suportadas por

um ou por múltiplos SPEs também pode ser fornecido por uma biblioteca de tercei-

ros.

No modelo de aceleração computacional os SPEs atuam mais autonoma-

mente. As threads dos SPEs são escalonadas pelo sistema operacional muito mais

do que as threads do PPE, e os acessos de memória dos SPEs, sincronização e co-

municações (todos via DMA) por eles próprios. Neste modelo o PPE executa o siste-

ma operacional, e pode fornecer funções administrativas, e é ligeiramente envolvido

com manipulação de erros, mas as aplicações são executadas quase que exclusiva-

mente nos SPEs.

O modelo de programação streaming também é literalmente suportado no

processador CELL. Sendo a memória local mapeada, os dispositivos podem, se per-

85

mitido pelo sistema operacional, acessar diretamente via DMA a memória local. Este

mapeamento também permite à memória local mapear diretamente as transferênci-

as via DMA para a memória local sem ter que passar pela memória principal, man-

tendo a comunicação inteiramente no chip (caso a memória local da origem e do

destino estejam no mesmo chip). Portanto, um pipeline computacional com um ou

mais Kernels computacionais por SPE é literalmente suportado. Em geral, o balan-

ceamento de carga é um pouco mais difícil neste método do que no modelo de ace-

leração computacional, com passo adicional é colocado pelo SPE no pipeline com

um pouco mais de trabalho.

O ambiente de programação CELL é muito rico, fundamentado e bastante

complexo. É constituído por grande conjunto incorporado num pacote desenvolvi-

mento, que hoje se encontra na versão 3.1 e dele fazem parte: Kernel do sistema

operacional baseado no Fedora 7 e no Kernel de Linux, GNU Toolchain, GNU gdb,

compilador IBM XL C/C++ (e também o IBM XL Fortran para o PPE), bibliotecas

matemáticas específicas para CELL BE (SIMD e MASS), bibliotecas e utilitários para

suporte à performance, biblioteca de protótipos e exemplos e mais o ambiente de

desenvolvimento IBM Eclipse.

O ambiente de programação CELL também contempla uma vasta, e bem

escrita, documentação com manuais, artigos, trabalhos publicados, etc, que são de

enorme valia para todo aquele que gostar, se interessar ou necessitar de trabalhar

com o CELL. É Uma documentação magnífica e pública.

10 USO DE GPUS E DE CELL NO AMBIENTE HPC

Motivados pelo altíssimo custo de ambientes de computação de alto de-

sempenho (HPC), quando se consideram hardwares de CPUs em cluster interconec-

tados por switches em enormes e caras instalações, que requerem muita energia

86

para as centenas de processadores em racks e sua obrigatória refrigeração aliada

da baixa capacidade de adensamento destes processadores, o mercado internacio-

nal referente a este nicho (computação de alto desempenho) clama por soluções al-

ternativas mais economicamente viáveis, com maior otimização de recursos como

um todo e a custos mais acessíveis. Com estes argumentos, fabricantes de GPUs

como a Nvidia propõem soluções alternativas baseadas num conjunto variado de

suas GPUs interconectadas a workstations multicore de alto desempenho, permitin-

do, para algumas aplicações específicas, um ganho real de produtividade fundamen-

tado este na aceleração do desempenho das aplicações e numa significativa redu-

ção dos custos, principalmente com a desnecessária inserção de muitos nós de

computação baseados na arquitetura x86 da Intel ou AMD.

Outros visionários, para provas de conceito têm proposto e realizado tes-

tes de clusters de Sony PS3 com o processador CELL. Estas propostas são de bai-

xo custo, mas de baixíssima confiabilidade, pois os Sony PS3 não foram projetados

para ambientes hostis e não possuem a robustez necessária para suportar dias ou

até mesmo semanas de processamento intensivo. São ótimos como prova de con-

ceito, mas impraticáveis para a utilização em larga escala por motivos tecnológicos

de hardware e software. Entretanto, creio que devamos incentivar este modelo atra-

vés das universidades, centros de pesquisa, etc, devido ao seu baixo custo de inves-

timento e facilidade de aquisição, não necessitando, guardadas as devidas propor-

ções, de infra-estrutura dispendiosa e de difícil aquisição por razões burocráticas.

A partir do lançamento do Sony PlayStation 3 (PS3), como em suas

versões anteriores é largamente usado no mercado, instituições científicas, escolas

e universidades passaram a investir em ambientes de HPC baseados em processa-

dores CELL devido ao baixo custo (poucas centenas de dólares por PS3) e a com-

patibilidade do sistema operacional com o Linux (inicialmente o Yellow Dog e, poste-

riormente, o Fedora Core 6). Estes ambientes ficam fisicamente muito parecidos,

como mostrado na Figura 22, mas não possuem, por enquanto, a robustez, comuni-

cação, refrigeração própria e gerenciabilidade suficientes e necessárias para as exi -

gências de um ambiente de HPC, que necessita trabalhar horas a fio com 100% de

utilização do processador. Deve-se destacar que isto nada tem a ver com o proces-

sador CELL, mas sim com o uso indevido deste a partir de uma console de jogos

87

para outros trabalhos mais sérios. De qualquer forma, considerando-se o baixo in-

vestimento no ambiente, vale como prova de conceito e possibilidade de familiariza-

ção e testes ao vivo com o processador CELL, sem se necessitar dos pacotes de

emulação fornecidos pelo fabricante, IBM.

Figura 22: Cluster Linux de IBM CELL com Sony PS3

Fonte: Buscador Google, imagens [50]

Comercialmente, temos o lançamento das lâminas de processador IBM

CELL com dois CELL por lâmina ou blade (como dizem os americanos) exibidas na

Figura 23, e com todo o suporte e confiabilidade do fabricante, mas a preços atual-

mente proibitivos para se efetuar todo o investimento nesta tecnologia. Além disso,

devemos considerar, neste instante, que a dificuldade maior é o de programação

para CELL, que aliada ao custo inviabiliza qualquer movimento nesta direção imedi-

atamente. Mas, do ponto de vista meramente científico é uma enorme tentação: um

colírio para os reluzentes olhos das mentes que brilham.

88

Figura 23: Lâminas de CELL e IBM CELL Blade Center QS20

Fonte: Site do fabricante IBM, ww.ibm.com [8]

De nossa parte acreditamos que as três escolhas descritas nos parágra-

fos anteriores são excelentes (GPU +CPUs, CELL em PS2 ou blade CELL) e, a de-

pender da capacidade econômica, deve-se optar por quantas se puder pagar embo-

ra, neste momento, os preços sejam proibitivos para uma grande maioria de usuári-

os (da ordem de 10K dólares por blade), pois não temos certeza absoluta sobre qual

delas realmente vingará e será o paradigma de um futuro próximo. No entanto, não

devemos abandonar a solução de clusters do tipo beowulf devido ao lançamento das

recentes CPUs multicore com 2, 4, e futuramente mais e mais núcleos numa mesma

pastilha, pois a programação paralela para este ambiente é bem estabelecida, ma-

dura e fornece bons resultados do ponto de vista da relação custo-benefício, o ponto

negativo é a baixa densidade de nós computacionais por rack, o enorme consumo

de energia para operação e refrigeração do sistema como um todo e o alto custo em

infra-estrutura primordialmente.

Figura 24: Instalações típicas de clusteres Linux Beowolf

Fonte: Buscador Google, imagens [50]

89

A Figura 24 Ilustra fisicamente um ambiente de clusters de x86 convenci-

onal, também denominado Beowulf no mercado, constituído de nós de processa-

mento com um ou dois processadores físicos distintos e armazenados em gabinetes

de altura 1U (1.75 polegadas), empilhados em armários (racks) de 42U de altura

(por exemplo), e interconectados via rede através de switches de 1 Gigabit Ethernet,

em geral. Para troca de mensagens, normalmente usa-se o protocolo MPI (Messa-

ge Passing Interface). Uma solução do tipo Beowulf é considerada antiga e consu-

mista de energia, de espaço e de refrigeração mas funciona muito bem pelo custo

relativamente baixo ou adequável às necessidades e capacidade de investimentos

que se tenha, mas é de pouca confiabilidade, de fraca gerenciabilidade e baixa es-

calabilidade. Podem ser escalados milhares de nós num cluster beowulf, porém a

um custo total muito elevado e ineficiente, principalmente devido à infra-estrutura.

Existem muitas outras propostas de ambientes de computação de alto de-

sempenho. Dentre elas, a do IBM BlueGene/P merece destaque por ser a primeira a

demonstrar de fato a possibilidade de se poderem escalar centenas de milhares de

processadores para se obter respostas a um problema ou tarefa que deles necessi-

tem com desempenho que pode ultrapassar 1 PetaFLOPS (atingido até 3 Peta-

FLOPS sustentados, conforme garante o fabricante IBM).

11 UMA EXPERIÊNCIA PRÁTICA COM GPUS E CELL

Testamos e executamos todos os programas exemplos tanto em GPU

Nvídea Quadro FX 5600, compatível com a arquitetura de desenvolvimento CUDA

da própria Nvídia como, também, o mesmo foi feito com o CELL processor através

de um Sony PlayStation 3, PS3, com um PPE e seis SPE habilitados como são habi-

litados de fábrica para os PS3. O PlayStation 3 possuía 512 MB de RAM, disco Blue

Ray de 60 GB e demais componentes padrão. O sistema operacional instalado foi o

Fedora Core 5.0 com as instruções de instalação conforme o sítio da IBM para tal.

90

Para a placa gráfica Nvídia Quadro FX 5600 com 1.5 GB de GDDR3 con-

tamos com uma workstation Sun Ultra 40 M2 com dois processadores AMD Opteron

2218 com clock de 2.6 Ghz e memória RAM de 32 GB do tipo DDR2 667 Mhz sob o

sistema operacional Red Hat WS 3.0 Update 8 com monitor Sony de 20 com resolu-

ção máxima de 1920 x 1200 ou 1600 x 1200 (Figura 25).

Figura 25: Ambiente Teste: Sun + NV FX 5600 + cluster PS3 + switch Gig E

Fonte: Sites dos fabricantes Sun [25], Nvidia [9] e bucador Google [50]

Para as duas distintas plataformas, GPU e CELL, executamos todos os

programas exemplo de seus respectivos SDK (pacotes de desenvolvimento). Não ti-

vemos nenhum problema de instalação ou testes, mas as instalações foram efetua-

das com muito cuidado e todos os detalhes e pré-requisitos de todas as ordens, prin-

cipalmente bibliotecas diversas tanto matemáticas quanto gráficas, foram efetuadas

com sucesso. A documentação de instalação de todo o software para CELL em PS3

é muito boa e deve ser seguida a risca. Podemos encontrar alguns problemas no

que se refere ao dispositivo de saída como monitor, devido a necessidade de se tra-

balhar com monitor padrão simples. Isto não é obrigatório mas pode vir a causar pro-

blemas que tomam tempo na instalação inicial do Linux para CELL. As bibliotecas

gráficas também precisam ser atualizadas bem como os compiladores e depurado-

res CELL compatíveis. De um modo geral, podemos concluir que as informações for-

necidas pelo fabricante são suficientes para iniciados e não suficientes para novatos

em Linux e CELL.

91

Quanto a GPU Nvídia, foi muito mais fácil por a instalação é idêntica a de

uma placa gráfica comum num PC. Inicialmente, instala-se o sistema operacional

Linux Red Hat WS 3 Update 8 (pré-requisito da versão CUDA 1.0 testada). Após a

instalação física da placa e, se necessário, a atualização da BIOS da workstation

Sun Ultra 40 M2, é só instalar o device driver mais atualizado para a placa gráfica da

Nvídia CUDA compatível (no nosso caso Quadro FX 5600) e pronto, o sistema

GPU+CPU está disponível para utilização.

Os testes executaram perfeitamente e sem erros nas duas plataformas

testadas, GPU e CELL.

Para efeito de comparação, resolvemos testar: a multiplicação matricial, a

Fast Fourier Transform em três dimensões (FFT3D) e o programa de ordenação

(sort) denominado Bitonic Sort nas duas plataformas para compararmos os tempos

de execução em cada uma delas. Na verdade, desistimos dos testes, pois verifica-

mos que não concluiríamos absolutamente nada de novo em relação aos programas

já testados e com dados de resultado de domínio público, além de ter que inserir ro -

tinas de medição de tempo de processamento, pois as medições via comando de

mensuração de tempo de execução de comandos do Unix como time e timex não

possuem a precisão necessária para tal, ou sejam, produzem respostas em décimos

de segundo quanto os resultados dos cálculos referentes aos exemplos em GPU

Nvidia e IBM CELL são muito mais baixos, da ordem de milésimos de segundo ou

menores. Deveríamos, então encher os processadores de carga, mas acreditamos

mais uma vez que esta tarefa nada acrescentaria ao estudo.

Concluímos apenas que a funcionalidade, operacionalidade e

disponibilização tanto da GPU da Nvidia Quadro FX 5600 em Sun Ultra 40 M2 como

do processador IBM CELL internalizado num Sony PlayStation 3 são exeqüíveis e

relativamente de fácil implementação.

92

12 A COMPUTAÇÃO DE PETAFLOPS

Um dos desafios computacionais da humanidade, no século passado, foi

o de atingir o desempenho computacional de um PetaFLOPS, ou seja, obter cerca

de um quatrilhão de operações de ponto flutuante por segundo de maneira sustenta-

da. Este desafio foi encaminhado por vários centros de pesquisa e governos, exigin-

do vultuosos recursos e uma verdadeira corrida para atingi-lo ou ficar em evidência

momentaneamente devido à primeira colocação na corrida. Várias e várias tentati-

vas ambiciosas foram realizadas cada vez mais, de TeraFLOP em TeraFLOP, reve-

zando-se vários dos excelentes participantes. Os problemas eram, e são, gigantes-

cos: adensamento de processadores, alimentação elétrica, área física, refrigeração,

capacidade de processamento propriamente, programação, sistemas de arquivos,

I/O paralelo, dentre outros.

No ano 2002, os japoneses se posicionaram em primeiro lugar com o seu

Earth Simulator [51] com performance da ordem de 50 TeraFLOPS [52]: um marco pre-

servado por dois anos seguidos. Logo, por razões de cunho ideológico e necessida-

des científicas, os americanos resolveram contra-atacar e deram prosseguimento ao

já existente projeto em conjunto com o departamento de defesa americano, o LLNL [53] e a IBM para o projeto IBM BlueGene [54], que se propunha a uma escalabilidade,

que definiremos como a capacidade de se poder interconectar e processar em con-

junto uma quantidade significativa de processadores, nunca dantes obtida. Assim o

conseguiram com uma inovadora tecnologia altamente escalável de 4.096 a um mi-

lhão de processadores de baixo clock, mas podendo atingir até o tão sonhado 1 Pe-

taFLOPS, teoricamente. Como prova de conceito e realização, conseguiram e reto-

maram a primeira posição para os americanos em 2004 e a preservam até os dias

atuais com o seu BlueGene/L (o L é de Linux Affinity), que em sua nova geração de-

nomina-se BlueGene/P (o P é de PetaFLOPS) (Figura 26), que na realidade pode

93

atingir teoricamente até 3 PetaFLOPS [54]. O IBM BlueGene é uma arquitetura cienti-

ficamente interessantíssima mas não a contemplaremos no escopo da discussão

deste modesto trabalho.

Figura 26: IBM BlueGene/P

Fonte: site da IBM [54]

Área Aplicações de Petascale

Saúde, Ciências da Vida Novas drogas, pesquisa de órgãos, geno-ma.

Ambiente: Recursos Naturais, Análise de Terremotos

Assoreamento de rios, efeitos de mudan-ças climáticas ou qualidade do ar, agricul-tura, incêndios, águas e outros recursos.

Produção e conservação de EnergiaCombustão turbulenta, predição de efici-ência de combustíveis, mais eficiência nas células solares.

Nanociência

Desenvolvimento de novos materiais, se-micondutores mais velozes e com mais baixa potência, desenvolvimento de dro-gas, células de combustível, melhores screening de aeroportos.

PesquisaCompreender a formação do universo, matéria escura, Física Quântica, pesqui-sas de proteínas, etc, etc.

Tabela 8 Problemas desafiadores para pesquisa de

Fonte: MIT Course 6.189 IAP, 2007 [37]

Podemos dizer que a computação de PetaFLOPS é coisa do passado,

pelos menos nos moldes que se apresentou e que se realizou até hoje, ou seja, a

custos de centenas de milhões de dólares de investimento e necessidades de in-

94

fra-estrutura e manutenção de energia, refrigeração, etc. Mas, o importante é que a

humanidade conseguiu e continua a desenvolver-se em tal área. O problema funda-

mental foi deslocado no sentido de se obter não apenas o desempenho de

PetaFLOPS, mas este desempenho a custo muito mais econômico e viável como

um todo e com menores recursos energéticos e de infra-estrutura para tal.

A Tabela 7 mostra algumas das principais aplicações que necessitam da

computação de PetaFLOPS.

A tendência atual, que se apresenta nas informações públicas, é que a

computação de alto desempenho medida em TeraFLOPS se desloque para o desk-

top do usuário, isto é, esteja ao alcance de qualquer um indivíduo que dela necessite

sem precisar que se possua uma enorme riqueza para ter acesso a este recurso

computacional. Está tendência se configura através de GPUs ou CELL, por exemplo,

em conjunto com processadores multicore convencionais de arquitetura x86 a serem

disponibilizados como commodities para todos os usuários em futuro breve, como as

GPUs já o são e, de certa forma, os CELL também através do PS3.

Como consideramos a melhor proposta atual, vamos exemplificar com o

projeto do Laboratório Nacional de Los Alamos [55] nos Estados Unidos, para tipificar

nitidamente a tendência mais relevante deste início de século, ou seja, a computa-

ção de alto desempenho baseada numa arquitetura híbrida e mista, formada por pro-

cessadores multicores e CELL processor, isto é, uma computação paralela hetero-

gênea. Inicialmente, estima-se e vai-se trabalhar com esta tecnologia mista em pro-

cessadores distintos e fisicamente separados, mas em um mesmo rack ou Blade-

Center porém, o que se espera num futuro próximo é que estes possam ser acopla-

dos em uma mesma placa-mãe ou até mesmo numa mesma pastilha.

Não devemos subestimar a comprovada capacidade tecnológica, tenaci-

dade e disciplina dos japoneses, que prometeram retornam com propostas inovado-

ras após 2012 e já apresentaram o Grape DR na universidade de Tóquio (Greatly

Reduced Array of Processor Elements with Data Reduction) [30,57-59].

Bem, vamos detalhar alguns pontos cruciais do Projeto Roadrunner do

Labaratório de Los Alamos a seguir, e apresentamos seu logotipo na Figura 27.

95

Figura 27: Logo do projeto RoadRunner

Fonte: Los Alamos Lab [55]

Os dois objetivos principais do projeto Roadrunner [56] são:

o progresso científico na pesquisa de armas;

e, avanços arquiteturais em algoritmos e aplicações executados

com computação de PetaFLOPS.

Considerando a tendência de computação heterogênea e híbrida da com-

putação científica de alto desempenho, escolheu-se uma combinação de processa-

dores IBM CELL e AMD Dual Core interconectados com rede Infiniband para alcan-

çar os objetivos traçados para acelerar os algoritmos. Na verdade, arquiteturas hete-

rogêneas já foram tentadas e bem sucedidas anteriormente como IBM Deep Blue,

FPS Array Processor, vários supercomputadores FPGA, Tsubame, etc, mas este do

projeto Roadrunner atingirá o desempenho de PetaFLOPS [56]. O logo do projeto é

uma ave local muito rápida (Figura 27).

Existem duas formas de ataque para atingir o desempenho de

PetaFLOPS: a escalabilidade de processadores ou o aumento da velocidade de pro-

cessamento dos nós. O IBM BlueGene atacou a primeira mas Los Alamos pretende

atacar a segunda como pode ser visto na Figura 28.

96

Figura 28: Distintas abordagens e direções na busca do PetaFLOPS

Fonte: Los Alamos National Lab [55]

Na Figura 28, podemos verificar que o projeto Roadrunner é completa-

mente e filosoficamente ortogonal ao projeto IBM BlueGene. Esta ortogonalidade de-

ve-se ao fato de se tentar obter PetaFLOPS de desempenho não baseado na alta

escalabilidade do BlueGene de poder escalar centenas de milhares de processado-

res homogêneos de baixo clock (700 MHz) mas na iniciativa de tentar obter

PetaFLOPS com poucas dezenas de milhares de processadores heterogêneos de

alto clock (>= 3,2 Ghz) e alto desempenho desses processadores. Fundamental-

mente baseados em IBM CELL processor e servidores SUN dualcore quadprocessa-

dos, por enquanto. Isto quer dizer o mesmo desempenho a um custo mais baixo.

97

Figura 29 O processador CELL, peça fundamental do projeto RoadRunner.

Fonte: Los Alamos National Lab [55]

Da Figura 29, vemos que o CELL processor é primordial para os objetivos

do projeto Roadrunner. Partindo do CELL BE (1+8) de primeira geração com tecno-

logia de 90 nm SOI com performance da ordem de 15 GF/s em dupla precisão em

2006 e atingindo ~100 GF/s com sua primeira revisão CELL BE (1+8eDP) de 65

nm SOI até alcançar a notável marca ~1 TF/s Processor com tecnologia 45 nm SOI.

O roadmap do CELL indica significativas melhorias no processamento em

ponto flutuante de precisão simples e posteriormente dupla aliado a um aumento de

memória inicialmente para 2 GB e em seguida para 16 GB com comunicação em

PCI Express 16x. Tudo isso com o apoio da evolução dos pacotes de desenvolvi-

mento aguardada para as novas versões SDK 3 (atual) e SDK 4 (2008) [27].

98

O projeto consiste de três fases distintas [56]:

• Fase 1: Sistema Básico.

• Fase 2: Propotipação com CELL.

• Fase 3: Atingir o PetaFLOPS e demonstrar o novo paradig-ma de HPC.

Esquematicamente, mostramos na Figura 30 a proposta pós-fase 3:

Figura 30 Em apenas 18 racks , 7.000 CPUs e 13.000 CELLs : 1 PetaFLOPS

Fonte: Los Alamos Lab [55]

A programação do sistema como um todo, basear-se-á em três premissas

de paralelismo, conforme se demonstra em forma de diagrama na Figura 30.

99

1. MPI ainda sendo usado entre os nós e os nós internos aos multico-

re (AMD Opteron dual-core e CELL (1+8);

2. Alívio dos algoritmos computacionalmente intensivos de grande

granularidade para os CELL processors nos nós computacionais; e

3. Paralelismo de granularidade fina via threads nos próprios proces-

sadores CELL.

Figura 31 Arquiteturas distintas com duas CPUs físicas distintas

Fonte: Los Alamos Lab [55]

As Figuras 30 e 31 demarcam nitidamente a opção por uma arquitetura heterogê-

nea.

100

12.1 SISTEMAS DE COMPUTAÇÃO HÍBRIDA ESTÃO CHEGANDO

[ Já vimos esse filme antes: “Deja Vu” ]

Na atualidade as arquiteturas de computadores estão tendendo ao aco-

plamento de sistemas paralelos: combinando diferentes tecnologias de distintos fa-

bricantes e compondo sistemas não homogêneos. Por hora, estes sistemas hetero-

gêneos são formados por sistemas homogêneos fisicamente distintos como arquite-

turas x86, GPUs, Power 64 e outras mas num futuro próximo serão formadas por es-

tas ou outras que hão de vir numa mesma pastilha de maneira homogênea como os

multicore x86 ou mesmo heterogênea como os multicore tipo CELL (1 PPE + 8

SPE), como exemplificado na Figura 31.

HETEROGENEIDADE NO NÍVEL DO CHIP

No passado, como um seu corolário, a Lei de Moore forneceu os argu-

mentos para o aumento da densidade lógica nos chips. Os chips tornaram-se mais

potentes e mais capazes de operações de ponto flutuante (FLOPS), registradores,

caches, execução fora de ordem, operações pendentes de memória e as velocida-

des de processamento aumentaram devido à miniaturização dos componentes dos

chips.

No presente, a Lei de Moore ainda vigora, mas as velocidades dos clocks

atingiram um plateau (patamar estável), a complexidade do processador e o parale-

lismo em nível de instrução parecem ter alcançado um plateau também. Isto implica

que os processadores multicore agora deverão ser a norma e o padrão.

No futuro, existirão mais e mais dispositivos por chip (4, 8, 32, 64, 128, ...)

preservando-se ainda a Lei de Moore, conforme o ANEXO A descreve em detalhes.

101

Um grande número de dispositivos poderão levar a arrays ou agregados de disposi-

tivos interconectados, não apenas multicore, mas também múltiplas arquiteturas de

hierarquia de memória assim como dispositivos de fins especiais serão quase que

certamente adicionados, ou seja, definitivamente teremos a heterogeneidade no ní-

vel do chip.

HETEROGENEIDADE NO NÍVEL DO SISTEMA

Nós, provavelmente, já a estamos experimentando agora em nosso PC

desktot ou laptop com uma placa gráfica separada (CPU + GPU).

Dentre outras máquinas e dispositivos existentes podemos citar: Cray

XD1 (FPGA), SRC MapStation (FPGA). GPGPU (computação em placas gráficas,

cartões Clearspeed SIMD PCI, cartões FPGA PCI e chips IBM CELL BE).

Existem novas iniciativas para aceleradores em nível de nó como AMD

Torrenza (soquetes, HT & HTX no nível dos dispositivos), Intel/IBM Geneseo (dispo-

sitivos a nível de cartões PCI Express).

Novos sistemas HPC heterogêneos ou híbridos como LANL Roadrunner

(Opteron + CELL), Tokyo Institute of Technology TSUBAME (Opteron com cartões

Clearspeed) e TeraSpft (blades CELL).

A Figura 32 caracteriza claramente a heterogeneidade discutida neste pa-

rágrafo e aplicada no Projeto RoadRunner. Podemos observar processadores CELL,

que já são heterogêneos por si próprios e mais servidores de arquitetura x86_64

dualcore, formadas por CPUs AMD Opteron Dualcore.

102

Figura 32 Um exemplo marcante de heterogeneidade

Fonte: Los Alamos Lab [55]

Os aspectos similares entre a programação de sistemas, e / ou de dispo-

sitivos heterogêneos, e a programação atual são vários e podemos destacar os se-

guintes :

• A execução paralela é em threads ou via OpenMP (possivelmente,

apenas não ao nível de loop);

• Tratamento de unidades em recortes, filas de trabalho e blocos de

dados; com relação à comunicação e transferência de dados pre-

serva-se a superposição de comunicação e computação (apenas

103

sem amortização e operações de comunicação de dados via

send/recv/put/get,conforme o MPI);

• Operações vetoriais (SSE, Cray, dependências de dados); a Lei de

Amdahl [35] continua válida para speedup paralelo;

• A linguagem C continua a ser a pedra fundamental que funciona

como o denominador comum entre o atual e o novo;

• O código é decomposto em duas, três ou mais partes cooperativas

com diferentes funções de computação, coordenação,

upload/download, retardo de mensagens;

• O usuário terá visibilidade explícita de memória e transferência de

dados via DMAs e superposição de comunicação e computação,

além de memórias locais de tamanho limitado e restrições ao ali-

nhamento de dados; e

• Preocupações sobre a granularidade de parte do código devem ser

consideradas como Flops versus requisitos de largura de banda de

dados, blocos de código, rotinas inteiras e coleções de rotinas im-

plementadas em algoritmos, pacotes físicos integralmente comple-

tos; e, por último, necessárias conversões do tipo Big-Endian e Lit-

tle-Endian (CELL-Opteron, por exemplo).

12.2 “DEJA VU” (PARECE QUE A HISTÓRIA SE REPETE)

O legado do conhecimento em programação adquirido no passado pode

trazer algumas vantagens para o presente e o futuro. Como dizem os americanos

“Teach new dogs old tricks” (‘Ensinar velhos truques aos novos cachorrinhos’).

104

Muitas técnicas do passado, como as diagramadas na Figura 33, são se-

melhantes e aplicáveis às idéias de programação dos sistemas heterogêneos que se

vislumbram: processadores de periféricos do CDC 6600/7600 (10-way co-processa-

dores de I/O); hierarquia de memória explícita do CDC 660 ECS & 7600 LCM/SCM;

buferização do I/O fora do núcleo (superposição dos dados do núcleo); overlays de

FORTRAN (tamanho de imagens de programa); sistemas de processamento de ar-

ray de ponto flutuante (FPAPs); computador analógico-digital (programação híbrida);

JCL IBM e cartões DD.

Figura 33 O futuro imita o passado

Fonte: Los Alamos Lab [55]

105

13 TECNOLOGIAS ALTERNATIVAS A SUBSTITUIÇÃO DO CMOS

13.1 A EVOLUÇÃO DAS TECNOLOGIAS DOS TRANSISTORES

O transistor, inventado em 1948 nos laboratórios da Bell Telephone Com-

pany por Bardeen, Brattain e Schockley, sem patente registrada, foi uma das inven-

ções que mais influenciou a nossa maneira de viver. Posteriormente, este mérito foi

reconhecido e laureado com o prêmio Nobel de Física do ano de 1956 pela pesqui-

sas e descoberta do transistor. O advento da tecnologia do transistor bipolar, tornou-

se o elemento ideal para uma lógica binária liga-desliga (on-off) [57].

Em 1952, G.W.A. Drummer, observou que o circuito eletrônico poderia ter

dimensões menores se os seus componentes discretos: transistor, resistor e capaci-

tor estivessem no mesmo pedaço do semicondutor. É o que se passou a denominar

de circuito integrado. As idéias de Drummer só puderam se tornar realizáveis, devido

a problemas decorrentes de dificuldades técnicas, em 1959 graças a Jack Kilby da

Texas Instruments, também laureado com Nobel de Física em 2000 pela participa-

ção na invenção do circuito integrado.

A tecnologia de transistores bipolar passou a ser produzida em massa

nos anos 60 e, no começo desta mesma década, uma nova tecnologia de mais fácil

incorporação na produção dos chips, a tecnologia do transistor de efeito de campo,

MOSFET (Metal-Oxide-Semiconductor Field Effect Transistor), inventado por Steven

Hofstein e Frederic Heiman da empresa RCA (Radio Corporation of America).

À tecnologia MOSFET, incorporou-se uma novíssima tecnologia comple-

mentar, denominada CMOS (Complementary Metal-Oxide-Semiconductor) formada

por transistores MOSFET e portas CMOS, cuja principal vantagem seria o baixo con-

106

sumo de energia. E esta ulterior tecnologia CMOS, vigora e domina até os dias atu-

ais.

Como podemos observar que, os limites fundamentais associados às di-

mensões dos dispositivos criados a partir da tecnologia CMOS, já demonstram esgo-

tamento e estão próximos de seus limiares. A mínima energia para processar um bit

de informação, Ebit, opera a 0,017 eV e a uma temperatura T = 300 K, (~ 26,85 graus

Celsius - temperatura ambiente).

O grande desafio na engenharia da eletrônica digital é o desenvolvimento

de tecnologias até o limite-de-escala já discutido neste trabalho e que ainda detalha-

remos mais à frente. Dos vários problemas associados devido a miniaturização cada

vez maior dos transistores, ou seja, do maior adensamento de transistores por uni-

dade de área, que alcançará 850 milhões de transistores em pastilhas com áreas

menores do que 250 mm2, como no caso da processador IBM CELL em sua ter-

ceira geração, prometida para fins de 2010, conforme roadmap do processador

CELL esboçado na Figura 29, são :

1. dificuldades na dissipação do calor gerado nas operações.

2. instabilidades devido a efeitos quânticos de tunelamento de cargas, podendo

adquirir proporções incontroláveis.

3. dificuldades nos processos litográficos de fabricação.

4. custos financeiros para construção de novas fábricas, o que poderá aumentar

o processo de fabricação do transistor e não diminuir, como acontece atual-

mente.

107

13.2 LIMITES DE TRANSISTORES NA TECNOLOGIA MOSFET

Enfim, dentro do paradigma da atual arquitetura de microchips baseados

em tecnologia CMOS, os chips podem não mais evoluir e a Lei de Moore, talvez te-

nha que ser esquecida por causa dos limites-de-escala da Física e da obrigatória

quebra do paradigma da tecnologia CMOS.

Do ponto de vista formal da Mecânica Quântica, e pelo Princípio da Incer-

teza de Heisenberg, a distância mínima da porta é da ordem de 1,5 nm mas, antes

que possamos nos aproximar de 1,5 nm o tunelamento do elétron torna-se não des-

prezível já próximo a 5 nm e, para agravar o esgotamento da tecnologia CMOS, pró-

ximo de 5 nm a potência dissipada é aproximadamente 3,15 x 105 W/cm2. Apesar de,

nos últimos 30 anos, a microeletrônica avançar e conseguir aumento de ambos, ve-

locidade e densidade na escala dos dispositivos componentes (isto é, CMOS swit-

ch), esta tendência terminará bem antes de atingirmos a barreira de energia, pois

não seremos capazes de remover o calor,provocado pela dissipação de energia [29].

Embora o Princípio da Incerteza de Heisenberg exija profundos conheci-

mentos de Mecânica Quântica, os corolários dele decorrentes são de fácil demons-

tração. Senão, vejamos para demonstrar os dados do parágrafo anterior [29] :

∆x.∆p ≥ ћ

∆E.∆t ≥ ћ

xmin = ћ / ∆p

= ћ / √(2 me Ebit)

= ћ / √(2 me KB T ln 2)

= 1,5 nm ( T = 300 K, ~ 27 graus centígrados)

Mas, antes que estes limites físicos sejam atingidos, outros fatores como

dissipação térmica, por exemplo, já atuarão e restringirão a obtenção destes [28,32].

108

13.3 AS FUTURAS TECNOLOGIAS QUE SE APRESENTAM

Os cientistas estão buscando alternativas. A expectativa é que só se pos-

sa alcançar as limitações da tecnologia CMOS em aproximadamente 15 anos de de-

senvolvimento para que se obtenha tecnologia de fabricação próxima a 5 nm. Então,

quais são as alternativas disponíveis? Bem, as alternativas disponíveis e candidatas

a sucessão da tecnologia CMOS são [32]:

o Diodos Ressonantes de Tunelamento;

o Dispositivos de Tunelamento de um Único Elétron;

o Autômatos Celulares Quânticos;

o Nanoeletrônica Molecular; e

o Spintrônica.

Vamos, a seguir, descrever sucintamente cada uma dessas tecnologias

candidatas e emergentes para fins de trazer um pouco de luz às novas idéias.

1.1.1 TECNOLOGIA DE DIODOS RESSONANTES DE TUNELAMENTO

Esta abordagem consiste na supressão do tunelamento de um elétron

para uma ilha pelo carregamento da energia de um único elétron.

A principal vantagem seria a baixa potência e a alta densidade do dispositivo.

Mas como desvantagens, temos uma tecnologia imatura, dificuldades de fabricação,

109

lentidão inerente, problemas de conexões e, principalmente, baixas temperaturas (~

40 K).

1.1.2 AUTÔMATOS CELULARES QUÂNTICOS (QCA)

Este seria um novo paradigma de computação composto por arrays de

dispositivos quânticos e procedimentos computacionais. Procedimentos estes que

poderiam: gravar bits de entrada; permitir que arrays possam relaxar para o estado

fundamental dessas entradas; e poderiam ser feitas leituras de resultados de com-

putação pela sensibilização de estados de polarização.

Os dispositivos podem ser fios lineares, inversores, portas, e células de

memória.

As principais vantagens seriam: resolver o problema das conexões pelo

uso da Lei de Coulomb [11]; tornar possíveis elementos de computação de ultra-alta

densidade; e, obter dissipação de potência extremamente baixa.

As principais desvantagens são: uniformidade celular (a função de res-

posta da célula degrada significativamente se um ou três elétrons estiverem na célu-

la); deve ter o controle preciso dos pontos quânticos (variações nos tamanhos dos

pontos inibem a biestabilidade celular); e, temperaturas absolutamente baixas (~4

K).

1.1.3 NANOELETRÔNICA MOLECULAR

Baseada nos nanotubos de carbono, permite Switches/Diodos com dife-

rentes tamanhos e dopagem CNT para fazer junções PN; transistores, substituindo

110

canais por CNTs em CMOS. Como desvantagens têm: controle de quiralidade, As-

sembly e alto custo. A nanoeletrônica também poderia se basear na eletrônica de

uma única molécula com o rotaxane e benezethiol. A principal desvantagem seria

baixo reprodutibilidade e escalabilidade.

1.1.4 SPINTRÔNICA

Esta é a principal tecnologia candidata a superar as limitações fundamen-

tais do CMOS. É a mais bem posicionada. Sua denominação, Spintrônica, deve-se a

um neologismo para designar “eletrônica baseada em spin” e também é conhecida

como magnetoeletrônica. A eletrônica baseada em spin, ou seja, na propensão

quântica dos elétrons de girar (spin em inglês) assim como fazer uso do estado de

suas cargas [11], nasce com a descoberta do efeito magnetoresistivo gigante (GMR)

em 1988, pela equipe de Albert Fert, do Laboratório de Física dos Sólidos em Orsy

(CNRS, França). Esta tecnologia levou ao desenvolvimento e patente de cabeçotes

de leitura de discos pela IBM, em 1997 [57]. A memória baseada em spintrônica

(MRAM) avançou rapidamente e a computação baseada em spin está chegando.

A Spintrônica leva a vantagem de que o spin é eletricamente carregado

como o elétron e possui um estado de energia fracamente detectável caracterizado

como spin up (spin para cima) e sping down (spin para baixo); requer-se menos po-

tência para manipular spins do que cargas. Existem duas abordagens para uso do

spin: a magnetoresistividade e as correntes de spin polarizado em semicondutores

formados por materiais semimetálicos ou semicondutores magnéticos diluídos

(DMS).

Esses dois estados eletrônicos dos spins permitem uma extensão direta

da lógica binária, vastamente empregada nos computadores digitais. Exploram-se os

estados “spin up” e “spin down” com os assim chamados qubits ou bits quânticos

111

spintrônicos como superposições de 0 ou 1 intrinsecamente, então, um registrador

de dois qubits spintrônicos poderia ter até oito estados possíveis ao invés de quatro.

As principais vantagens da spintrônica são: a não volatilidade; o aumento

na velocidade de processamento de dados; a diminuição do consume de potência

elétrica; o aumento nas densidades de integração; a interface com tecnologia CMOS

existente e menores custos efetivos pois utiliza técnicas de processo semelhantes

as da atual tecnologia CMOS. Além disso, existem dispositivos em desenvolvimento,

tanto teóricos como práticos. Por exemplo: transistores de spin ou diodos de spin; al-

guns já demonstrados, como células de memória,MRAM (que logo, logo, será co-

mercializada). Sobre estas MRAMs podemos dizer que são memórias não-voláteis,

o que significa que preservam a informação após o desligamento da força de alimen-

tação, são 1.000 vezes mais rápidas na velocidade de gravação e sem perdas por

ciclo. Graças a Spintrônica foi possível reduzir, por exemplo, o tamanho dos discos

rígidos, porém aumentando-se a capacidade de armazenamento [32].

O parceiro fundamental da IBM na pesquisa de Spintrônica é a universi-

dade de Stanford e as pesquisas visam superar as barreiras de tunelamento e aque-

cimento, provenientes das limitações físicas da tecnologia CMOS. A spintrônica é a

tecnologia candidata mais bem posicionada para suceder a tecnologia CMOS [8,15].

112

14 CONCLUSÕES

As necessidades computacionais geraram mais e mais competição entre

os fabricantes de processadores para a fabricação de processadores monoproces-

sados com velocidades de processamento cada vez maiores. Corroborando a Lei de

Moore, e graças à tecnologia de fabricação envolvida, esses fabricantes puderam

adicionar mais e mais transistores equivalentes em diminutas áreas de pastilhas

cada vez menores, permitindo-se um adensamento superficial destes transistores

por processador e acelerando-se mais ainda a velocidade do clock ou freqüência do

chip até atingirem os limites impostos pela física.

O adensamento foi tão acelerado que as freqüências alcançadas já beira-

vam o patamar das reações nucleares atômicas, exigindo-se assim enormes quanti-

dades de energia de alimentação dos circuitos com também enormes necessidades

de refrigeração destes.

O aumento da freqüência de clock do processador por si só não é sufici-

ente para drásticas modificações no aumento do desempenho dos processadores

atuais e, muito menos, os do futuro. É dada a hora da quebra do paradigma da com-

putação atual e o já anunciado fim dos processadores monoprocessados. É chegada

a hora de saudarmos o multicore e nos despedirmos do singlecore.

Mais uma vez, graças ao desenvolvimento tecnológico dos processos de

fabricação de chips 90 nm, 65 nm, 45 nm, etc pode-se adensar mais ainda os tran-

sistores nos chips e resolveu-se inserir múltiplos núcleos numa mesma pastilha só

que com o requinte de freqüências mais baixas, ganhando-se assim mais capacida-

de de processamento com relativamente menor consumo de energia e necessidades

de refrigeração. Um novo paradigma se apresenta: a nova era dos processadores

multicores homogêneos.

113

Concomitantemente, tendo os antigos co-processadores aritméticos como

modelos e devido às gigantescas demandas por computação gráfica, motivadas

principalmente pela grande aceitação comercial do apelo aos jogos eletrônicos, fo-

ram desenvolvidos rapidamente dispositivos gráficos dedicados de altíssimo desem-

penho computacional em específicas aplicações gráficas e situados posteriormente

em dispositivos gráficos separado, ou seja, placas gráficas mais baratas que os pro-

cessadores, mas ainda, até aqui, dependentes destes para requisitar e disponibilizar

seu potencial computacional para os usuários que dele necessitem. Estes dispositi-

vos gráficos foram se tornando tão poderosos computacionalmente que seus disse-

minadores tencionam competir com os antigos processadores singlecore convencio-

nais de fins gerais em outros mercados comerciais, restritos a nichos como os de

alto desempenho (HPC) e mesmo os convencionais, tentando portar algumas aplica-

ções para este fim como as do mercado financeiro, por exemplo.

Ao que tudo indica, pelos atuais movimentos do mercado, sob os auspíci-

os das novíssimas tecnologias de 45 nm ou menores dimensões, os fabricantes

adensarão mais ainda os seus chips e poderão vir a internalizar muitas das funções

de uso gráfico específico nas próprias e recentíssimas CPUs multicore densas com

dezenas e, talvez, centenas de núcleos. Assim sendo, pode ser que os fabricantes

de processadores convencionais e de fins gerais contra-ataquem e venham a invadir

o nicho específico de mercado de jogos e computação gráfica ou da placas gráficas

como um todo.

Das tecnologias apresentadas, as GPUs possuem um enorme crescimen-

to imediato mas acreditamos, devido às suas dependências, que este crescimento

tenderá a se reduzir devido ao avanço do multicore e manycore e ao grau de capaci-

dade evolutiva dos fabricantes de processadores, repetindo-se assim o mesmo que

ocorreu com a inserção das funções dos co-processadores internalizadas diretamen-

te nos processadores de gerações mais atualizadas. Parece aparentemente óbvio.

Por mais que tentem e, de certa forma, talvez até blefem na tentativa de invasão do

mercado dominado pelas CPUs, as GPUs não consigam o seu intento e, quem

sabe, até despertem a defesa imediata dos fabricantes de CPUs e precipitem a com-

putação heterogênea em novas pastilhas destes fabricantes, que possuem tecnolo-

gia, capital e inteligência para tal.

114

Quanto à outra tecnologia desenvolvida pela parceria STI (SONY-TOSHI-

BA-IBM), realmente, terá um futuro muito mais promissor e duradouro dadas suas

características de fins gerais e de sua revolucionária tecnologia heterogênea e altís-

simo desempenho em várias aplicações tanto no que se especializa como multimí-

dia, computação paralela de fins gerais, processamento de imagens e tantas outras

já vistas aqui. O grau de dificuldade maior da tecnologia CELL é a sofisticadíssima e

necessária forma de desenvolver novas aplicações, que já devem ser feitas pensan-

do-se em paralelo e programando-se em paralelo. Muitas ferramentas de apoio já

estão sendo desenvolvidas e facilitaram sobremaneira esta facilidade de programa-

ção (programabilidade) destes novos dispositivos computacionais.

A programação paralela deve ser vista como o novo paradigma de progra-

mação em oposição frontal à programação seqüencial neste momento e nos mo-

mentos futuros, não como um saber restrito apenas a uns poucos que dela podem

usufruir, mas a todo e qualquer um que dela venha a necessitar de maneira acessí-

vel e a baixos custos.

A computação paralela heterogênea será obrigatória a todos por razões

de necessidade fundamental, pois toda a tecnologia de desenvolvimento de novos

softwares e aplicações terá necessariamente que ser executada nas atuais ou futu-

ras máquinas que serão integradas por processadores no mínimo multicores ou

manycores mais ou até mesmo mais complexos, como os sistemas paralelos hetero-

gêneos, compostos de tecnologias distintas que conviverão inicialmente talvez em

sistemas também heterogêneos situados em dispositivos físicos distintos, como

GPUs + CPUs, mas, posteriormente, quem sabe, poderão estar integrados na mes-

ma pastilha física.

Incentivar o ensino de programação paralela nas escolas e universidades

é primordial para as gerações futuras e deve ser encarado como uma diretriz educa-

cional, técnica e científica.

Acreditamos, por suas características, que o processador CELL dominará

principalmente no mercado de eletro-eletrônicos, pois está era a intenção primeira

de dois dos parceiros da STI, que possuem um enorme gabarito para tal e, devido

115

às potencialidades gerais e específicas do processador CELL, aliadas ao seu alto

poder de desempenho e bom grau de miniaturização com baixo consumo elétrico e

pequena necessidade de refrigeração, fará com que este possa vir a ser integrado

em muitos dos eletro-eletrônicos, que conhecemos e outros que passaremos a co-

nhecer. Como, por exemplo, podemos citar os novos televisores de HDTV, TV digital

de alta definição, propostos a serem lançados pela Toshiba em 2009.

A computação dita de um TeraFLOPS estará disponível para os usuários

através de desktops do tipo PC ou mesmo laptops ou notebooks por custos idênticos

ou menores do que os praticados pelo mercado atualmente.

Os ambientes de HPC poderão ser expandidos para aqueles que, por ra-

zões econômicas, como empresas, universidades, centros de pesquisa, governos

deles não possam desfrutar e para aqueles outros que puderem ou que já desfrutem

de ambientes próximos serão mais simples, mais baratos com desempenho de um

ou mais PetaFLOPS, permitindo-se assim um maior desenvolvimento científico de

todas as aplicações que delas se tornarem prescindíveis e que sejam mais nobres

como a genética, biologia, física ou química ou menos nobres como as da indústria

da guerra, das armas, do capital financeiro, sem nenhum juízo de valor a priori.

A computação paralela heterogênea definitivamente se posicionará e será

hegemônica. A tecnologia de processos de até 10 nm nos próximos dez anos no

máximo conforme prevêem os cientistas, provavelmente, permitira que tecnologias

distintas inicialmente convivessem num mesmo sistema heterogêneo, mas em dis-

positivos físicos distintos e posteriormente convirjam, graças ao alto grau de adensa-

mento de transistores num mesmo chip, numa mesma pastilha de silício com diminu-

tas dimensões, baixo consumo e altíssimo desempenho.

Como conseqüência direta da ascensão da computação paralela hetero-

gênea, teremos a queda da portabilidade com se apresenta nos dias atuais. Isto

quer dizer que os novos programas não serão necessariamente portáveis para estas

diferentes máquinas mesmo que, possivelmente, sejam escritos na pedra fundamen-

tal que os unirá, a linguagem C, por enquanto. Parece interessante e será, pois os

programas terão que ser escritos de modo análogo às linguagens de baixo nível tipo

116

Assembly, mas só que formatados em linguagem de alto nível, linguagens C e For-

tran, de modo que terão que passar por processos análogos aos de montagem dos

programas onde os compiladores C e Fortran, funcionando equivalentemente ao

montador Assembler, só compilando os programas e gerando executáveis juntamen-

te com suas bibliotecas para cada parte heterogênea do sistema como um todo, a

depender de sua participação no processo.

A grande vitoriosa desta revolução advirá com a computação paralela he-

terogênea que se anuncia será a humanidade como um todo, pois setores como a

indústria, a medicina, a biologia, a física, a química, a engenharia, a educação, a ci-

ência, os governos, e todos os indivíduos que direta ou indiretamente dependerem

desta tecnologia poderão dela tirar os seus benefícios, o que seria impensável nou-

tros tempos.

O processador CELL como o primeiro a incorporar, de uma maneira com-

pletamente revolucionária, esta tecnologia do processamento paralelo heterogêneo,

tem tudo para ser um sucesso tão grande quanto foi o da tecnologia RISC.

117

REFERÊNCIAS BIBLIOGRÁFICAS

1. BYTE MAGAZINE, August, 1981, IBM PC

2. Site http://pt.wikipedia.org/wiki/IBM_PC, acessado em 01/12/2007

3. IBM System p Family, Quick Reference – May 2007, page 2.

4. http://www.ibm.com/news/pt/pt/2007/05/Chip.html , acessado em 01/12/2007.

5. H.,-Y. MC CREARY, M. A BROYLES, M. S. FLOYD et ali, Energy Scale for

IBM Power6 microprocessor-based systems, IBM Journal of Research and Devel-

opment, IBM Power6 Microprocessor Technology, Vol 51, N. 6, 2007.

6. HSIAN-FEN TSAO, BRIAN PORTER,SAS Forecast Server Performance and

Sizing for AIX on IBM System p570 Server, IBM Corporation, August 2007.

7. Site http://www.intel.com, acessado em 30/11/2007.

8. Site http://www.ibm.com, acessado em 01/12/2007.

9. Site http://www.nvidia.com, acessado em 20/11/2007.

10.Site http://www.amd.com, acessado em 14/11/2007.

11.Site http://www.wikipedia.org, acessado em 03/11/2007.

12.Site http://www.gpgpu.org, acessado em 10/11/2007.

13.Site http://www.georgiatech.edu, acessado em 30/10/2007.

14.Site http://www.mit.edu, acessado em 16/10/2007.

15.Site http://www.stanford.edu, acessado em 23/10/2007.

16.Site http://www.lanl.gov, acessado 28/10/2007.

17.Site http://www.di.ufpe.br, Curso de Verão Java, acessado em 03/12/2007.

18.BRUNO CARDOSO, SÁVIO R. A S. ROSA, TIAGO M. FERNANDES, IC-UNI-

CAMP, RA (023241,025144,025313).

19.Site http://www.sony.com, acessado em 25/12/2007.

118

20.Site http://www.toshiba.com, acessado em 10/12/2007.

21.http://www.blachford.info/computer/Cell/Cell4_v2.html , The Revenge of RISC,

Cell Architecture Explained Version 2, Parte 4, acessado em 08/11/2007.

22.http://blogs.intel.com/brasildigital/2007/08/processadores_multicore ..., acessa-

do em 21/11/2007.

23.http://en.wikipedia.org/wiki/Locality_of_reference , acessado em 20/12/2007.

24.http://www.intel.com/portugues/pressroom/releases/2005/0418b.htm , acessa-

do em 01/11/2007.

25.http://www.sun.com , acessado em 29/11/2007.

26.http://www.sun.com/processors/UltraSPARC-T1/ , acessado em 29/11/2007.

27.http://www.research.ibm.com/cell , acessado em 01/09/2007.

28.Zhirnov, V.V.;Cavin, R.K., III; Hutchby, J.A.; Bourianoff, G.I.; Limits to binary

logic switch scaling – a gedanken model,Bourianoff, Proceedings of the IEEE,

Volume 91, Issue 11, Nov 2003 Pages(s): 1934-1939.

29.S. E. Thompson, Fall 2004, University of Florida, Fall 2004, Limits for

Si MOSFETs (continued)

30.http://techfreep.com/tokyo-u-touts-512-core-processor.htm , Tokio U Touts

512-Core Processor.

31.http://pt.wikipedia.org/wiki/Lei_de_Joule , acessado em 23/11/2007.

32.H. Lee, K. Mayes, D. Andrews, E. Althinoglu, J. Klug, R. Priestley, What´s

wrong with CMOS and what´s our alternative?, May 7, 2004, no site

http://mri63.adtech.icair.org.

33.http://en.wekipedia.org/wiki/Multicore , acessado em 20/11/2007.

34.Webinar da Intel, http://www.intel.com, Tim Mattson; James Reinders, Parallel computing has gone mainstream: Will be ready?, em 20 de março de 2007.

35.http://pt.wikipedia.org/wiki/Lei_de_Amdahl , acessado em 29/11/2007.

36.J. A Kahle et al, Introduction to the Cell multoprocessor, IBM J. Res. & Dev., Vol. 49, No. 45, July September 2005.

37. MIT Course 6.189 IAP, 2007, Prof Dr. Saman Amarasinghe and Prof Dr. Rodric Rabbah, Lectures 1-18, http://cag.csail.mit.edu/ps3/lectures.shtm , aces-sador em 01/10/2007.

38. Mike Houston – Stanford University, General-Purpose Computations on Graphics Hardware, Tutorial of SIGGRAPH 2007, August 2007.

119

39.http://www.cis.upenn.edu/~suvenkat/700/ , acessado em 20/11/2007.

40.http://graphics.stanford.edu/courses/cs448-07-spring/ , Course of Stanford Uni-versity – CS448-07-spring, Performance Analysis and Characterization – Real Time Graphics Architecture, Kurt Akeley and Pat Hanrahan.

41.Mike Houston – Stanford University, High Level Languages for GPUs, Tutorial of SIGGRAPH 2007, August 2007.

42.Justin Hensley – Stanford University, Close to The Metal, Tutorial of SIG-GRAPH 2007, August 2007.

43.http://www.blachford.info/computer/Cell/Cell1_v2.html , Inside the Cell, Cell Ar-chitecture Explained Version 2, Parte 4, acessado em 08/11/2007.

44.http://developer.apple.com/hardware/ve/summary.html , Apple (2004-09-27) Executive Summary.

45.http://www.blachford.info/computer/Cell/Cell3_v2.html , Programming the Cell, Cell Architecture Explained Version 2, Parte 4, acessado em 08/11/2007.

46.http://www.microsoft.com , acessado em 10/11/2007.

47.http://www.nintendo.com , acessado em 10/11/2007.

48.Mark Harris – Nvidea, Introduction to CUDA, Tutorial of SIGGRAPH 2007, August 2007.

49. J. D. Owens et al, “A Survey of General-Purpose Computation on Graphics Hardware.” In Eurographics 2005, State of the Art Reports, August 2005, pp. 21-51.

50.Dispositivo de busca Google, http://www.google.com, acessado em 04/12/2007.

51.http://www.es.jamstec.go.jp/index.en.html , acessado em 04/12/2007.

52.http://www.top500.org , acessado em 04/12/2007.

53.http://www.llnl.com , site do Lawrence Livermore National Laboratory, acessado em 21/11/2007.

54.http://www.research.ibm.com/bluegene , Projeto IBM BlueGene/P, acessador em 03/09/2007.

55.http://www.lanl.gov , Los Alamos National Laboratory, acessado em 30/11/2007.

120

56.http://www.lanl.gov/orgs/hpc/roadrunner/index.shtml , site do Projeto RoadRunner do Los Alamos Lab, acessado em 30/11/2007.

57.A. FAZZIO, Alguns Aspectos da Nanotecnologia Molecular, Instituto de Física, Universidade de São Paulo, São Paulo, SP.

58.http://grape-dr.adm.s.u-tokyo.ac.jp/system-en.html , acessado em 16/12/2007.

59.http://grape-dr.adm.s.u-tokyo.ac.jp/index-en.html , acessador em 16/12/2007.

60.http://www.hpcwire.com/hpc/1154214.html , acessado em 16/12/2007.

61.http://pt.wikipedia.org/wiki/Wafer_Eletrônica , acessado em 10/12/2007.

62. http:// pt.wikipedia.org/wiki/Fóton , acessado em 27/12/2007.

63. http:// pt.wikipedia.org/wiki/Efeito_Compton , acessado em 27/12/2007.

64. http:// pt.wikipedia.org/wiki/Princípio_da_incerteza_de_Heisenberg , acessado em 10/12/2007.

65.http://www.sindicato.com.br/contren/principi.htm , acessado em 10/12/2007.

66.http://www.mundoquimico.hpg.com.br , acessado em 10/12/2007.

67.http://ciencia.hsw.uol.com.br/quantum-suicidio1.htm ,acessado em 10/12/2007.

68.http://pt.wikipedia.org/wiki/Quanta , acessado em 27/12/2007.

121

ANEXOS

122

ANEXO A - LEI DE MOORE

Um dos grandes mitos da indústria de semicondutores e um dos fundado-

res da Intel, Gordon Moore (Figura 34), publicou um artigo na revista Eletronics Ma-

gazine, datado de 19 de abril de 1965 onde afirmava, naquela data, quinze anos an-

tes dos computadores pessoas, que com o ritmo de evolução tecnológica, seria pos-

sível duplicar o número de transistores numa área de silício a cada ano. A verifica-

ção de Moore foi observar que a dimensão linear do transistor se reduzia por um fa-

tor 1/√2 em cada nova tecnologia de fabricação. Conseqüentemente, a área diminui-

ria com um fator de 2 e, portanto, 2 vezes mais transistores seriam colocados em um

chip.

Devido ao aumento da complexidade na manufatura de chips, Moore rea-

justou esse período para dois anos em novo artigo publicado em 1975. Esta obser-

vação ficou popularmente conhecida como Lei de Moore e, atualmente o período foi

atualizado para 18 meses.

A Lei de Moore implica em interessantes corolários pois, com o aumento

de transistores é possível produzir processadores menores, mais velozes e até mais

baratos, devido ao aumento de produtividade dos wafers de silício. Por conseqüên-

cia, essa idéia levaria a uma dramática redução nos custos de fabricação. Isso foge

ao senso comum de que um produto mais novo e de melhor desempenho costuma

ser mais caro para ser produzido e não mais barato.

123

Figura 34 Tributo a Gordon Moore

Fonte: Site www.forumpcs.com.br, acessado em 30/11/07

Gráfico 1 Evolução do número de transistores nos microchips Intel no tempo

Fonte: Wikipedia, www.wikipedia.com, acessado em 30/11/07

124

No Gráfico 1, podemos observar a constatação da Lei de Moore, notando

que é válida ajustada para os processadores Intel a cerca de 40 anos, se considera-

do o período de 18 meses para que se tenha dobrado o número de transistores no

chip.

As previsões mais otimistas dão conta que a Lei de Moore será válida, tal-

vez, até o ano de 2020. Ocorre que, como ainda se pode observar do Gráfico 1, uma

das formas de se aumentar à capacidade de processamento é aumentando-se o nú-

mero de transistores dos microprocessadores, além de se aumentar a sua freqüên-

cia de operação, naturalmente. Mas, o que acontece é que quanto maior for o núme-

ro de transistores, maior a energia dissipada sob a forma de calor. Do ponto de vista

prático, como é sabido por todos que lidam na vida prática com processadores,

quanto maior a capacidade de processamento de uma CPU, mais ela esquenta e es-

quenta tanto que, se providências radicais não forem tomadas para reduzir a produ-

ção de calor e também dissipá-lo mais eficientemente para o meio ambiente ou a at-

mosfera, o circuito simplesmente derrete.

A explicação simples, advém da física elementar: a potência consumida

em um circuito é proporcional à resistência à passagem da corrente elétrica e direta-

mente proporcional ao quadrado da tensão aplicada (ou seja, P = V2. R). Então, dois

objetivos se apresentam para os fabricantes de processadores: diminuir a tensão de

alimentação (ou “voltagem”) e reduzir a resistência para aumentar a capacidade de

processamento dos processadores sem que estes derretam.

A redução de tensão é tecnicamente impraticável por dificuldades de or-

dem tecnológica, apesar de muitos fabricantes também trabalharem com famílias de

processadores de baixa voltagem (low voltage). Então, o único caminho tecnológico

a ser seguido é o da diminuição da resistência.

Sabemos da eletrônica básica e da física de semicondutores, que um

transistor é constituído de uma porção de silício (Si) à qual foram agregadas algu-

125

mas impurezas, especialmente o elemento químico germânio (Ge). Então, para se

fabricar um transistor é preciso produzir uma fina camada ou placa de cristal de silí-

cio puro e acrescentar pequenas porções do elemento germânio. A este processo fí-

sico-químico denominamos de dopagem do silício. E, como um circuito integrado

nada mais é do que uma combinação de um imenso número de transistores que,

para fabricá-los usa-se uma única camada de silício na qual se depositam microscó-

picas porções de germânio em determinados pontos numa placa que recebe o nome

de wafer. Depois, é só fazer as ligações elétricas e envasar o chip no encapsula-

mento. Esta é uma descrição didática e excessivamente simplificada.

A tecnologia de fabricação dos wafers também é muito relevante. Apenas

para efeito de esclarecimento, atualmente a dimensão dos wafers fabricados é da

ordem de 300 mm mas já existe tecnologia de fabricação para wafers de 450 mm

em estudo.

Objetivamente, dos argumentos acima, podemos concluir: quanto mais

fina a camada de silício usada como base do circuito, menor a resistência que ela

apresentará à passagem da corrente elétrica e, conseqüentemente, menor o calor

dissipado. Portanto, como o número de transistores e a freqüência de operação dos

modernos microprocessadores continuam crescendo, se aumentado a densidade de

transistores por unidade de área, em não se podendo baixar mais a tensão de ali -

mentação, só restou aos fabricantes continuar reduzindo a espessura da camada de

silício.

As espessuras das camadas de silício dos computadores pessoais dos

anos 80 eram da ordem de 1000 nm (um nanômetro é uma medida de comprimento

igual a um bilionésimo de metro, ou seja, 10-9 m) e hoje, são da ordem de 65 nm

(multicores Intel ou AMD, por exemplo), com perfectivas de 45 nm (novos multicore

Intel ou AMD, ou processadores IBM CELL, a serem lançados nos anos de 2009-

2010) [???].

Para concluir, verificamos que estamos nos aproximando de fenômenos

físicos que ocorrem com objetos de dimensões muito, muito pequenas, diminutas,

126

da ordem das dimensões de poucos átomos alinhados, poucos angstons (um angs-

tron é uma medida de comprimento da escala atômica, isto é, 1 A = 10-10 m) e está é

uma abordagem que só pode ser conduzida além de uma Física Clássica, Newtonia-

na, e apenas por uma Física Moderna, Física Quântica. Estes fenômenos que pas-

sam a ocorrer e limitar o paradigma vigente de tecnologia CMOS têm suas restrições

definidas e delimitadas pela Física Quântica e, possivelmente, como alegam os cien-

tistas que o estudam, poderá ser quebrado com a instauração de um novo paradig-

ma (ou tabú) com o imprescindível auxílio da própria Física Quântica. Isto é, as cau-

sas dos problemas decorrentes dos processos de fabricação da tecnologia CMOS

induzirão e permitiram tirar proveitos de outros fenômenos físicos descritos e estuda-

dos pela Mecânica Quântica, como movimento de spins de elétrons, etc. Para, pos-

sivelmente, obtermos novos paradigmas tecnológicos que permitam o avanço e o

progresso da Ciência. Em particular, em suas aplicações aos novos computadores

quânticos que se espera passem a existir daqui a uns 20 ou 30 anos, com prazos

otimistas.

127

ANEXO B - PRINCÍPIO DA INCERTEZA DE HEISENBERG

O princípio da incerteza de Heisenberg consiste num enunciado da mecâ-

nica quântica, formulado inicialmente em 1927 pelo físico alemão Werner Heisen-

berg, impondo restrições à precisão com que se podem efetuar medidas simultâne-

as de uma classe de pares de observáveis [64].

É possível medir com precisão, a posição de corpos grandes, como, por

exemplo, um automóvel. Por outro lado, Há que se considerar que o elétron é tão

pequeno, que se tentasse calcular sua posição e velocidade, os próprios instrumen-

tos de medida iriam influenciar as determinações [65]. Isso porque, para se estudar

uma partícula, é preciso interagir de alguma maneira com esta partícula. Nenhum

instrumento pode “sentir” ou “ver” um elétron sem influenciar intensamente o seu

movimento. Se, por exemplo, construíssemos um microscópio tão poderoso, capaz

de localizar um elétron, teríamos de usar uma radiação com comprimento de onda

muito menor que o da luz. (Para que um objeto diminuto possa ser visto num micros-

cópio, o comprimento de onda da luz utilizado deve ser menor que o diâmetro do ob-

jeto.) Esse super microscópio imaginário deveria, para isso, usar raios X ou raios γ .

Mas a energia destas radiações é tão grande que modificaria a velocidade e, conse-

qüentemente, o momento do elétron, numa quantidade grande e incerta. O princípio

da incerteza pode ser assim interpretado: quanto mais de perto tentarmos olhar uma

partícula diminuta, tanto mais difusa se torna a visão da mesma [66].

Um dos maiores problemas dos experimentos quânticos é a aparente-

mente inevitável tendência humana de influenciar o estado e a velocidade de peque-

nas partículas. Isto acontece até mesmo quando somente observamos as partículas,

frustrando os físicos quânticos. Para se combater isso, os físicos criaram máquinas

128

enormes e complexas, como os aceleradores de partículas, que removem qualquer

influência humana do processo de acelerar a energia de movimento de uma partícu-

la [67].

Ainda assim, os resultados variados que os físicos obtêm, quando exami-

nam a mesma partícula, indicam que não conseguimos evitar afetar o comportamen-

to dos quanta (plural de quantum, em latim [68]) – ou partículas quânticas. Até mesmo

a luz que os físicos utilizam para ver melhor os objetos que eles estão observando

pode influenciar o comportamento dos quanta. Os fótons, partículas elementares

mediadoras da força eletromagnética, por exemplo, mesmo sendo a menor medida

de luz, que não têm massa nem carga elétrica, ainda conseguem fazer uma partícu-

la se mexer, alterando sua velocidade e aceleração. Este é o chamado Princípio da

Incerteza de Heisenberg. Werner Heisenberg descobriu que as nossas observações

têm efeito sobre o comportamento dos quanta. O Princípio da Incerteza de Heisen-

berg parece difícil de entender – até mesmo o nome intimida. Mas na verdade é fácil

de compreender, e quando se consegue, entende-se o principal fundamento da

mecânica quântica.

É conveniente uma analogia para o entendimento do Princípio de Heisen-

berg. Imaginemos que somos cegos e com o tempo desenvolvemos uma percepção

técnica para dizer a que distância um objeto está, jogando uma bolinha de borracha

nele. Se a bolinha for jogada numa banqueta próxima, a bolinha volta rápido, e sabe-

remos o quão perto. Se a bolinha for jogada em alguma coisa do outro lado da rua,

vai levar mais tempo para ela voltar, e saberemos que o objeto está longe. O proble-

ma fundamental é quando a bolinha é jogada – principalmente uma bolinha de bor-

racha – em algum objeto, a bolinha vai jogar este objeto do outro lado da sala e

pode até mesmo ter impulso para bater de volta. Pode-se dizer onde o objeto esta-

va, mas não onde está agora. Tem mais: pode-se calcular a velocidade do objeto

depois que este foi atingido pela bolinha, mas não se tem idéia de qual era a sua ve-

locidade antes de a bolinha bater. Este é o problema revelado pelo Princípio da In-

certeza de Heisenberg. Para saber a velocidade de um quark (uma das partículas

quânticas) devemos medi-la, e para medi-la, somo forçados a afetá-la. A mesma coi-

sa acontece para a observação da posição de um objeto. A incerteza sobre a posi-

129

ção e velocidade de um objeto torna difícil para o físico descobrir muito sobre ele. É

claro que os físicos não jogam bolinhas de borracha nos quanta para medi-los, mas

mesmo a mais sutil interferência pode fazer com que estas partículas incrivelmente

pequenas se comportem de maneira diferente. È por isso que os físicos quânticos

são forçados a criar experimentos mentais baseados nas observações dos experi-

mentos reais para provar ou contestar interpretações – explicações para a teoria

quântica.

Formalmente, pode-se exprimir o Princípio da Incerteza nos seguintes ter-

mos:

O produto da incerteza associada ao valor de uma coordenada

xi e a incerteza associada ao seu correspondente momento linear pi não pode ser in-

ferior, em grandeza, à constante de Planck normalizada.

Em termos matemáticos, exprime-se assim:

ix∆ . ip∆ ≥ 2

onde é a constante de Planck (h) dividida por π2 .

A explicação disso é de fácil entendimento, e fala em favor da intuição,

embora o raciocínio clássico e os aspectos formais da análise matemática tenham

levado os cientistas a pensarem diferentemente por muito tempo.

Quando se quer encontrar a posição de um objeto qualquer, como elé-

tron, por exemplo, é necessário fazê-lo interagir com algum instrumento de medida,

direta ou indiretamente. Por exemplo, faz-se incidir sobre ele algum tipo de radiação.

Tanto faz que se considere a radiação do modo clássico – constituída por ondas ele-

tromagnéticas – ou do modo quântico – constituído por fótons. Se quer determinar a

posição do elétron, é necessário que a radiação tenha comprimento de onda da or-

dem da incerteza com que se quer determinar a posição.

130

Neste caso, quanto menor for o comprimento de onda (maior freqüência)

maior a precisão. Contudo, maior será a energia cedida pela radiação (onda ou fó-

ton) em virtude da relação de planck entre a energia e a freqüência da radiação:

ν.hE =

e o elétron sofrerá um recuo tanto maior quanto maior for essa energia, em virtude

do efeito Compton (Efeito Compton ou o Espalhamento de Compton, é a diminuição de

energia -- aumento de comprimento de onda -- de um fóton de raio-X ou de raio gama,

quando ele interage com a matéria [62]). Como conseqüência, a velocidade sofrerá uma

alteração não de todo previsível, ao contrário do que afirma a mecânica clássica.

Argumentos análogos poderiam ser usados para se demonstrar que ao se

medir a velocidade com precisão, alterar-se-ia a posição de modo não totalmente

previsível.

Resumidamente, pode-se dizer que tudo se passa de forma que quanto

mais precisamente se medir uma grandeza, forçosamente mais será imprecisa a

medida da grandeza correspondente, chamada de canonicamente conjugada.

Natureza da medida em mecânica quântica

Como se pode depreender da argumentação anterior, a natureza de uma

medida sofre sérias reformulações no contexto da mecânica quântica. De fato, na

mecânica quântica uma propriedade leva o nome de observável, pois não existem

propriedades inobserváveis nesse contexto. Para a determinação de um observável,

é necessário que se tenha a preparação conveniente do aparato de medida, a fim de

que se possa obter uma coleção de valores de ensemble de entes do sistema. Se

131

não puder montar, ao menos teoricamente (em um Gedankenexperiment) uma pre-

paração que possa medir tal grandeza (observável), então é impossível determiná-la

naquelas condições do experimento.

Uma comparação tornará mais clara esta noção. No experimento de difra-

ção da dupla fenda, um feixe de elétrons atravessando uma fenda atinge mais adi-

ante duas outras fendas paralelas traçadas numa parede opaca. Do lado oposto da

parede opaca, a luz, atravessando as fendas simultaneamente, atinge o anteparo.

Se puser sobre este um filme fotográfico, obtém-se pela revelação do filme um pa-

drão de interferência de zonas claras e escuras. Este resultado indica uma natureza

ondulatória dos elétrons, resultado esse que motivou o desenvolvimento da mecâni-

ca quântica.

Entretanto, pode-se objetar e afirmar-se que a natureza dos elétrons seja

corpuscular, ou seja, composta de fótons. Pode-se então perguntar por qual fenda o

elétron atravessou para alcançar o anteparo. Para determinar isso, pode-se pôr,junto

a cada fenda, uma pequena fonte luminosa que, ao menos em princípio.pode indicar

a passagem dos elétrons por tal ou qual fenda. Entretanto, ao fazê-lo, o resultado do

experimento é radicalmente mudado. A figura de interferência, antes presente, agora

dá lugar a uma distribuição gaussiana bimodal de somente duas zonas claras em

meio a uma zona escura, e cujos máximos se situam em frente às fendas. Isto acon-

tece porque as naturezas ondulatória e corpuscular do elétron não podem ser simul-

taneamente determinadas. A tentativa de determinar uma inviabiliza a determinação

da outra. Essa constatação da dupla natureza da matéria (e da luz) leva o nome de

princípio da complementaridade.

Essa analogia serve para mostrar como o mundo micro físico tem aspec-

tos que diferem significativamente do que indica o senso comum.

Para se entender perfeitamente o alcance e o real significado do princípio

da incerteza, é necessário que se distingam três tipos reconhecidos de propriedades

dinâmicas em mecânica quântica:

132

• Propriedades compatíveis: são aquelas para as quais a medida si-

multânea e arbitráriamente precisam de seus valores não sofre ne-

nhum tipo de restrição básica. Exemplo: a medição simultânea das co-

ordenadas x, y, z de uma partícula. A medição simultânea dos momen-

tos px, py, pz de uma partícula.

• Propriedades mutuamente excludentes:são aquelas as quais a medida

simultânea é simplesmente impossível. Exemplo: se um elétron está

numa posição xi, não pode estar simultaneamente na posição diferente

xj.

• Propriedades incompatíveis: são aquelas correspondentes a grande-

zas canonicamente conjugadas, ou seja, aquelas cujas medidas não

podem ser simultaneamente medidas com precisão arbitrária. Em ou-

tras palavras, são grandezas cujas medidas simultâneas não podem

ser levadas a cabo em um conjunto de subsistemas identicamente pre-

parados (ensemble) para este fim, porque tal preparo não pode ser re-

alizado. Exemplo: as coordenadas x, y, z e seus correspondentes

momentos px, py, pz, respectivamente. As coordenadas angulares iθ e

os seus correspondentes momentos angulares Ji.

Observáveis e Operadores

No formalismo matemático da mecânica quântica, os observáveis são re-

presentados por operadores matemáticos sobre o espaço de Hilbert (matemático

alemão). Esses operadores podem ser construídos a partir de seus equivalentes

clássicos.

No formalismo de Heisenberg, as relações de incerteza podem ser dadas

na forma de um operador comutador, que opera sobre dois outros operadores quais-

quer:

BAABBA −≡],[

133

onde A e B são operadores quaisquer.

No caso das relações de incerteza:

Ι= kllk iBX δ],[

Dirac, físico e matemático francês, notou a semelhança formal entre o co-

mutador e os parênteses de Poisson, outro matemático e físico francês. Sabedor da

equivalência usado pelo físico austríaco Schrödinger, quando este postulou a forma

da equação de onda. Dirac, postulou as seguintes equivalências, que valem como

receita para se acharem os operadores quânticos correspondentes a grandezas

clássicas:

coordenada xk → operador Xk

momento pl → operador kx

i∂

∂⋅

},{ lk px → ],[1lk PX

i⋅

A descrição dos objetos microscópicos tem conseqüências teóricas impor-

tantes, como o princípio da incerteza de Heisenberg. O fato de os objetos microscó-

picos, em muitas situações, terem uma localização no espaço mesmo que aproxima-

da, implica que não podem ser descritos por uma onda com um só comprimento de

onda (onda plana), pois esta ocuparia todo o espaço. É necessária uma superposi-

ção de comprimentos de ondas diferentes para se obter um “pacote” de ondas mais

bem localizado e que represente o objeto microscópico.

134