Você está na página 1de 38

Captulo

2
Fundamentos das Arquiteturas para Processamento Paralelo e Distribudo
Philippe O. A. Navaux, Csar A. F. De Rose, Larcio L. Pilla
1. Introduo
Desde os primrdios da era da computao, j em trabalhos de Von Neumann (1945), as Arquiteturas Paralelas foram apresentadas como formas de obter uma maior capacidade de processamento para execuo de tarefas com altas cargas de processamento. Esse aumento na capacidade de processamento dos computadores s podia ser obtido atravs de processadores mais velozes ou atravs do aumento do nmero de processadores empregados em conjunto. Nos anos de 50 e 60, as tecnologias de fabricao de mquinas monoprocessadoras eram suficientes para atender demanda de processamento daquela poca. A partir dos anos 70, as necessidades crescentes de capacidade de processamento no eram mais atendidas pelas evolues na tecnologia dos monoprocessadores, tornando-se necessria a utilizao de tcnicas de concorrncia para alcanar o desempenho requerido. Como o aumento da velocidade dos processadores esbarrava no custo e no limite da capacidade tecnolgica para obteno de circuitos rpidos, a soluo tendeu para o emprego de vrios processadores trabalhando em conjunto na obteno de uma maior capacidade de processamento. quando surge o termo Processamento Paralelo para designar tcnicas diferentes de concorrncia que atendem a essas necessidades. O desenvolvimento da rea de Processamento Paralelo levou ao aproveitamento destas tcnicas no projeto de chips de processadores, microprocessadores, e tambm em mquinas especializadas em realizar grandes quantidades de operaes por segundo, conhecidas como Supercomputadores. Estas ltimas proporcionaram um maior desempenho na resoluo de problemas, sendo, por isso, essa rea conhecida tambm como Processamento de Alto Desempenho - PAD (em ingls, High Performance Computing - HPC). 1.1. Arquitetura de Processadores com Paralelismo Chips Uma das reas de aplicao das tcnicas de paralelismo no projeto da arquitetura do(s) processador(es) dentro dos chips.
ERAD 2011 22-25 de maro de 2011 ISBN 2177-0085

Philippe O. A. Navaux (Universidade Federal do Rio Grande do Sul), Csar A. F. De Rose (PUCRS), Larcio L. Pilla (Universidade Federal do Rio Grande do Sul) 23

A evoluo na integrao de uma maior quantidade de transistores num chip, chegando a bilhes de transistores, permitiu que gradativamente fossem projetadas arquiteturas de processadores com mais unidades funcionais, mais memrias caches e maiores facilidades de barramentos e registradores. Aconteceu uma migrao/ miniaturizao das arquiteturas de mquinas para dentro dos chips. Nas prximas sees ser apresentada a evoluo que aconteceu no projeto dos processadores nos chips, passando pelo emprego do pipeline, depois pelo superescalar, multithread, multi-core e por fim pelo atual many-core. 1.2. Mquinas para Processamento de Alto Desempenho Apesar do crescente aumento de desempenho dos PCs encontrados no mercado (mquinas denominadas convencionais) existem usurios especiais que executam aplicaes que precisam de ainda maior desempenho. Ex: Previso do tempo Procura de petrleo Simulaes fsicas Matemtica computacional

Se executadas em mquinas convencionais, estas aplicaes precisariam de vrias semanas ou at meses para executar. Em alguns casos extremos, nem executariam por causa de falta de memria. Ex: Compro o melhor PC que encontro no mercado, utilizo um simulador para prever o tempo daqui a trs (3) dias... A previso pode s ficar pronta depois de 1 semana (7 dias) !!! Processamento de Alto Desempenho (PAD) uma rea da computao que se preocupa com estes problemas complexos demais para mquinas convencionais. Estes usurios s tm duas alternativas: Simplificam o seu modelo e acabam tendo resultados menos precisos aumentando a margem de erro (Ex: a simulao de tempo indica uma alta probabilidade de chuva e no chove). Executam a sua aplicao em mquinas mais poderosas do que as convencionais, denominadas arquiteturas especiais ou arquiteturas paralelas.

As arquiteturas especiais obtm um melhor desempenho replicando o nmero de unidades ativas (normalmente processadores). Infelizmente um aumento do nmero de processadores na arquitetura acaba invariavelmente complicando ainda mais os problemas j encontrados em arquiteturas convencionais e criando novos complicadores. A dificuldade que se tinha para alimentar um processador com dados fica ainda maior para vrios processadores.

ERAD 2011 22-25 de maro de 2011 ISBN 2177-0085

24

Fundamentos das Arquiteturas para Processamento Paralelo e Distribudo

A programao de mquinas especiais mais complicada, pois o problema tem que ser particionado (quebrado em partes e distribudo) entre as vrias unidades ativas para que execute mais rpido.

O tipo de processamento que ocorre nestas mquinas denominado processamento paralelo pelo fato de vrias unidades ativas atuarem em paralelo no mesmo problema com o objetivo de reduzir o tempo total de execuo 1.3. Tipos de Concorrncia numa Arquitetura As principais formas de concorrncia encontradas numa arquitetura so a temporal e a de recursos. Numa concorrncia temporal, existe uma sobreposio das execues no tempo, criando, dessa forma, um ganho no desempenho final do processamento. Por outro lado, na concorrncia de recursos, tambm chamada de espacial, a arquitetura possui vrios processadores ou elementos de processamento que trabalham em paralelo na execuo das tarefas que compem o processamento. Nessa ltima concorrncia, o ganho obtido no desempenho fruto da quantidade de unidades de processamento que trabalham em conjunto. Esses dois tipos de concorrncia resultam em trs tipos de arquiteturas principais que hoje, juntas, representam a quase totalidade das mquinas existentes: Concorrncia temporal, que resulta nas arquiteturas pipeline, onde existe uma sobreposio na execuo temporal dos vrios estgios que compem uma instruo; Concorrncia de recursos sncrona, que resulta nas arquiteturas SIMD, tambm conhecidas como arquiteturas matriciais ( array), nas quais a concorrncia existe entre elementos de processamento que executam em paralelo, de forma simultnea, a mesma operao; Concorrncia de recursos assncrona, que resulta nas arquiteturas MIMD, em que processadores atuam em paralelo para resolver uma tarefa, porm cada um executando dentro do seu ordenamento e tempo.

Num pipeline, uma tarefa subdividida numa sequncia de subtarefas, cada uma executada por um estgio de hardware especfico, que trabalha concorrentemente com os outros estgios do pipeline, criando um paralelismo temporal na execuo das subtarefas. Os Processadores Matriciais (Array Processors), tambm conhecidos por SIMD, so representativos do Paralelismo Espacial Sncrono. Nessa arquitetura, uma unidade de controle distribui para vrios elementos de processamento (EP) a mesma instruo que ser executada em paralelo por esses EPs sobre seus prprios dados no mesmo instante de tempo. O terceiro tipo de concorrncia, o Paralelismo Espacial Assncrono, encontrado nos multiprocessadores, tambm conhecidos por arquiteturas MIMD. Nesse caso, diversos processadores trabalham em paralelo, processando suas tarefas concorrentemente de forma assncrona para, num intervalo de tempo, conclurem a tarefa. Esses processadores geralmente so idnticos e possuem um sistema operacional

ERAD 2011 22-25 de maro de 2011 ISBN 2177-0085

Philippe O. A. Navaux (Universidade Federal do Rio Grande do Sul), Csar A. F. De Rose (PUCRS), Larcio L. Pilla (Universidade Federal do Rio Grande do Sul) 25

nico que os gerencia. Portanto, um multiprocessador um computador que possui vrios processadores que se comunicam e cooperam para resolver uma dada tarefa. 1.4. Processamento Paralelo (PP) Definio: vrias unidades ativas colaborando na resoluo de um mesmo problema. As vrias unidades ativas cooperam para resolver o mesmo problema, atacando cada uma delas uma parte do trabalho e se comunicando para a troca de resultados intermedirios ou no mnimo para a diviso inicial do trabalho e para a juno final dos resultados. Exemplos de programas paralelos: Uma aplicao escrita em C ou Java com vrias threads. Uma aplicao escrita em Java usando RMI (Remote Method Invocation). Uma aplicao escrita em C que foi quebrada em vrios processos que se comunicam por sockets.

Um programa que no foi preparado para executar com vrias unidades ativas (implementado com apenas um processo que no dispara mltiplas threads) no executa mais rpido em uma mquina dual!!! O programa no automaticamente quebrado pelo sistema operacional e s executa em um nico processador, no se aproveitando de outros processadores que possam estar disponveis na arquitetura (no caso da mquina dual). Motivao para o uso de processamento paralelo 1. Desempenho: Espero reduzir o tempo de execuo devido a utilizao de diversas unidades ativas na resoluo do problema. 2. Tolerncia a falhas: Espero reduzir a probabilidade de falhas no clculo pois cada unidade ativa calcula o mesmo problema e fao uma eleio no final. 3. Modelagem: Espero reduzir a complexidade da modelagem e consequentemente da implementao da aplicao utilizando uma linguagem que expresse paralelismo (em situaes onde o problema em sua essncia paralelo). 4. Aproveitamento de recursos: Espero aproveitar melhor os recursos disponveis na rede executando uma aplicao com mltiplos processos. 1.5. Nveis de Paralelismo Explorao de paralelismo est presente nos diversos nveis de um sistema: Gro de Paralelismo: um conceito muito importante pois seu entendimento fundamental para a modelagem de programas paralelos. Gro grosso: o trabalho a ser feito pode ser particionado em unidades de trabalho grandes. Mesmo pagando um alto custo de comunicao grande a chance de se obter ganho de desempenho delegando estas unidades de trabalho para outras unidades ativas (o custo do envio compensado pelo ganho de tempo em atacar o problema com mais unidades).

ERAD 2011 22-25 de maro de 2011 ISBN 2177-0085

26

Fundamentos das Arquiteturas para Processamento Paralelo e Distribudo

Gro mdio: o trabalho a ser feito s pode ser particionado em unidades de trabalho mdio. Em caso de um alto custo de comunicao pode ser difcil se obter ganho de desempenho delegando estas unidades de trabalho para outras unidades ativas (o custo do envio no necessariamente compensado pelo ganho de tempo em atacar o problema com mais unidades). Gro fino: o trabalho a ser feito s pode ser particionado em unidades de trabalho pequenas. Em caso de um alto custo de comunicao no vale a pena delegar estas unidades de trabalho para outras unidades ativas (o custo do envio no compensado pelo ganho de tempo em atacar o problema com mais unidades).
Utilizao de processos leves threads! "nvocao de m#todos remotos $ava %M"! Utilizao de processos remotos

)plicao

Multiprocessamento Multiprogramao Vrios processadores Unidades de E/S ativa Hierarquia de memria Hierarquia de barramentos

Sistema *peracional

)rquitetura

M&ltiplas unidades 'uncionais (ipeline de instruo

(rocessador

Figura 1. Diferentes nveis de paralelismo.

1.6. Processamento Paralelo x Distribudo Processamento Paralelo x Distribudo: questes mais conceituais dependem muito de cada autor e de sua respectiva formao: Em ambas as reas tenho os mesmos complicadores (custo de comunicao, distribuio dos dados, dependncias) mas a motivao diferente [De Rose 2003]. No caso de Processamento Paralelo a motivao foi o ganho de desempenho e as unidades ativas esto normalmente na mesma mquina resultando em custos de comunicao menores (baixa latncia). No caso de Processamento Distribudo a motivao foi a modelagem e o aproveitamento de recursos e as unidades ativas esto normalmente mais afastadas (em uma rede local ou at na Internet) resultando em custos de comunicao maiores (alta latncia).

ERAD 2011 22-25 de maro de 2011 ISBN 2177-0085

Philippe O. A. Navaux (Universidade Federal do Rio Grande do Sul), Csar A. F. De Rose (PUCRS), Larcio L. Pilla (Universidade Federal do Rio Grande do Sul) 27

Poderia supor que se quero aumentar o desempenho de uma aplicao s precisaria executar o programa com mais unidades ativas... mas infelizmente tenho complicadores: Dependncias de dados Distribuio dos dados Sincronizao reas crticas Exemplo: construo de um muro Um pedreiro faz o muro em 3 horas, dois pedreiros fazem em 2 horas, trs pedreiros em 1 hora e meia, 4 pedreiros em duas horas (aumentou o tempo!!!)

A quantidade de trabalho a ser feita limita o nmero de unidades ativas que podem ser usadas de forma eficiente. Um nmero muito grande de unidades ativas para uma quantidade limitada de trabalho faz com que os recursos mais se atrapalhem do que se ajudem (o que faz o tempo aumentar e no diminuir!!!). A incidncia de muitos complicadores faz com que o ganho de desempenho no seja proporcional ao acrscimo de unidades ativas utilizadas (a duplicao do nmero de pedreiros de 1 para dois no reduziu o tempo de execuo pela metade no exemplo acima). Os complicadores no caso da construo do muro so os seguintes: O muro s pode ser feito de baixo para cima (dependncia de dados). Os tijolos tm que ser distribudos entre os pedreiros (distribuio dos dados). Um pedreiro no pode levantar o muro do seu lado muito na frente dos outros pedreiros (sincronizao ritmo de subida do muro dado pelo pedreiro mais lento). Se s existir um carrinho com cimento este ser disputado por todos os pedreiros que faro uma fila para acessar o cimento. Enquanto um pedreiro acessa o cimento os outros perdero tempo esperando nessa fila (reas crticas).

1.7. Medidas Bsicas de Desempenho ndices que indicam o desempenho de diferentes aspectos de um programa paralelo. Desempenho da aplicao Desempenho da rede de interconexo

1.7.1. Desempenho da aplicao Speed-Up (fator de acelerao): Indica quantas vezes o programa paralelo ficou mais rpido que a verso sequencial. calculado pela razo entre o melhor tempo sequencial e o tempo da verso paralela.

ERAD 2011 22-25 de maro de 2011 ISBN 2177-0085

28

Fundamentos das Arquiteturas para Processamento Paralelo e Distribudo

SU p w =

T w T pw

Onde p o nmero de unidades ativas utilizadas e w o trabalho que foi calculado.


Speed-Up (Fator de Acelerao) 0/ 0. 00, Speed-Up 0+ / . , + 0 , 1 2 . 3 / 4 0+ 00 Nm ero de unidades ativas 0, 01 002 0.

5erico

%eal

Figura 2. Comparao entre fator de acelerao terico e obtido.

Se SU > 1 a verso paralela reduziu o tempo de execuo (ficou mais rpido que a sequencial) e se SU < 1 a verso paralela aumentou o tempo de execuo (ficou mais lenta que a sequencial). Cada aplicao tem a sua curva (mais ou menos acentuada) dependendo do trabalho e da incidncia de complicadores (aplicao mais ou menos amarrada). Toda aplicao tem um nmero de unidades ativas ideal para a obteno do melhor desempenho (sweetspot) no sendo verdade que quanto mais unidades ativas melhor. Eficincia: Indica como foi a taxa de utilizao mdia das unidades ativas utilizadas. Mostra se os recursos foram bem aproveitados. calculado pela razo entre o Speed-Up e o nmero de unidades ativas utilizadas. SU p w E p w =
p

Onde p o nmero de unidades ativas utilizadas e w o trabalho que foi calculado. O ideal seria que cada unidade ativa tivesse ficado 100% do tempo ativa (linha superior). Normalmente as unidades ativas ficam parte de seu tempo esperando por resultados de vizinhos o que reduz sua taxa de utilizao. A melhor taxa de utilizao mdia no significa o menor tempo de execuo (nas Figuras 2 e 3, o menor tempo de execuo ocorreu com 11 unidades ativas e a melhor taxa de utilizao mdia com 5). 1.7.2. Desempenho da rede de interconexo

ERAD 2011 22-25 de maro de 2011 ISBN 2177-0085

Philippe O. A. Navaux (Universidade Federal do Rio Grande do Sul), Csar A. F. De Rose (PUCRS), Larcio L. Pilla (Universidade Federal do Rio Grande do Sul) 29

Latncia: o tempo necessrio para enviar uma mensagem atravs da rede de interconexo. Unidade: medida de tempo, Ex: 4 microssegundos (4 s). Inclui o tempo de empacotamento e desempacotamento dos dados mais o tempo de envio propriamente dito.
Eficincia (Speed-Up/Nua)
06, 0 +6/ Eficincia +6. +6-

5erico
+6, + 0 , 1 2

%eal

. 3 / 4 0+ 00 Nm ero de unidades ativas

0,

01

0-

02

0.

Figura 3. Comparao entre eficincia terica e obtida.

A latncia aumenta a medida que a quantidade de dados a serem enviados aumenta, mas no de forma linear, pois a componente do tempo referente ao custo de empacotamento e desempacotamento no varia tanto em relao ao tamanho da mensagem como a componente de custo de envio pela rede. Vazo: Expressa a capacidade da rede de bombear dados entre dois pontos. Unidade: quantidade de dados por unidade de tempo, Ex: 10 MBytes/segundo (10 MB/s). A vazo afetada pela largura do canal de comunicao (expressa normalmente em bits) e pela frequncia da transmisso dos dados (expressa em MHz) segundo a seguinte frmula: V=L F

2. Paralelismo na Arquitetura de Chips


2.1. Arquiteturas empregando a Tcnica Pipeline Conforme visto no captulo de introduo, uma das primeiras formas de concorrncia empregadas para aumento do desempenho de processadores foi a tcnica pipeline. Neste captulo, veremos o histrico da evoluo do emprego da tcnica pipeline para o projeto de arquiteturas de mquinas e microprocessadores, sua classificao, o pipeline de instruo, o pipeline aritmtico, as principais tcnicas de projeto para pipelines e, por fim, as dependncias entre instrues que afetam o funcionamento de um pipeline. No

ERAD 2011 22-25 de maro de 2011 ISBN 2177-0085

30

Fundamentos das Arquiteturas para Processamento Paralelo e Distribudo

prximo captulo, sero vistas as tcnicas superescalares que representam a evoluo das arquiteturas pipelines apresentadas aqui. O reconhecimento do interesse no emprego do pipeline data do incio dos projetos de computadores. O uso de tcnicas de pipeline iniciou pela acelerao na busca de instrues na memria. O computador IBM 7094 empregava uma memria de 72 bits de largura e 36 bits de instrues. A cada acesso memria eram trazidas duas instrues de 36 bits. O primeiro emprego efetivo de tcnicas pipeline foi no particionamento e na execuo sobreposta de instrues nas mquinas STRETCH [Block 1959] e LARC [Eckert 1959]. O STRECH empregou o particionamento na execuo das instrues em dois estgios: uma fase de busca e decodificao da instruo e uma fase de execuo do operador. J a mquina LARC melhorou a execuo das instrues, quebrando o processo em quatro estgios: busca de instruo, operao de endereamento e ndice, busca do operando e execuo. 2.1.1. Princpios de Funcionamento de um Pipeline O princpio de funcionamento de um pipeline a execuo de uma tarefa atravs da sua diviso num conjunto de subtarefas, as quais, no seu conjunto, sejam equivalentes execuo da tarefa original, empregando concorrncia temporal. Isso resulta em que a tarefa continua sendo executada de forma idntica, s que dividida por etapas, chamadas de estgios. A cada vez que a tarefa passa para um novo estgio, possvel aproveitar o anterior para uma nova tarefa, portanto aproveitando melhor o hardware existente para a execuo. Esse princpio equivalente a uma linha de produo de automveis, na qual cada estao responsvel pela montagem de uma parte do veculo. Portanto, num pipeline, uma tarefa dividida em subtarefas que so executadas cada uma por um dos estgios, de forma a ter na sada da cadeia do pipeline a tarefa completa executada. A Figura 4 mostra a estrutura bsica de um pipeline linear; nela, os estgios so separados por registradores cuja funo armazenar o resultado do estgio anterior para execuo no prximo estgio. Dessa forma, criado um delimitador temporal que ser empregado para sincronizar os estgios. Observa-se que, para o bom funcionamento de um pipeline e para no haver perdas, importante que as subtarefas dos diferentes estgios tenham um tempo de processamento o mais uniforme possvel. O relgio, que cadenciar o pipeline atravs da carga dos registradores, ser estabelecido pelo tempo da subtarefa mais lenta. BI D BI BO D BI E BO D E BO E

Figura 4. Estrutura de pipeline.

ERAD 2011 22-25 de maro de 2011 ISBN 2177-0085

Philippe O. A. Navaux (Universidade Federal do Rio Grande do Sul), Csar A. F. De Rose (PUCRS), Larcio L. Pilla (Universidade Federal do Rio Grande do Sul) 31

Conclui-se que um pipeline uma cascata de estgios de processamento. Esses estgios so circuitos combinatrios que executaro operaes lgicas e aritmticas sobre o fluxo de dados. Entre cada estgio, existem registradores que servem como barreiras lgicas e que sincronizam o pipeline. So estes que guardam os resultados intermedirios de um estgio para outro. O relgio atuar simultaneamente sobre todos os registradores, cadenciando o fluxo das informaes pelos estgios do pipeline. Portanto, pipeline uma tcnica que pode ser aplicada em diversas circunstncias, trazendo como resultado um aumento na vazo das tarefas. Foi o emprego dessa tcnica nas arquiteturas de mquinas que propiciou o surgimento de computadores de alto desempenho. Por outro lado, hoje em dia, a maioria dos microprocessadores e computadores emprega alguma tcnica pipeline, em maior ou menor grau, nas suas arquiteturas. O pipeline de instrues o mais simples e mais difundido dos dois tipos de pipeline. Consiste basicamente na execuo concorrente das etapas de busca de instruo (BI), decodificao (D), busca de operando (BO), e execuo (E). Para um bom desempenho de um pipeline de instruo, necessrio que ele seja abastecido continuamente com instrues. Quando ocorre um salto no programa ou uma interrupo, diversos ciclos so perdidos para esvaziar e recarregar o pipeline.

Figura 5. Exemplo de acelerao com pipeline.

Pelo exposto, verifica-se que um pipeline obtm seu mximo desempenho quando est cheio, completando uma tarefa a cada tempo T. Observando-se a Figura 5, conclui-se que, at a primeira tarefa ser concluda, ocorre um atraso de 4T, donde se obtm que um pipeline processa n tarefas em

ERAD 2011 22-25 de maro de 2011 ISBN 2177-0085

32

Fundamentos das Arquiteturas para Processamento Paralelo e Distribudo

j+ n 1 T
Numa mquina comum, essas tarefas levariam n.j.T; portanto o ganho de desempenho (Speed-Up) G de um pipeline dado por
G=

n . j .T n. j = J j n 1 Tj+ n1

2.1.2. Gerenciamento de Desvios Um dos problemas na implementao dos pipelines o fato de que quando existe uma instruo de desvio, ela depende de um resultado que na maioria das vezes ainda esta em execuo no pipeline e portanto ainda no pronto, isto pode levar a parar a entrada de novas instrues enquanto o resultado no for calculado. A distribuio tpica da incidncia das instrues pelas suas categorias fica com 60% para instrues aritmticas, 15% para instrues de armazenamento, 5% para desvios incondicionais e da ordem de 20% para os desvios condicionais [Hwang 1985].
,+7

27

.+7 027

8esvios con9 dicionais 8esvios in9 condicionais )rmazenamento )ritm#ticas

Figura 6. Distribuio tpica de instrues.

Dos 20% de desvios condicionais, normalmente 8% no so tomados e, portanto, as instrues continuam sequencialmente sua execuo, enquanto 12% so tomados, obrigando o clculo do novo endereo para incio da nova sequncia de instrues. Essas duas situaes, desvio incondicional e desvio condicional com sucesso, prejudicam grandemente o desempenho do pipeline, pois acarretam o esvaziamento deste para incio da nova sequncia de instrues, como ilustra a Figura 7. Alm dos desvios, as interrupes tambm prejudicam o funcionamento de um pipeline de instrues.

Figura 7. Efeito do esvaziamento de pipeline devido a desvios.


ERAD 2011 22-25 de maro de 2011 ISBN 2177-0085

Philippe O. A. Navaux (Universidade Federal do Rio Grande do Sul), Csar A. F. De Rose (PUCRS), Larcio L. Pilla (Universidade Federal do Rio Grande do Sul) 33

A impossibilidade de conhecer os resultados de um desvio condicional antes de execut-lo cria pontos de dependncia conhecidos por dependncias de controle. O pipeline fica sem saber se continua executando as instrues pelo fluxo de instrues principal, ou se deve desviar e adotar o novo fluxo de instrues resultado do desvio. Esse tipo de situao gera uma dependncia de controle, conhecida tambm por dependncia procedural [Stallings 1996]. O processador s pode continuar a execuo efetiva da instruo aps conhecido o resultado da condio e, portanto, aps ter o conhecimento de qual fluxo de instrues seguir. Estabelecida a necessidade do desvio e, portanto, a adoo da nova sequncia de instrues, necessrio descartar todas as instrues que j esto no pipeline. Para diminuir esse impacto no desempenho, foram criadas tcnicas para prever os desvios sob forma especulativa, diminuindo a taxa de execuo de sequncias de instrues desnecessrias. 2.2. Arquiteturas Superescalares Como visto anteriormente, o pipeline veio para acelerar a execuo de instrues, empregando, para isso, a sobreposio na execuo de etapas da instruo. Nos primeiros tempos do emprego da tcnica pipeline, havia grandes diferenas de tempo entre os estgios de busca de instruo e de busca de operando na memria devido ao maior tempo necessrio para acesso memria. Esses problemas foram solucionados no final dos anos 70, na medida em que foram criadas memrias cache para as instrues e posteriormente para os dados. Num segundo momento da evoluo das tcnicas de pipeline, em meados dos anos 80, surgiram as instrues RISC ( Reduced Instruction Set Computer) em oposio ao emprego das instrues CISC (Complex Instruction Set Computer). Essa evoluo visava a obter um conjunto de instrues com tempos de execuo de um ciclo e, portanto, permitir que os pipelines conseguissem obter desempenhos melhores sem serem prejudicados por estgios de execuo com tempos de vrios ciclos, como eram os das instrues CISC. O prximo objetivo a ser vencido foi permitir que uma arquitetura pipeline pudesse executar mais de uma instruo de cada vez. Para vencer essa barreira, era necessrio que houvesse mais de uma instruo independente para ser executada e que houvesse hardware para tal. Dessa necessidade de aumento de desempenho dos processadores, surgiram os Processadores Superescalares, que possuem mais de um pipeline para permitir a execuo de mais de uma instruo simultaneamente. A Figura 8 mostra essa nova estrutura de execuo. Este mecanismo conhecido por ILP, Instruction Level Parallelism. Um processador superescalar tpico busca e decodifica vrias instrues por ciclo, enquanto as arquiteturas escalares buscam e executam apenas uma instruo por ciclo [Hwang 1993]. Dessa forma, pode-se esperar que mltiplas instrues sejam completadas a cada ciclo em um pipeline superescalar, o que no possvel em pipelines escalares [Pilla 2001]. Para permitir a execuo de diversas instrues simultaneamente, necessrio verificar a no existncia de dependncias entre estas.

ERAD 2011 22-25 de maro de 2011 ISBN 2177-0085

34

Fundamentos das Arquiteturas para Processamento Paralelo e Distribudo

Portanto, necessrio que as instrues buscadas e decodificadas sejam analisadas na busca de dependncias. Embora executando diversas instrues por ciclo, as arquiteturas superescalares possuem um compromisso com a semntica sequencial utilizada pelo programador e, portanto, devem manter o ordenamento total no final. Deve ser preservada a semntica sequencial ao mesmo tempo que se explora o paralelismo entre as instrues [Sohi 1995]. BI BI D D BO BO E E

BI BI

D D

BO BO

E E

BI BI

D D

BO BO

E E

Figura 8. Estrutura de execuo superescalar.

2.2.1. Unidades de uma Arquitetura Superescalar Para a execuo paralela de instrues, diversas premissas so necessrias para que se possa obter instrues disponveis para sua execuo. A arquitetura bsica de um processador superescalar apresentada na Figura 9, na qual se verifica a existncia de diversas unidades.

Figura 9. Arquitetura superescalar bsica.

No modelo de processamento superescalar, diversas instrues so executadas concorrentemente e normalmente possuem cdigos de operao diferentes. Essas arquiteturas comearam a surgir em 1980 e hoje integram a maioria dos

ERAD 2011 22-25 de maro de 2011 ISBN 2177-0085

Philippe O. A. Navaux (Universidade Federal do Rio Grande do Sul), Csar A. F. De Rose (PUCRS), Larcio L. Pilla (Universidade Federal do Rio Grande do Sul) 35

microprocessadores existentes. Diversas so as tcnicas empregadas, em sua totalidade ou parcialmente que resultam no aumento do desempenho dessas arquiteturas. Abaixo, so apresentadas suas principais caractersticas [Smith 1995][Pizzol 2002]: tcnicas para determinao e processamento de dependncias entre os dados dos registradores; estratgias de busca de mltiplas instrues por ciclo; antever/prever os desvios condicionais; mtodos para despacho de mltiplas instrues; mtodos para recuperao do estado de ordenamento correto (semntica sequencial); estratgias para comunicao de dados, atravs da memria, empregando load/store; recursos para execuo paralela de mltiplas instrues, incluindo mltiplas unidades funcionais e memria hierrquica para permitir mltiplos acessos.

2.3. Arquiteturas Multithread Com o surgimento de processadores com arquiteturas superescalares, visto anteriormente, esperava-se que a paralelizao das instrues conseguiria um melhor uso da vrias unidades funcionais existentes, em geral de 6 a 8 unidades. No entanto em mdia as arquiteturas superescalares dobraram o nmero de instrues executadas, comparado com uma arquitetura pipeline escalar simples. A razo maior para este limite a prpria estrutura dos nossos programas que no permite extrair um maior nmero de instrues paralelas. Portanto o desafio dos pesquisadores em aumentar o desempenho, levou a pensar que se de um fluxo de instrues eu s consigo obter um paralelismo da ordem de 2 instrues, porque no aumentar o nmero de fluxos de instrues a serem executadas no meu processador simultaneamente, permitindo desta forma a extrao de mais instrues para execuo pelas unidades funcionais do meu processador. Surge dai a arquitetura conhecida por Multi-thread. ou multithread, que permite o processamento de mais de um fluxo de instrues em paralelo pela arquitetura do processador. Multithread demonstra ser uma boa alternativa para a execuo de programas. Programas so representados pelo S.O. por processos e associado a cada processo existe um contexto que descreve o estado atual da execuo do processo (registradores, PC, etc). Cada processo possui pelo menos uma thread, representada pelo fluxo de execuo com o seu contexto local. A proposta da arquitetura multithread executar mais do que um processo/thread simultaneamente, aproveitando melhor as unidades funcionais inativas. Este mecanismo conhecido por TLP - Thread Level Parallelism. A figura abaixo apresenta uma comparao entre o funcionamento de uma arquitetura Superescalar e uma arquitetura multithread. Um processador multithread emprega uma tcnica que permite que mltiplas threads despachem mltiplas instrues a cada ciclo para as unidades funcionais, UF,

ERAD 2011 22-25 de maro de 2011 ISBN 2177-0085

36

Fundamentos das Arquiteturas para Processamento Paralelo e Distribudo

de um processador. As arquiteturas MT combinam tanto o paralelismo no nvel de instruo (ILP) como no paralelismo em nvel de thread (TLP). O paralelismo em nvel de thread obtido atravs de programas paralelos (multithreaded) ou de programas individuais (multiprogramao). Por explorar os dois tipos de paralelismo, ILP e TLP, multithread usa de forma mais eficiente os recursos disponveis e os speedups so maiores. O emprego de mutithread cria, em ltima anlise, processadores virtuais para o usurio destes processadores.

Figura 10. Comparao de eficincia entre o escalonamento de tarefas em ambientes superescalar e multithread.

As arquiteturas multithread possuem um hardware para armazenar o contexto de vrios programas (threads) em execuo no processador. Este hardware a mais includo numa arquitetura superescalar para atender o multithread no passa de 5% de acrscimo o que torna bastante vantajoso para os fabricantes. A Figura 11 apresenta a estrutura geral de uma arquitetura multithread.

Figura 11. Arquitetura multithread bsica.

ERAD 2011 22-25 de maro de 2011 ISBN 2177-0085

Philippe O. A. Navaux (Universidade Federal do Rio Grande do Sul), Csar A. F. De Rose (PUCRS), Larcio L. Pilla (Universidade Federal do Rio Grande do Sul) 37

Esta arquitetura busca reduzir o nmero de slots de despacho no ocupados a cada ciclo (comum em arquiteturas multithread) e o nmero de ciclos sem que instrues tenham sido despachadas (comum em arquiteturas superescalares). Associao das unidades funcionais com as threads feita de forma completamente dinmica. 2.3.1. Tipos de Multithread As arquiteturas multithread dividem-se em tipos diferentes dependendo da forma que sero executados as threads no processador. Explicit multithreading uma abordagem de execuo (simultnea ou no) de vrios fluxos de instrues (threads) de diferentes origens. Esta forma de execuo divide-se em trs tipos diferentes que sero apresentados abaixo. Multithreading de gro fino, IMT - Interleaved Multi Thread, o mtodo em que a cada novo ciclo uma nova instruo de uma thread diferente executada. Portanto existe uma alternncia na execuo das instrues das diferentes threads a cada ciclo. O processador muda de contexto a cada novo ciclo. Neste caso possvel eliminar conflitos de dependncias de dados e aumentar o ganho na execuo do pipeline. Exemplo do emprego de IMT na arquitetura do processador Ultra Sparc T1. Multithreading de gro grosso, BMT - Blocked Multi Thread, o mtodo em que a execuo de uma thread s interrompida quando um evento de alta latncia ocorre, tal como um acesso memria. Neste caso, a cada novo ciclo a execuo permanece com a mesma thread at acontecer uma mudana de contexto, por exemplo quando realizado um acesso memria. Sendo assim, possvel esperar o resultado do acesso memria executando uma nova thread. Exemplo do emprego da arquitetura BMT na arquitetura do processador IBM PowerPC RS64-III. SMT- Simultaneous Multi Thread, uma tcnica que permite mltiplas threads despacharem mltiplas instrues a cada ciclo para as UF, unidades funcionais, de um processador superescalar adaptado para execuo multithread. As arquiteturas SMT combinam tanto o paralelismo em nvel de instruo, ILP, como paralelismo em nvel de thread, TLP. Por explorar os dois tipos de paralelismo, SMT usa de forma mais eficiente os recursos disponveis e os speedups so maiores A figura abaixo apresenta comparativamente o funcionamento dos tipos diferentes de multithread.

Para o bom funcionamento dos processadores multithread necessrio caches que tragam suficientes instrues e dados para atender o volume de processamento. Observou-se que as Cache L2 tem um grande impacto sobre o desempenho dos processadores multithread, em especial os SMT, que requerem caches maiores e com maior associatividade.

ERAD 2011 22-25 de maro de 2011 ISBN 2177-0085

38

Fundamentos das Arquiteturas para Processamento Paralelo e Distribudo

Figura 12. Comparao de eficincia entre o escalonamento de tarefas em ambientes superescalar e diferentes tipos de multithread.

2.4. Arquiteturas Multi-core O surgimento dos multi-core foi motivada pela demanda contnua por desempenho e os limites fsicos perto de serem alcanados nas frequncias de relgio dos processadores, aliados ao alto consumo de potncia e consequente gerao de calor. Chegou-se a concluso que o aumento da frequncia de relgio no garantiria ganhos reais, pois entre outras razes a latncia de memria no acompanha a velocidade dos processadores. A Arquitetura Von Neumann tradicional um gargalho em vrias aplicaes. A alternativa ao aumento da frequncia de relgio a diviso das tarefas em operaes concorrentes e distribudas entre vrias unidades de processamento, conhecidas como cores ou ncleos. Esta abordagem ficou conhecida por CMP (Chip Multi-processing). O uso de mltiplos cores em um nico chip apresenta um melhor layout do circuito, com mais unidades funcionais (UFs) na mesma rea, do que um processador com apenas um core, e portanto permite trabalhar com uma frequncia de relgio menos elevada. Contriburam tambm para o surgimento dos multi-cores o fato que os processadores multithread demandarem caches grandes para atender o processamento das vrias threads no mesmo processador fsico, demandas dos processadores virtuais. Alm disto a arquitetura multi-core permite que o usurio continue trabalhando enquanto outras tarefas de processamento intensivo so executadas em paralelo. Durante o processamento, alguns cores inativos podem ser desligados. Isso proporciona uma economia no consumo de potncia e uma menor dissipao de calor. Uma das ltimas geraes de chips sem multi-core era a do Itanium que possua um consumo de potncia na ordem dos 110W. Em contrapartida, primeiro Dual-core da Intel, o Montecito, j diminua este consumo para 90W. Alm de possuir cores de propsito geral, os CMPs podem ter cores especficos, como para processamento de imagens, para algoritmos de reconhecimento de voz, para protocolos de comunicao, entre outros.

ERAD 2011 22-25 de maro de 2011 ISBN 2177-0085

Philippe O. A. Navaux (Universidade Federal do Rio Grande do Sul), Csar A. F. De Rose (PUCRS), Larcio L. Pilla (Universidade Federal do Rio Grande do Sul) 39

Alm disso, pode-se reconfigurar dinamicamente os cores, a rede de interconexo e as caches para uma melhor adaptao a determinados cenrios. De forma simplificada um processador multi-core pode ser considerado como colocar dois ou mais processadores num mesmo processador/chip, como na Figura 13. As vantagens desta arquitetura com vrios cores melhorar o paralelismo no nvel de threads, como ilustrado na Figura 14. Alm disto, permite ajudar aplicaes que no conseguem se beneficiar dos processadores superescalares atuais por no possurem um bom paralelismo no nvel de instrues Outras vantagens que podem ser enumeradas so a melhoria na localidade de dados, a melhoria na comunicao entre as unidades, a economia de espao e de energia do chip. A vazo em um processador multi-core no aumentar para aplicaes nicas no paralelizveis, mas sim nos outros casos e no sistema como um todo.

!U "

!U #

Figura 13. Viso simplificada de uma arquitetura multi-core.

Figura 14. Paralelismo de tarefas em arquitetura multi-core.

2.4.1. Virtualizao A Virtualizao surgiu nas arquiteturas multi-core como uma forma para mascarar a complexidade do gerenciamento do hardware com vrios cores para a camada de
ERAD 2011 22-25 de maro de 2011 ISBN 2177-0085

40

Fundamentos das Arquiteturas para Processamento Paralelo e Distribudo

software. Ao invs do usurio se preocupar com a execuo nos cores o sistema, a virtualizao, se encarrega deste gerenciamento fornecendo ao usurio. Dessa forma, software v o processador como uma srie de mquinas virtuais (abstrao). O emprego da virtualizao fornece segurana para as aplicaes, separando aquelas que so confiveis das demais. Alm disso, capaz de realizar o balanceamento de carga entre os processadores. 2.5. Arquiteturas Many-core Com o surgimento de vrios cores num chip a forma de conexo destes precisa ser mais complexa que um simples compartilhamento de cache, para tal necessrio empregar redes de interconexo denominadas de NoC, Network on Chip. A Figura 15 apresenta a arquitetura do chip experimental Tera-Scale da Intel, onde pode ser observado que alm dos ncleos existe uma estrutura para o roteador responsvel pela comunicao entre os ncleos (cores). Verifica-se que quando o volume de cores fica grande no mais possvel fazer a comunicao destes atravs de memrias caches) compartilhadas e que a soluo passa pelo emprego de redes de comunicao.

Figura 15. Arquitetura do processador experimental Tera-Scale.

Caractersticas principais do Intel Tera-Scale: Capacidade de processamento superior a 1 Tera-flops. 80 Ncleos VLIW. Cada ncleo com um roteador integrado.

ERAD 2011 22-25 de maro de 2011 ISBN 2177-0085

Philippe O. A. Navaux (Universidade Federal do Rio Grande do Sul), Csar A. F. De Rose (PUCRS), Larcio L. Pilla (Universidade Federal do Rio Grande do Sul) 41

Emprego de Caches L1 integradas. Interconexo usando NoC.

3. Paralelismo em Arquiteturas com Mltiplos Processadores


3.1. Classificao de Flynn (fluxo de instru es ! fluxo de dados" Para uma classificao inicial de arquiteturas paralelas, pode ser usada a classificao genrica de Flynn. Apesar de ter sua origem em meados dos anos 70, ainda vlida e muito difundida. Baseando-se no fato de um computador executar uma sequncia de instrues sobre uma sequncia de dados, diferenciam-se o fluxo de instrues (instruction stream) e o fluxo de dados (data stream). Dependendo de esses fluxos serem mltiplos ou no, e atravs da combinao das possibilidades, Flynn props quatro classes: #$ (Single Data) SISD #% (Single Instruction) Mquinas von Neumann convencionais M$ (Multiple Data) SIMD Mquinas Arra (CM-2, MasPar)

MISD M% (Multiple Instruction) Sem representante (at a ora)

MIMD Mu!tiprocessa"ores e mu!ticomputa"ores (nC#$%, Inte! Para on, Cra& '(D)

Figura 16. Classificao de Flynn.

Na classe SISD (Single Instruction Single Data), um nico fluxo de instrues atua sobre um nico fluxo de dados. O fluxo de instrues (linha contnua) alimenta uma unidade de controle (C) que ativa a unidade central de processamento (P). A unidade P, por sua vez, atua sobre um nico fluxo de dados (linha tracejada), que lido, processado e reescrito na memria (M). Nessa classe, so enquadradas as mquinas von Neumann tradicionais com apenas um processador, como microcomputadores pessoais e estaes de trabalho.

ERAD 2011 22-25 de maro de 2011 ISBN 2177-0085

42

Fundamentos das Arquiteturas para Processamento Paralelo e Distribudo

Figura 17. Classe SISD.

Na classe MISD (Multiple Instruction Single Data), mltiplos fluxos de instrues atuariam sobre um nico fluxo de dados. Mltiplas unidades de processamento P, cada uma com sua unidade de controle prpria C, recebendo um fluxo diferente de instrues. Essas unidades de processamento executam suas diferentes instrues sobre o mesmo fluxo de dados. Na prtica, diferentes instrues operam a mesma posio de memria ao mesmo tempo, executando instrues diferentes. Como isso, at os dias de hoje, no faz qualquer sentido, alm de ser tecnicamente impraticvel, essa classe considerada vazia.

Figura 18. Classe MISD.

As mquinas paralelas concentram-se nas duas classes restantes, SIMD e MIMD. No caso SIMD (Single Instruction Multiple Data), uma nica instruo executada ao mesmo tempo sobre mltiplos dados. O processamento controlado por uma nica unidade de controle C, alimentada por um nico fluxo de instrues. A mesma instruo enviada para os diversos processadores P envolvidos na execuo.

ERAD 2011 22-25 de maro de 2011 ISBN 2177-0085

Philippe O. A. Navaux (Universidade Federal do Rio Grande do Sul), Csar A. F. De Rose (PUCRS), Larcio L. Pilla (Universidade Federal do Rio Grande do Sul) 43

Todos os processadores executam suas instrues em paralelo de forma sncrona sobre diferentes fluxos de dados. Na prtica, pode-se dizer que o mesmo programa est sendo executado sobre diferentes dados, o que faz com que o princpio de execuo SIMD assemelhe-se bastante ao paradigma de execuo sequencial. importante ressaltar que, para que o processamento das diferentes posies de memria possa ocorrer em paralelo, a unidade de memria M no pode ser implementada como um nico mdulo de memria, o que permitiria s uma operao por vez.

Figura 19. Classe SIMD.

%nquanto, em uma mquina SIMD, s) um *!u+o "e instru,-es, ou se.a, s) um pro rama, est sen"o e+ecuta"o, em uma mquina M%M$ (Multiple Instruction Multiple Data), ca"a uni"a"e "e contro!e C rece/e um *!u+o "e instru,-es pr)prio e repassa-o para sua uni"a"e processa"ora P para que se.a e+ecuta"o so/re um *!u+o "e instru,-es pr)prio. Dessa *orma, ca"a processa"or e+ecuta o seu pr)prio pro rama so/re seus pr)prios "a"os "e *orma ass&ncrona. Sen"o assim, o princ0pio MIMD /astante enrico, pois qua!quer rupo "e mquinas, se ana!isa"o como uma uni"a"e (e+ecutan"o, por e+emp!o, um sistema "istri/u0"o), po"e ser consi"era"o uma mquina MIMD. Nesse caso, como na c!asse SIMD, para que o processamento "as "i*erentes posi,-es "e mem)ria possa ocorrer em para!e!o, a uni"a"e "e mem)ria M n1o po"e ser imp!ementa"a como um 2nico m)"u!o "e mem)ria, o que permitiria s) uma opera,1o por ve3. Nessa c!asse, enqua"ram-se mquinas com mu!ti-core ou com m2!tip!os processa"ores.

ERAD 2011 22-25 de maro de 2011 ISBN 2177-0085

44

Fundamentos das Arquiteturas para Processamento Paralelo e Distribudo

Figura 20. Classe MIMD.

3.2. Classificao segundo o compartilhamento de memria Um outro critrio para a classificao de mquinas paralelas o compartilhamento da memria. Quando se fala em memria compartilhada (shared memory), existe um nico espao de endereamento que ser usado de forma implcita para comunicao entre processadores, com operaes de load e store. Quando a memria no compartilhada, existem mltiplos espaos de endereamento privados (multiple private address spaces), um para cada processador. Isso implica comunicao explcita atravs de troca de mensagens com operaes send e receive. Memria distribuda (distributed memory), por sua vez, refere-se localizao fsica da memria. Se a memria implementada com vrios mdulos, e cada mdulo foi colocado prximo de um processador, ento a memria considerada distribuda. Outra alternativa o uso de uma memria centralizada (centralized memory), ou seja, a memria encontra-se mesma distncia de todos os processadores, independentemente de ter sido implementada com um ou vrios mdulos . Dependendo de uma mquina paralela utilizar-se ou no de uma memria compartilhada por todos os processadores, pode-se diferenciar: Multiprocessadores Multicomputadores

!"#"$" Multiprocessa%ores Todos os processadores P acessam, atravs de uma rede de interconexo, uma memria compartilhada M.

ERAD 2011 22-25 de maro de 2011 ISBN 2177-0085

Philippe O. A. Navaux (Universidade Federal do Rio Grande do Sul), Csar A. F. De Rose (PUCRS), Larcio L. Pilla (Universidade Federal do Rio Grande do Sul) 45

Esse tipo de mquina possui apenas um espao de endereamento, de forma que todos os processadores P so capazes de enderear todas as memrias M.

Figura 21. Organizao de multiprocessadores.

A comunicao entre processos feita atravs da memria compartilhada de forma bastante eficiente com operaes do tipo load e store. Essas caractersticas resultam do fato de esse tipo de mquina paralela ser construda a partir da replicao apenas do componente processador de uma arquitetura convencional (destacados com uma moldura mais escura na figura). Da o nome mltiplos processadores. Em relao ao tipo de acesso s memrias do sistema, multiprocessadores podem ser classificados como: UMA NUMA COMA

Acesso uniforme memria ( uniform memory access, UMA): 4 mem)ria usa"a nessas mquinas centra!i3a"a e encontra-se 5 mesma "ist6ncia "e to"os os processa"ores, *a3en"o com que a !at7ncia "e acesso 5 mem)ria se.a i ua! para to"os os processa"ores "o sistema (uni*orme). Como o barramento a rede de interconexo mais usada nessas mquinas e suporta apenas uma transao por vez, a memria principal normalmente implementada com um nico bloco. importante ressaltar que mquinas com outras redes de interconexo e com memrias entrelaadas (implementadas com mltiplos mdulos e, dessa forma, permitindo acesso paralelo a diferentes) tambm se enquadram nessa categoria se mantiverem o tempo de acesso memria uniforme para todos os processadores do sistema. Acesso no uniforme ' mem(ria (non)uniform memory access* +,MA"- 4 mem)ria usa"a nessas mquinas "istri/u0"a, imp!ementa"a com m2!tip!os m)"u!os que s1o associa"os um a ca"a processa"or.

ERAD 2011 22-25 de maro de 2011 ISBN 2177-0085

46

Fundamentos das Arquiteturas para Processamento Paralelo e Distribudo

Figura 22. Arquitetura UMA.

8 espa,o "e en"ere,amento 2nico, e ca"a processa"or po"e en"ere,ar to"a a mem)ria "o sistema. Se o en"ere,o era"o pe!o processa"or encontrar-se no m)"u!o "e mem)ria "iretamente !i a"o a e!e, "ito !oca!, o tempo "e acesso a e!e ser menor que o tempo "e acesso a um m)"u!o que est "iretamente !i a"o a outro processa"or, "ito remoto, que s) po"e ser acessa"o atravs "a re"e "e intercone+1o. Por esse motivo, essas mquinas possuem um acesso n1o uni*orme 5 mem)ria (a "ist6ncia 5 mem)ria n1o sempre a mesma e "epen"e "o en"ere,o "ese.a"o).

Figura 23. Arquitetura NUMA.

Arquiteturas de memria somente com cache (cache-only memory architecture, COMA): %m uma mquina C8M4, to"as as mem)rias !ocais est1o estrutura"as como mem)rias cac&e e s1o c9ama"as "e C8M4 cac&es. %ssas cac&es t7m muito mais capaci"a"e que uma cac&e tra"iciona!. Arquiteturas COMA tm suporte de hardware para a replicao efetiva do mesmo bloco de cache em mltiplos ns fazendo com que essas arquiteturas sejam mais caras de implementar que as mquinas NUMA.

ERAD 2011 22-25 de maro de 2011 ISBN 2177-0085

Philippe O. A. Navaux (Universidade Federal do Rio Grande do Sul), Csar A. F. De Rose (PUCRS), Larcio L. Pilla (Universidade Federal do Rio Grande do Sul) 47

Figura 24. Arquitetura COMA.

!"#"#" Multico'puta%ores Cada processador P possui uma memria local M, qual s ele tem acesso. As memrias dos outros processadores so consideradas memrias remotas e possuem espaos de endereamento distintos (um endereo gerado por P1 s capaz de enderear M1). Como no possvel o uso de variveis compartilhadas nesse ambiente, a troca de informaes com outros processos feita por envio de mensagens pela rede de interconexo. Por essa razo, essas mquinas tambm so chamadas de sistemas de troca de mensagens (message passing systems). Essas caractersticas resultam do fato de esse tipo de mquina paralela ser construdo a partir da replicao de toda a arquitetura convencional (destacadas com uma moldura mais escura na figura abaixo), e no apenas do componente processador como nos multiprocessadores (da o nome mltiplos computadores). %m re!a,1o ao tipo "e acesso 5s mem)rias "o sistema, mu!ticomputa"ores po"em ser c!assi*ica"os como: NORMA

Figura 25. Arquitetura NORMA.

ERAD 2011 22-25 de maro de 2011 ISBN 2177-0085

48

Fundamentos das Arquiteturas para Processamento Paralelo e Distribudo

Sem acesso a variveis remotas (non-remote memory access, NORMA): Como uma arquitetura tra"iciona! inteira *oi rep!ica"a na constru,1o "essas mquinas, os re istra"ores "e en"ere,amento "e ca"a n) s) conse uem en"ere,ar a sua mem)ria !oca!. 3.2.3.Viso geral da classificao segundo o compartilhamento de memria A Figura 26 apresenta uma viso geral da classificao segundo o compartilhamento de memria:

Figura 26. Classificao segundo o compartilhamento de memria.

A linha tracejada indica que as mquinas das classes NCC-NUMA e NORMA podem ser transformadas em mquinas SC-NUMA atravs da incluso de uma camada de software que implemente coerncia de cache. 3.3. .r/ani0ao da Mem(ria Principal Em uma mquina paralela, a memria principal tem um papel fundamental, como vimos na seo de classificaes, especialmente em multiprocessadores onde compartilhada por todos os processadores. necessrio que se tenha cuidado na escolha do tipo de organizao de memria para que se evite uma drstica degradao de desempenho causada por dois ou mais processadores tentando acessar os mesmos mdulos do sistema de memria. 3.3.1. Memrias entrelaadas No desejvel que a memria principal seja implementada por um nico mdulo de forma monoltica mas sim particionada em vrios mdulos independentes com um espao de endereamento nico distribudo entre eles. Essa forma de implementao chamada de entrelaamento (interleaving) e atenua a interferncia entre processadores no acesso memria, permitindo acessos concorrentes a diferentes mdulos. O entrelaamento de endereos entre M mdulos de memria chamado de entrelaamento de M-vias. importante destacar que de nada adianta a quebra da memria principal em vrios mdulos se a rede de interconexo utilizada na mquina no suporta mltiplas transaes.

ERAD 2011 22-25 de maro de 2011 ISBN 2177-0085

Philippe O. A. Navaux (Universidade Federal do Rio Grande do Sul), Csar A. F. De Rose (PUCRS), Larcio L. Pilla (Universidade Federal do Rio Grande do Sul) 49

Figura 27. Diferentes organizaes de memria.

Uma mquina UMA, por exemplo, que se utilize de um barramento para ligar os processadores memria principal, no se beneficia dos mltiplos canais de uma memria entrelaada, j que o prprio barramento o gargalo. 3.1. 2edes de %nterconexo A forma como os processadores de uma arquitetura so ligados entre si e com outros componentes do sistema (normalmente com a(s) memria(s)) dada pela rede de interconexo. Nas duas principais classes de arquiteturas vistas acima, a rede de interconexo desempenha um papel muito importante: nos multiprocessadores, ela pode ajudar a amenizar o problema dos conflitos de acesso, e em multicomputadores, ela influencia diretamente a eficincia da troca de informaes. As redes de interconexo se dividem em dois grandes grupos: Estticas Dinmicas

3.4.1. Redes estticas Se os componentes da mquina (processadores, memrias) esto interligados atravs de ligaes fixas, de forma que, entre dois componentes, exista uma ligao direta dedicada, a rede de interconexo denominada esttica (ponto-a-ponto). Redes estticas so utilizadas, na maioria dos casos, em multicomputadores. Nesse caso, a topologia (estrutura da interligao) determina as caractersticas da rede. Mquinas paralelas possuem quase sempre estruturas regulares com ligaes homogneas, enquanto sistemas distribudos, por causa da posio geogrfica e de sua integrao gradual, possuem estruturas irregulares com ligaes heterogneas (ligaes heterogneas entre redes locais). Os principais critrios para a avaliao de uma topologia so o nmero total de ligaes entre componentes, quantas ligaes diretas cada componente possui ( grau do n) e a maior distncia entre dois componentes quaisquer da rede (dimetro). O grau do n pode ser constante ou variar de acordo com o nmero total de ns da rede (por exemplo, em uma rede em forma de estrela).

ERAD 2011 22-25 de maro de 2011 ISBN 2177-0085

50

Fundamentos das Arquiteturas para Processamento Paralelo e Distribudo

Para cada ligao que um componente possui, necessria uma interface fsica correspondente (porta), o que aumenta consideravelmente o custo do componente para muitas ligaes. Em relao ao custo, o melhor caso seria uma rede com um grau de n baixo e constante. A estrutura com a menor conectividade (relao entre o nmero ligaes e o nmero de ns) o anel: Com um grau de n constante igual a 2, o seu custo baixo, mas seu dimetro cresce de forma linear em relao ao nmero total de ns. Se todos os processadores necessitarem trocar dados entre si, pode ocorrer uma sobrecarga do anel, o que acarretaria atraso na transferncia dos dados. Outra desvantagem do anel a falta de caminhos alternativos entre os ns, o que resulta em uma baixa confiabilidade.

O outro extremo, em relao ao anel, a topologia totalmente conectada, com um grau de n igual ao nmero de ns e um crescimento quadrtico do nmero de conexes em relao ao nmero de ns, mas com o dimetro ideal de 1. Outro fator que pode ser decisivo na escolha de uma topologia, alm da relao custo/desempenho, sua adequao a uma classe especfica de algoritmos. No caso ideal, o padro de interconexo da topologia corresponde exatamente ao padro de comunicao da aplicao paralela que executa na mquina. A rvore binria, por exemplo, favorece a execuo de algoritmos de diviso e conquista (divide and conquer). O seu dimetro cresce de forma linear em relao altura h da rvore A(h) e de forma logartmica em relao ao nmero de ns. Outras caractersticas das rvores binrias so o seu grau de n mximo de 3 (a raiz tem grau igual a 2) e sua baixa confiabilidade, j que a falha de um n resulta na perda da ligao com toda a subrvore abaixo dele (particionamento da estrutura). Mesmo que no ocorram falhas, o uso de rvores pode-se tornar problemtico, pois todo o fluxo de dados entre a subrvore esquerda e a direita tem que passar pela raiz, a qual se torna rapidamente o gargalo da rede.

Uma topologia muito utilizada em mquinas paralelas a malha bidimensional M(x,y), podendo ter as bordas no conectadas (a) ou ter bordas conectadas de forma cclica, formando um torus bidimensional (b): O grau do n constante e igual a 4 (se no forem consideradas as bordas da malha), possibilitando facilmente um aumento do nmero de processadores em qualquer uma das dimenses (incluso de linhas ou de colunas) e resultando em uma boa escalabilidade. Malhas no precisam necessariamente ser quadradas como na figura, podendo uma das dimenses ser menor do que a outra, resultando em diferentes

ERAD 2011 22-25 de maro de 2011 ISBN 2177-0085

Philippe O. A. Navaux (Universidade Federal do Rio Grande do Sul), Csar A. F. De Rose (PUCRS), Larcio L. Pilla (Universidade Federal do Rio Grande do Sul) 51

retngulos (o que pode ser vantajoso no caso da escalabilidade, pois permite o aumento do nmero de processadores em mltiplos da menor dimenso).

Figura 28. Redes estticas em malha e em Torus.

O dimetro da malha cresce proporcionalmente raiz quadrada do nmero de ns, e a existncia de caminhos alternativos entre ns aumenta a confiabilidade da rede e diminui o risco de gargalos. Malhas so adequadas aos problemas nos quais uma estrutura de dados bidimensional tem que ser processada de forma particionada. Muitos problemas atuais, que necessitam de grande poder de processamento, possuem essas caractersticas, como, por exemplo, operaes com matrizes, processamento de imagens e equaes diferenciais . Malhas tambm podem ter mais de duas dimenses ( d >2). O grau do n , nesses casos, 2d. Uma ateno especial vem sendo dada s estruturas tridimensionais, pois cada vez mais aplicaes que necessitam de alto desempenho modelam aspectos fsicos do nosso mundo tridimensional. Alguns exemplos so: previso do tempo, simulao de partculas e aerodinmica.

!"("#" )e%es %in*'icas Na interconexo de componentes com redes dinmicas, no existe uma topologia fixa que defina o padro de comunicao da rede. Quando uma conexo entre dois pontos faz-se necessria, a rede de interconexo adapta-se dinamicamente para permitir a transferncia dos dados. Uma rede dinmica dita bloqueante quando uma conexo estabelecida entre dois pontos P1 e P2 impede o estabelecimento de outra conexo entre componentes quaisquer que no P1 e P2. Em uma rede dinmica unilateral, cada componente possui uma ligao bidirecional com a rede. No caso de uma rede dinmica bilateral, cada componente possui uma ligao de envio e outra de recebimento .

ERAD 2011 22-25 de maro de 2011 ISBN 2177-0085

52

Fundamentos das Arquiteturas para Processamento Paralelo e Distribudo

Enquanto as redes estticas vistas at agora so utilizadas na maioria dos casos na interconexo de ns de multicomputadores, redes dinmicas, por sua vez, so tipicamente responsveis pela interligao de processadores com memrias em multiprocessadores. Algumas redes dinmicas so tambm empregadas em multicomputadores. Para facilitar sua anlise, as redes dinmicas foram divididas em trs grupos de acordo com suas caractersticas: Barramento Matriz de chaveamento Redes multinvel

3arramento- Dentre as re"es "in6micas, o /arramento a a!ternativa "e menor custo. Porm, por tratar-se de um canal compartilhado por todas as conexes possveis, tem baixa tolerncia a falhas (baixa confiabilidade) e altamente bloqueante. Sendo assim, acaba tendo sua escalabilidade comprometida, sendo utilizado em multiprocessadores com um nmero moderado de processadores (em torno de 100). As duas deficincias podem ser amenizadas com o uso de vrios barramentos em paralelo. Matriz de Chaveamento: A rede dinmica de maior custo a matriz de chaveamento (crossbar switch), que permite o chaveamento entre dois componentes quaisquer, desde que estes no se encontrem j ocupados. Uma matriz de chaveamento pode ser usada como rede unilateral para ligar processadores a memrias em um multiprocessador (a) ou como rede bilateral para interligar processadores de um multicomputador (b):

Figura 29. Matrizes de chaveamento.

A matriz de chaveamento no bloqueante e tem uma escalabilidade boa, permitindo o acrscimo de componentes aos pares.
ERAD 2011 22-25 de maro de 2011 ISBN 2177-0085

Philippe O. A. Navaux (Universidade Federal do Rio Grande do Sul), Csar A. F. De Rose (PUCRS), Larcio L. Pilla (Universidade Federal do Rio Grande do Sul) 53

O alto custo, que cresce de forma quadrtica em relao ao nmero de componentes interligados, inviabiliza, por razes econmicas, a sua utilizao para a interconexo de muitos processadores. Redes Multinvel: Uma outra aplicao para redes hierrquicas de matrizes de chaveamento a construo de redes de permutao multinvel. A ideia bsica a ligao de pequenas matrizes de chaveamento (normalmente de tamanho 2 2) em vrios nveis consecutivos e conect-las de forma a reduzir a probabilidade de conflitos entre conexes de diferentes pares. Diferentemente das redes estticas, a latncia, nesse tipo de rede, igual para qualquer par comunicante, crescendo, porm, de forma logartmica de acordo com o nmero de possveis conexes. As matrizes chaveadoras presentes na maioria das redes multinvel tm tamanho 2 x 2 e permitem no mnimo 2 e, na maioria das vezes, 4 posies de chaveamento:

Figura 30. Diferentes formas de conexo.

A Figura 31 mostra um exemplo de rede multinvel denominada Banyan:

Figura 31. Rede de Banyan.

O nmero de linhas dado pela metade do nmero de possveis componentes n, o nmero de nveis de log2n, e, no total, (n/2).rede log2n matrizes de chaveamento so utilizadas. Nessa rede, existe apenas um caminho possvel entre uma entrada e uma sada. Sendo assim, a escolha do caminho muito eficiente e pode ser feita de forma descentralizada.

ERAD 2011 22-25 de maro de 2011 ISBN 2177-0085

54

Fundamentos das Arquiteturas para Processamento Paralelo e Distribudo

Porm, por causa dessa falta de redundncia, a rede bloqueante.

3.4.3. Roteamento de Mensagens muito comum que na construo de mquinas paralelas, por motivos de custo, sejam utilizadas redes de interconexo que no possuem ligaes diretas entre todos os componentes de um sistema. Sendo assim, uma mensagem, para chegar ao seu destino, pode precisar trafegar por ns intermedirios. dado o nome de roteamento ao procedimento de conduo de uma mensagem, atravs de ns intermedirios, at seu destino. Todos os ns envolvidos nessa conduo participam do roteamento, identificando se a mensagem j chegou ao seu destino e, se no for o caso, reenviando-a para um prximo n. Fora o n destino, todos os outros ns envolvidos nesse procedimento decidem o caminho seguido pela mensagem atravs da rede de interconexo e so chamados de ns roteadores. Existem duas formas bsicas de conduzir uma mensagem ao seu n destino: Chaveamento de circuito Chaveamento de pacotes

Nas redes de telecomunicaes, tradicionalmente usado o chaveamento de circuito (circuit switching), pelo qual, inicialmente, estabelecido um caminho fixo da origem ao destino, e s depois so enviadas todas as mensagens. Esse estabelecimento de conexo tem naturalmente um custo associado, que, no caso das telecomunicaes, pequeno em relao durao da chamada. Essa forma de roteamento usada por poucas mquinas paralelas, pois a comunicao entre dois ns, nesses casos, tem pouca durao (mensagens pequenas). Sendo assim, o estabelecimento da conexo teria uma representatividade significativa no tempo total de comunicao, e a reserva de circuitos na rede para poucas mensagens subutilizaria os canais reservados e poderia ainda atrasar o estabelecimento de outras conexes.

Mais comum em mquinas paralelas o chaveamento de pacotes (packet switching) onde no existe caminho pr-definido, mas cada mensagem decide, a cada n, qual a direo que ir seguir na rede. Isso elimina o custo inicial de estabelecimento de circuito, mas embute um custo adicional para o roteamento de cada mensagem em cada um dos ns visitados. Duas grandes vantagens do chaveamento de pacotes que tornam esse tipo de roteamento atrativo para mquinas paralelas so a inexistncia de uma reserva de canais da rede para uma nica operao de comunicao e o estabelecimento dinmico do caminho a ser seguido por uma mensagem.

ERAD 2011 22-25 de maro de 2011 ISBN 2177-0085

Philippe O. A. Navaux (Universidade Federal do Rio Grande do Sul), Csar A. F. De Rose (PUCRS), Larcio L. Pilla (Universidade Federal do Rio Grande do Sul) 55

O estabelecimento dinmico do caminho, por sua vez, pode permitir que os algoritmos de roteamento reajam mais rapidamente a congestionamentos e falhas na rede de interconexo, optando por caminhos alternativos.

3.4. Coer5ncia de Cac6e (cache coherence" muito comum que as mquinas paralelas atuais sejam construdas com processadores produzidos em larga escala com o objetivo de reduzir os custos de projeto. Dessa fora as mquinas paralelas com mltiplos processadores acabam por incorporar caches em suas arquiteturas. Porm a presena de caches privadas em multiprocessadores necessariamente introduz problemas de coerncia de cache (cache coherence [Hwanh 1993][Hwang 1998]). Como mltiplas cpias de uma mesma posio de memria podem vir a existir em caches diferentes ao mesmo tempo, cada processador pode atualizar sua cpia local, no se preocupando com a existncia de outras cpias da mesma posio em outros processadores. Se essas cpias existirem, cpias de um mesmo endereo de memria podero possuir valores diferentes, o que caracteriza uma situao de inconsistncia de dados. Outra alternativa para eliminar completamente o problema seria no permitir que dados compartilhados para operaes de escrita sejam colocados nas caches do sistema. Nesse caso, somente instrues e dados privados so cacheable (passveis de serem colocados na cache), e dados compartilhados so considerados noncacheable. O compilador fica responsvel pela colocao da respectiva etiqueta ( tag) nos dados para que os mecanismos de cpia de dados entre os nveis da hierarquia de memria estejam cientes de quais os dados que devem ser repassados diretamente ao processador sem passar pelas caches privadas.

Em multicomputadores, esse problema no ocorre, j que cada n possui uma hierarquia de memria inteira associada sua memria local, e no existe um espao de endereamento global compartilhado por todos os ns. DEFINIO: Uma arquitetura multiprocessada com caches privadas em cada processador coerente se e somente se uma leitura de uma posio x de memria efetuada por qualquer processador i retorne o valor mais recente desse endereo. Ou seja, toda vez que uma escrita for efetuada por um processador i em um endereo de memria x, tem que ser garantido que todas as leituras subsequentes de x, independentemente do processador, forneam o novo contedo de x.

ERAD 2011 22-25 de maro de 2011 ISBN 2177-0085

56

Fundamentos das Arquiteturas para Processamento Paralelo e Distribudo

3.5.1. O problema da inconsistncia de dados imprescindvel que o resultado de um programa composto por mltiplos processos no seja diferente quando o programa roda em vrios processadores, do que quando roda em apenas um, utilizando-se de multiprogramao. Porm, quando dois processos compartilham a mesma memria atravs de caches diferentes, existe o risco de que uma posio de memria, em um determinado momento, no possua mais o valor mais recente desse dado. As causas mais comuns desse tipo de inconsistncia de dados sero detalhadas abaixo e so: Inconsistncia no compartilhamento de dados Inconsistncia na migrao de processos Inconsistncia de E/S 8s processa"ores P1, P2 e P( possuem cac&es priva"as e est1o interconecta"os a uma mem)ria principa! comparti!9a"a atravs "e um /arramento. %!es e*etuam uma sequ7ncia "e acessos 5 posi,1o "e mem)ria u" Inicialmente, P1 tenta ler u de sua cache. Como u no est presente, o dado lido da memria principal e copiado para sua cache. Na sequncia, P3 faz o mesmo, gerando tambm uma cpia de u em sua cache. Ento P3 efetua uma escrita em u e altera o contedo da posio de 5 para 7. Quando P1 efetuar uma leitura de u novamente, ele recebe o contedo da posio u que se encontra em sua cache, ou seja, 5, e no o valor mais recente de u, que 7.

%nconsist5ncia no compartil6amento de dados-

Figura 32. Exemplo de inconsistncia de cache.

Vale destacar que esse problema ocorre independentemente da poltica de atualizao da memria principal utilizada pela cache. No caso de uma poltica de write-through (escrever atravs), em que, a cada escrita na cache, a posio da memria principal atualizada tambm, a alterao de P 3
ERAD 2011 22-25 de maro de 2011 ISBN 2177-0085

Philippe O. A. Navaux (Universidade Federal do Rio Grande do Sul), Csar A. F. De Rose (PUCRS), Larcio L. Pilla (Universidade Federal do Rio Grande do Sul) 57

teria sido repassada tambm memria principal, o que no impediria P 1 de ler o valor menos recente de u de sua cache. Em se tratando da poltica write-back (escrever de volta), a situao seria ainda pior, pois a alterao de P3 teria apenas marcado o bloco de u na cache como sujo (atravs de seu dirty-bit), e a memria principal no seria atualizada imediatamente. Somente em uma eventual substituio desse bloco na cache que a memria principal seria atualizada. Se P2 efetuasse uma leitura em u nesse meio-tempo, copiaria para sua cache o valor menos recente de u (valor 5). %nconsist5ncia na mi/rao de processos- Quando um processo perde o processador por causa de uma operao de E/S, no existe qualquer garantia de que ele v retornar sua execuo no mesmo processador de uma mquina multiprocessada. O escalonador do sistema associar esse processo a um dos processadores livres segundo sua poltica de escalonamento quando a operao de E/S estiver concluda. Isso faz com que, muitas vezes, o processo volte a executar em outro processador perdendo as informaes de sua antiga cache. Inconsistncia de E/S: Problemas de inconsistncia de dados tambm podem ocorrer durante operaes de E/S que faam acesso direto memria principal ( DMA - Direct Memory Access). Operaes de E/S desse tipo tm como origem ou destino memria principal, e no se preocupam se os dados em questo esto sendo compartilhados por vrios processadores, com possveis cpias em diferentes caches privadas. Sendo assim, quando uma controladora de E/S carrega um dado x' (atualizando o valor x que tinha sido escrito na memria principal por write-through) em uma posio da memria principal, ocorre inconsistncia de dados entre x' e as cpias dessa posio de memria nas caches privadas dos processadores P1 e P2 que possuem o antigo valor x. Quando um valor lido da memria principal em uma operao de E/S, e as caches atualizam essa memria com a poltica de write-back, tambm pode ocorrer inconsistncia de dados. Basta, para isso, que o valor atual das cpias dessa posio de memria nas caches privadas dos processadores P1 e P2 ainda no tenha sido substitudo e, portanto, ainda no tenha sido copiado para a memria principal. 3.5.2. Estratgias de coerncia de cache Como vimos at agora, o problema da coerncia de cache resume-se ao fato de que, em um determinado momento, possam existir simultaneamente mltiplas cpias de um mesmo dado da memria principal o qual pode ser alterado localmente sem que se faa algo em relao s outras cpias (o que geraria inconsistncia de dados) Ou seja, o problema de coerncia de cache seria resolvido se essa inconsistncia de dados fosse eliminada. Isso pode ser obtido atravs de duas estratgias bsicas: Uma operao de escrita em uma posio da cache resulta na atualizao de outras cpias desse mesmo dado em outras caches do sistema (write-update).

ERAD 2011 22-25 de maro de 2011 ISBN 2177-0085

58

Fundamentos das Arquiteturas para Processamento Paralelo e Distribudo

Uma operao de escrita em uma posio da cache resulta na invalidao de outras cpias desse mesmo dado em outras caches do sistema (write-invalidate).

As duas estratgias resolvem o problema, impedindo que sejam geradas mltiplas cpias diferentes da mesma posio de memria. A estratgia de invalidao tem um custo menor, mas resulta em uma maior latncia de acesso caso as cpias invalidadas (eliminadas da cache) sejam novamente acessadas, o que resultaria em uma busca na memria principal. A atualizao das cpias tem naturalmente um custo mais alto, especialmente em mquinas com muitos processadores (e muitas cpias potenciais de um mesmo endereo), mas faz com que um novo acesso a essas cpias seja resolvido em nvel de cache (menor latncia). A questo de qual das estratgias acima resulta em melhor desempenho para o sistema como um todo est diretamente ligada ao padro de compartilhamento da carga de trabalho, ou seja, dos programas que executam na mquina: Se os processadores que estavam usando as cpias antes de serem atualizadas fizerem novos acessos a esses dados, o custo das atualizaes vai ter valido a pena. Se os processadores no utilizarem esses dados novamente, o trfego gerado pelas atualizaes s onerou a rede de interconexo e no teve utilidade. Nesse segundo caso, a invalidao eliminaria as cpias antigas e acabaria com uma situao de compartilhamento aparente.

Um fenmeno que onera bastante a estratgia de atualizaes denominado "pack rat". Ele uma consequncia da migrao de processos executada pelo sistema operacional durante a multiprogramao. Quando um processo perde o processador por causa de uma operao de E/S, ele pode voltar a executar em outro processador, dependendo da disponibilidade dos recursos do sistema naquele momento e da poltica empregada pelo escalonador do sistema operacional. Nesse caso, alm de no poder acessar mais os dados de sua antiga cache e ter que busc-los novamente da memria principal, os dados antigos continuam sendo atualizados em vo at que sejam eliminados da cache antiga por alguma poltica de substituio de blocos (como, por exemplo, LRU - Least Recent Used [Stallings 1996], que elimina da cache os blocos menos recentemente usados). Como muito fcil construir casos nos quais uma determinada estratgia vai desempenhar melhor que a outra e vice-versa, alguns autores propem como alternativa que as duas estratgias sejam implementadas em hardware e que o sistema permita a troca entre atualizao e invalidao dinamicamente em tempo de execuo. O momento da troca pode ser: Determinado pelo programador atravs de uma chamada de sistema. Seguir uma certa probabilidade altervel na configurao do sistema. Depender do padro de acesso observado em tempo de execuo.

ERAD 2011 22-25 de maro de 2011 ISBN 2177-0085

Philippe O. A. Navaux (Universidade Federal do Rio Grande do Sul), Csar A. F. De Rose (PUCRS), Larcio L. Pilla (Universidade Federal do Rio Grande do Sul) 59

Referncias
Block, E. (1959) The Engineering design of the STRETCH computer Em: Proceedings of Eastern Joint Computer Conference. [ S.l. : s.n ]. Eckert, J. P. et al. (1959) Design of UNIVAC-LARC system 1, Em: Proceedings of Eastern Joint Computer Conference. [ S.l. : s.n ]. p. 60-65. Hwang, K. e Briggs, F. A. (1985) Computer Architecture and Parallel Processing. [ S.l. ] : McGraw-Hill. Hwang, K. (1993) Advanced Computer Architecture: Parallelism, Scalability, Programmability. [ S.l. ] : McGraw-Hill. Hwang, K. e Xu, Z. (1998) Scalable Parallel Computing: technology, architecture, programming. Boston: WCB. Pilla, M. (2001) Arquiteturas Superescalares: Explorao Dinmica da Previsibilidade e Redundncia de Valores. Exame de Qualificao (Doutorado Cincia da Computao) - Instituto Informtica, UFRGS, Porto Alegre. 92p. Pizzol, G. D. (2002) SimMan: Simulation Manager. Definio e Implementao de um Ambiente de Simulao de Arquiteturas Superescalares para a Ferramenta SimpleScalar. Projeto de Diplomao ( Bacharelado em Cincia da Computao) Instituto de Informtica, UFRGS, Porto Alegre. 64p. De Rose, C. A. F. e Navaux, P. O. A. (2003) Arquiteturas Paralelas, Srie de Livros Didticos, vol. 15, Editora Artmed. Sohi, G. S. e Breach, S. e Vijaykumar, T. N. (1995) Multiscalar Processor. Em: SIGARCH Computer Architecture News, New York, v. 23, n. 2 May 1995. Annual International Symposium on Computer Architecture, ISCA, 22. Smith, J. E. e Sohi, G. S. (1995) The Microarchitecture of Superscalar Processors Em: Proceedings of the IEEE, New York, v. 83, n.12, p. 1609-1624. Stallings, W. (1996) Computer Organization and Architecture: designing performance. Upper Saddle River, Prentice Hall. Von Neumann, J. (1945) First Draft of a Report on the EDVAC. [ S.l. : s.n. ].d for

ERAD 2011 22-25 de maro de 2011 ISBN 2177-0085