Você está na página 1de 6

1

Processadores Para o Prximo Milnio


Postulados de Von Neumann Von Neumann, que trabalhou no desenvolvimento do ENIAC e posteriormente empregou sua experincia no projeto do IAS (1952), elaborou as idias e os conceitos que nortearam a arquitetura dos computadores at os dias de hoje. Seu entendimento essencial para apreciarmos a atual evoluo dos computadores. Iniciemos constatando, de forma bvia, que as mquinas que usamos nas nossas casas possuem quatro elementos bsicos: a CPU, a memria, os dados e as instrues (ou programas). A partir da, apresentamos os trs postulados bsicos de Von Neumann, que no momento podem parecer triviais, mas que no o eram na dcada de 50: 1. Um nico controle centralizado (uma s CPU); 2. Uma nica memria para dados e instrues; e 3. As instrues devem fazer operaes elementares sobre os dados. Cerca de 90% dos computadores atuais usam esses postulados e por isso so chamados de Arquitetura de Von Neumann, ou Arquitetura Serial, pois empregam um nico processador. Essa arquitetura, aliada aos avanos da microeletrnica, ofertou-nos o atual mercado de computadores, rpidos e baratos. Porm, tal arquitetura enfrenta um limite de velocidade que ditado pelas leis da fsica. O tempo que um sinal eltrico gasta para trafegar entre dois pontos de um circuito eletrnico muito pequeno, porm no igual a zero. Em outras palavras, isto corresponde a dizer que existe um limite para a velocidade de relgio das CPU's e, infelizmente, ele no est muito distante. Como ento continuar com a evoluo dos computadores? Essa a pergunta que tem ocupado a cabea de muitos pesquisadores e desde a segunda metade desta dcada, vrias solues foram propostas. A principal resposta vem da comparao entre nosso crebro e um processador. sabido que o sinal eltrico trafegando por dentro de um CI muito mais veloz que o trnsito de impulsos nervosos entre nossos neurnios. claro que, para fazer operaes numricas, comparar e classificar, o computador mais rpido. Mas, por outro lado, ele inferior, pois no pensa, no inova e no aprende, apenas segue passos programados. Por exemplo, com um nico olhar em uma sala identificamos imediatamente centenas de objetos. J um computador, mesmo o mais sofisticado, apenas consegue identificar os objetos mais simples. Somos capazes de dirigir um carro e enquanto andamos por nossas (terrveis) estradas, temos habilidade para escolher o melhor caminho. Ser que um computador pode dirigir um carro? Uma das experincias no MIT com um piloto computadorizado, que identificava a rua atravs das linhas paralelas do meio fio, revelou um grande escalador de rvores, pois ele confundia o contorno do meio fio com o contorno do caule das rvores. Como ser que o crebro consegue ser superior aos processadores, se o nosso neurnio muito mais lento que um circuito eletrnico? A resposta bvia: porque temos vrios

bilhes de neurnios operando em paralelo. Ora, por que, ao invs de construirmos CPU's velozes e gigantescas, no usamos vrias CPU's, simples e confiveis, operando em paralelo? Chegamos assim idia bsica do processamento paralelo, que a esperana para o prximo milnio.

Processamento Paralelo Sabemos ento que devemos usar uma grande quantidade de processadores, mas como control-los de forma a que faam alguma coisa de til? Existem grandes problemas! Para iniciar, vamos trabalhar o conceito de processamento paralelo atravs de um exemplo bem simples. Se um pedreiro constri uma casa em um ano, ento dois pedreiros constroem a mesma casa em meio ano. Este conceito bsico do processamento paralelo: a diviso das tarefas. Podemos seguir adiante e concluir que cem pedreiros gastam apenas 3,6 dias. Ser isto um absurdo? claro que h um limite, pois o trabalho dos pedreiros s ser eficiente se estiverem perfeitamente sincronizados e equilibrados. Este ponto importante: todos os pedreiros devem ter a mesma carga de trabalho. Em termos tcnicos, usa-se a expresso Balanceamento da Carga de Trabalho. Esse balanceamento pode ser feito de dois modos. No primeiro modo, o trabalho de cada pedreiro idntico, ou seja, cada um faz 1/100 da casa. No outro modo usada a especializao, ou seja, alguns pedreiros viram cimento enquanto outros assentam tijolos e outros tratam do encanamento, e assim por diante. Ao imaginarmos todas as tarefas que devam ser executadas para a construo da casa, fica claro que algumas delas no podero ser paralelizadas. Imagine 100 pedreiros para colocar uma porta, ou 100 pedreiros em cima da casa tentando montar o telhado. A casa acabaria por cair! Alm disso, deve haver um limite para a quantidade de pedreiros que podem trabalhar em paralelo. A partir deste limite, quanto mais pedreiros colocarmos, pioramos o desempenho e em conseqncia, aumentamos o tempo de construo. Temos ento dois grandes problemas: at quanto podemos paralelizar uma tarefa e at quantos processadores devem ser alocados? A partir da, surgem outras questes: como sincronizar esses processadores de forma a que um no repita o trabalho do outro e como garantir o balanceamento da carga de trabalho? Agora temos condies de entender porque se diz que as dificuldades presentes no projeto do hardware de mquinas paralelas no so to complexas quando comparados com os problemas de sua programao. Diz-se que os computadores esto sempre uma gerao atrasada em relao s nossas necessidades e os programas, duas geraes atrasadas. Em suma, um desafio maior que o projeto de supercomputadores a sua programao. Classificao de Computadores Paralelos muito difcil a tarefa de classificar computadores paralelos. J foram feitas diversas sugestes. A classificao definitiva ainda est por vir. Porm, a que trouxe melhores resultados e ainda hoje usada, a proposta por Flynn. Essa classificao est baseada em dois conceitos: fluxo de instrues e fluxo de dados. O fluxo de instrues est relacionado com o programa que o processador executa, enquanto que o fluxo de dados est relacionado com os operandos manipulados por essas

instrues. O fluxo de instrues e o fluxo de dados so considerados independentes e por isso existem quatro combinaes possveis.

SISD - Instruo nica, Dado nico (Single Instruction Single Data) Essa arquitetura usada nos computadores que temos em casa. Segue o proposto por Von Neumann e por isso denominada de Arquitetura de Von Neumann, tambm chamado de computador serial. Temos um nico fluxo de instrues (SI), caracterizado pelo contador de programa da CPU, que opera sobre um nico dado (SD) por vez. SIMD - nica Instruo, Mltiplos Dados (Single Instruction Multiple Data) De incio esta arquitetura paralela pode parecer estranha, mas como ser constatado adiante, ela no s conhecida, como tambm j foi muito utilizada. Um grande exemplo desta arquitetura so os computadores Cray. Outro exemplo o conjunto de instrues MMX. Eles so muito usados quando um mesmo programa deve ser executado sobre uma grande massa de dados, como o caso de prospeco de petrleo. Note que essa arquitetura no sofre com problemas de sincronizao, pois existe um nico programa em execuo. MISD - Mltiplas Instrues, Dado nico (Multiple Instruction Single Data) Essa arquitetura um pouco mais difcil de ser explicada. Tentemos imaginar como que se pode fazer mltiplas operaes (MI) sobre um mesmo dado (SD). Os prprios pesquisadores tm opinies divergentes sobre esse assunto. MIMD - Mltiplas Instrues, Mltiplos Dados (Multiple Instruction Multiple Data) Essa a arquitetura que esperaramos encontrar em um computador paralelo. Temos vrios dados (MD) sendo operados por vrias instrues (MI), simultaneamente. Essa a arquitetura mais usada pelos modernos supercomputadores. Nesse caso, importante que os processadores possam se comunicar entre si para fazer a sincronizao e trocar informaes. Alm disso, necessrio ter uma memria, chamada de global, onde todos processadores possam disponibilizar, para os demais, os resultados intermedirios. Para evitar uma quantidade excessiva de acessos a essa memria, os processadores possuem a chamada memria local, onde est a maioria das suas instrues e dos dados que devam ser operados. Essa memria local evita que a estrutura de comunicao se transforme num enorme gargalo. Os processadores precisam trocar informaes e, no caso desta figura, a prpria estrutura de comunicao se encarrega desta tarefa. Agora sim necessria a genialidade dos programadores, pois como conseguir que uma estrutura deste tipo, imagine 1.024 processadores, trabalhe de forma sincronizada para gerar algum resultado? Se j difcil escrever e depurar programas seriais, imagine fazer isso em um computador com 1.024 diferentes programas trabalhando sobre 1.024 dados diferentes.

Ganho de Velocidade Como medir o quanto se ganhou com a execuo de uma tarefa em um computador paralelo? intuitivo que devemos usar o tempo de execuo para medir esse desempenho, j que nosso principal objetivo aumentar a velocidade de processamento. Uma soluo boa verificarmos a relao entre os tempos gastos para executar essa tarefa em um computador serial e em um computador paralelo. A expresso a seguir usada para o clculo do Ganho de Velocidade, que abreviado pela sigla GV. Por exemplo, uma determinada tarefa, quando executada em um computador convencional consome 200 s e quando executada em uma mquina paralela (24 processadores) consome 10 s, ento o ganho de velocidade GV = 200/10 = 20. Gostaramos que o Ganho de Velocidade fosse igual quantidade de Elementos de Processamento (EP) empregados, mas isso raro de acontecer, pois quando se escreve um programa para rodar em mquinas paralelas, invariavelmente se necessita colocar trechos extras (de programa) para sincronizao dos diversos EP e troca de informaes. Esses trechos extras recebem o nome de custo de paralelizao. Dependendo da tarefa a ser executada, pode haver uma necessidade de sincronizao e troca informaes to grande que venha a inviabilizar o processamento paralelo. Lei de Amdhal Apesar do quanto promissor a computao paralela possa parecer, ela no uma soluo para todo o problema de processamento. Existem tarefas que so eminentemente seqenciais e que, por isso, no tiram proveito de um computador paralelo. Voltando ao nosso exemplo da construo de uma casa, apesar dela ser executada em paralelo, existe por detrs uma seqncia que deve ser obedecida. Nessa construo, no podemos fazer o telhado antes de termos as paredes prontas e tambm no podemos construir as paredes antes do alicerce. Assim, comum que as tarefas a serem executadas possuam pores paralelizveis e pores que precisam ser executadas de forma seqencial. Note que um computador paralelo operando de forma seqencial um grande desperdcio, pois enquanto um processador trabalha no trecho serial, todos os demais ficam ociosos.

Você também pode gostar