7
Paralelismo em Nível de Thread * Eliana Alves Moreira (RA 120437) [email protected] Gerson Nunho Carriel (RA 123789) [email protected] Julián E. Gutiérrez P. (RA 134097) [email protected] RESUMO Nos ´ ultimos anos, os principais fabricantes de processadores come¸ caram a produzir chips comv´ariosn´ ucleos, denominados multicore que, por sua vez, podem suportar mais de uma linha de execu¸c˜ ao (thread ). A tendˆ encia por alguns anos consistiu em aumentar a velocidade indefinidamente em um ´ unico n´ ucleo, mas por raz˜ oes f´ ısicas as pesquisas se voltaram para a utiliza¸ ao de v´ arios n´ ucleos em um processador. O Paralelismo em ıvel de Thread permite que partes espec´ ıficas do programa sejam distribu´ ıdas entre diferentes n´ ucleos e assim possam executar simultaneamente. Existem diferentes formas de implementa¸ ao do paralelismo em n´ ıvel de thread e estas envolvem a maneira como os demais recursos dispon´ ıveis ao utilizados. Este trabalho apresenta uma vis˜ ao geral de como o Power 7 da IBM utiliza os recursos da m´ aquina para formar uma plataforma que suporte o paralelismo em ıvel de thread. Neste trabalho tamb´ em ´ e apresentado um pequeno exemplo da utiliza¸ ao dos cores por uma aplica¸c˜ ao que n˜ ao foi desenvolvida para trabalhar com paralelismo. Categorias e Descritores de Conteúdo C.1.2 [Computer Systems Organization]: PROCESSOR ARCHITECTURES Multiple Data Stream Architectures (Multiprocessors); C.1.4 [Computer Systems Organization]: PROCESSOR ARCHITECTURES Parallel Architectures Termos Gerais Performance Palavras-chave Multicore, Lei de Moore, TLP, IBM Power 7, Thread * Apresentado ao Prof. Dr. Paulo Cesar Centoducatte IC/UNICAMP - Disciplina Arquitetura de Computadores I (MO401) – Universidade Estadual de Campinas – Instituto de Computa¸ ao – Av. Albert Einstein, 1251 - Cidade Universit´ aria – Campinas/SP - Brasil É garantida a permissão para copiar, distribuir e/ou modificar este documento sob os termos da Licença de Documentação Livre GNU (GNU Free Documentation License ), versão 1.3 ou qualquer versão posterior publicada pela Free Software Foundation. A licença está disponível em http://www.gnu.org/copyleft/fdl.html. Este texto foi produzido usando exclusivamente software livre: sistema operacional Linux (distribuições Mint, Debian e Ubuntu), compilador de texto L A T E Xe gerenciador de referências BibT E X. 1. INTRODUÇÃO O paralelismo ´ e o termo utilizado para indicar que uma arquitetura permite arias execu¸ oes simultˆ aneas. De acordo com Thomas Rauber em seu livro “Parallel Programming: for Multicore and Cluster Systems ”[1], o paralelismo tem sido bem utilizado na computa¸ ao cient´ ıfica de alto desempenho em diversas aplica¸c˜ oes, tais como simula¸ oes de clima, desenvolvimento de medicamentos, simula¸ oes de colis˜ ao pela ind´ ustria automotiva, aplica¸ oes em computa¸ ao gr´ afica, entre outras. Ainda segundo [1], nos ´ ultimos anos as pesquisas sobre alto desempenho inclu´ ıram novos desenvolvimentos em tecnologias paralelas de hardware e software, bem como programa¸ ao paralela (descrita brevemente na Se¸ ao 2.2) . Atualmente, os fabricantes de processadores come¸ caram a produzir, por raz˜ oes f´ ısicas, chips, denominados multicore, com v´ arias unidades de computa¸ ao (n´ ucleos ou cores ) [2] ao inv´ es de aumentar a velocidade indefinidamente em um ´ unico n´ ucleo, como foi a tendˆ encia durante alguns anos. Os autores [1] e [2] citam as seguintes raz˜ oes f´ ısicas para esta mudan¸ ca: (a) o aumento do n´ umero de transistores em um chip implica no aumento do consumo de energia e da produ¸ c˜ao de calor; (b) o tempo de acesso de mem´ oria n˜ ao poderia ser reduzido no mesmo ritmo da taxa do per´ ıodo de clock do processador; (c) a velocidade de transferˆ encia de sinal ´ e afetada pelo aumento do comprimento do fio do processador interno para transferir o controle de dados entre as unidades funcionais do processador; (d) a largura de banda entre CPU e mem´ oria principal est´ a limitada pelo o n´ umero de pinos que, por sua vez, est´ a limitado pelo tamanho f´ ısico do chip do processador. A Figura 1 mostra os pinos que constam no Intel Xeon E7. Figura 1: Processador Intel Xeon E7 http://www.memory4less.com/images/ products/Img0922/BX80615E74870-lg.jpg

[Artigo]-Paralelismo Em Nivel de Thread

Embed Size (px)

DESCRIPTION

Pararlelismo em nivel de Thared

Citation preview

  • Paralelismo em Nvel de Thread

    Eliana Alves Moreira(RA 120437)

    [email protected]

    Gerson Nunho Carriel(RA 123789)

    [email protected]

    Julin E. Gutirrez P.(RA 134097)

    [email protected]

    RESUMONos ultimos anos, os principais fabricantes de processadorescomecaram a produzir chipscom varios nucleos, denominados multicore que, por sua vez,podem suportar mais de uma linha de execucao (thread).A tendencia por alguns anos consistiu em aumentar avelocidade indefinidamente em um unico nucleo, mas porrazoes fsicas as pesquisas se voltaram para a utilizacaode varios nucleos em um processador. O Paralelismo emNvel de Thread permite que partes especficas do programasejam distribudas entre diferentes nucleos e assim possamexecutar simultaneamente. Existem diferentes formas deimplementacao do paralelismo em nvel de thread e estasenvolvem a maneira como os demais recursos disponveissao utilizados. Este trabalho apresenta uma visao geral decomo o Power 7 da IBM utiliza os recursos da maquinapara formar uma plataforma que suporte o paralelismo emnvel de thread. Neste trabalho tambem e apresentado umpequeno exemplo da utilizacao dos cores por uma aplicacaoque nao foi desenvolvida para trabalhar com paralelismo.

    Categorias e Descritores de ContedoC.1.2 [Computer Systems Organization]:PROCESSOR ARCHITECTURES Multiple Data StreamArchitectures (Multiprocessors);C.1.4 [Computer Systems Organization]:PROCESSOR ARCHITECTURES Parallel Architectures

    Termos GeraisPerformance

    Palavras-chaveMulticore, Lei de Moore, TLP, IBM Power 7, Thread

    Apresentado ao Prof. Dr. Paulo Cesar CentoducatteIC/UNICAMP - Disciplina Arquitetura de Computadores I(MO401) Universidade Estadual de Campinas Institutode Computacao Av. Albert Einstein, 1251 - CidadeUniversitaria Campinas/SP - Brasil

    garantida a permisso para copiar, distribuir e/ou modificar estedocumento sob os termos da Licena de Documentao Livre GNU(GNU Free Documentation License), verso 1.3 ou qualquer versoposterior publicada pela Free Software Foundation. A licena estdisponvel em http://www.gnu.org/copyleft/fdl.html.Este texto foi produzido usando exclusivamente software livre: sistemaoperacional Linux (distribuies Mint, Debian e Ubuntu), compilador detexto LATEXe gerenciador de refernciasBibTEX.

    1. INTRODUOO paralelismo e o termo utilizado para indicar queuma arquitetura permite varias execucoes simultaneas.De acordo com Thomas Rauber em seu livro ParallelProgramming: for Multicore and Cluster Systems[1], oparalelismo tem sido bem utilizado na computacao cientficade alto desempenho em diversas aplicacoes, tais comosimulacoes de clima, desenvolvimento de medicamentos,simulacoes de colisao pela industria automotiva, aplicacoesem computacao grafica, entre outras. Ainda segundo[1], nos ultimos anos as pesquisas sobre alto desempenhoincluram novos desenvolvimentos em tecnologias paralelasde hardware e software, bem como programacao paralela(descrita brevemente na Secao 2.2) .

    Atualmente, os fabricantes de processadores comecaram aproduzir, por razoes fsicas, chips, denominados multicore,com varias unidades de computacao (nucleos ou cores) [2]ao inves de aumentar a velocidade indefinidamente em umunico nucleo, como foi a tendencia durante alguns anos.Os autores [1] e [2] citam as seguintes razoes fsicas paraesta mudanca: (a) o aumento do numero de transistores emum chip implica no aumento do consumo de energia e daproducao de calor; (b) o tempo de acesso de memoria naopoderia ser reduzido no mesmo ritmo da taxa do perodode clock do processador; (c) a velocidade de transferenciade sinal e afetada pelo aumento do comprimento do fio doprocessador interno para transferir o controle de dados entreas unidades funcionais do processador; (d) a largura debanda entre CPU e memoria principal esta limitada peloo numero de pinos que, por sua vez, esta limitado pelotamanho fsico do chip do processador. A Figura 1 mostraos pinos que constam no Intel Xeon E7.

    Figura 1: Processador Intel Xeon E7http://www.memory4less.com/images/

    products/Img0922/BX80615E74870-lg.jpg

  • Nas ultimas anos, os processadores de ultima geracao vemapresentando incrementos nos numeros de nucleos [1] (fatoprevisto na Lei de Moore1): (2009) dois nucleos (dual-core)e quatro nucleos (quad-core); (2010 2012) oito nucleos(oct-core). Os processadores para servidores, em 2011 -2012, tem apresentado de 10 a 16 nucleos em apenas umchip (Intel Xeon processador E7 e AMD OpteronTM 6282SE, respectivamente). De acordo com um relatorio da Intel[2], em 2015 um tpico chip de processador devera consistirde dezenas e ate centenas de nucleos dedicados para finsespecficos.

    Uma das arquiteturas que implementam o paralelismo e oParalelismo em Nvel de Thread (TLP, do ingles ThreadLevel Parallelism), que envolve o controle de multiplaslinhas de execucao (comumente chamadas de threads) doprocessador, permitindo que partes especficas do programasejam distribudas entre diferentes nucleos e possam serexecutadas simultaneamente.

    Adicionalmente, os usuarios estao interessados em sebeneficiar do aumento de desempenho fornecido pelosprocessadores multicore. Os usuarios podem facilmenteexecutar varias aplicacoes ao mesmo tempo utilizando umnucleo para cada aplicacao. Entretando seria interessanteexecutar uma unica aplicacao utilizando os varios nucleos demodo que estes recursos sejam melhor aproveitados (Figura2). Porem, a aplicacao deveria ser adequadamente escritapara ser executada em varios nucleos.

    Figura 2: Unica aplicacao em varios nucleoshttp://www.devx.com/SpecialReports/Article/40965/1954

    Esta secao apresenta uma breve introducao sobre aspectosque tornam o paralelismo importante para a computacaode alto desempenho, bem como um breve resumo historicosobre a evolucao do mesmo. A secao 2 contemfundamentos teoricos sobre o paralelismo, com destaquepara o paralelismo em nvel de thread (foco deste trabalho)e apresenta um breve exemplo da utilizacao dos nucleos deuma maquina. A secao 3 apresenta os processadores quesuportam o TLP. A secao 4 aprofunda o assunto TLP aoapresentar, de um modo geral, a arquitetura do processadorPower 7 da IBM, dando enfase na coerencia de cache. Asecao 5 apresenta a conclusao.

    2. PARALELISMO1A Lei de Moore e uma observacao emprica, feita porGordon Moore em 1965, afirmando que o numero detransistores de um chip de processador tpico dobra acada 18-24 meses, sendo acompanhado por um aumento navelocidade de clock.

    A evolucao do paralelismo poderia ser resumida em 4nveis, conforme apresentada em [3]: (a) paralelismo emnvel de bits, onde o tamanho da palavra usada pelosprocessadores para operacoes aumentou gradualmente de 4bits a 64 bits; (b) paralelismo por pipelining, onde a ideiade pipelining em nvel de instrucao e uma sobreposicaoda execucao de multiplas instrucoes; (c) paralelismo pormultiplas unidades funcionais, onde muitos processadoressao de emissao multipla e podem trabalhar em paralelo, taiscomo processadores superescalares e processadores VLIW[4]; (d) paralelismo em processo ou em nvel de thread.

    As proximas secoes abordarao principalmente aspectosrelacionados ao TLP, a arquitetura foco deste trabalho.

    2.1 Paralelismo em Nvel de Thread (TLP)A utilizacao de varias linhas de execucao simultaneas recebeo nome de multithreading. Com multithreading e possvelter varios threads compartilhando, de forma intercalada,as mesmas unidades funcionais de um processador, onde oprocessador duplica o estado independente de cada thread[4]. O Paralelismo em Nvel de Thread envolve o controlede multiplas threads do processador, permitindo que partesespecficas do programa sejam distribudas entre diferentesnucleos e possam ser executadas simultaneamente. Um dosparadigmas implementados pelos processadores que usamTLP e o Simultaneous MultiThreading (SMT), que aparececomo uma alternativa para o uso de multithreading e consisteem executar multiplas threads simultaneamente em umou mais nucleos[1]. De acordo com [4], um motivo parautilizar SMT e que uma unica thread de controle geralmentenao fornece suficiente paralelismo em nvel de instrucaopara usar todas as unidades funcionais dos processadoressuperescalares.

    Em multithreading existem duas formas principais derealizar a troca entre as threads: granularidade fina egranularidade grossa, que serao descritas nas secoes 2.1.1e 2.1.2.

    De acordo com pesquisas realizadas [5], quando uma threade colocada em execucao, tem-se alguns limites alcancadosem relacao a` programacao paralela, limites estes que estaorelacionados com a porcao de codigo paralelizavel. Conformepode-se observar na Figura 3, para uma proporcao de 25%de codigo paralelizavel, nao se tem melhoras significativasindependente da quantidade de nucleos. Por outro lado,em um codigo 95% paralelizavel tem-se uma melhorasignificativa quando uma thread e colocada em processadoresde ate 256 nucleos. Qualquer quantidade de processadoresacima de 256 nucleos apresenta melhora insignificante nodesempenho.

    Uma implementacao proprietaria para o SMT e chamadaHyperthreading (HT) para os processadores Intel R. OHT permite que um processador fsico seja dividido em maisprocessadores logicos que compartilham unidades funcionais(Figura 4). Neste caso, o sistema operacional ve e gerenciadois processadores em vez de apenas um processadorfsico. O sistema operacional deve ter suporte para multiplosprocessadores (SMP, do ingles Symmetric Multiprocessing),caso contrario, recomenda-se desabilitar o HT. Nem todosos fabricantes de processadores, como por exemplo AMD,

  • Figura 3: Limites do Paralelismohttps://computing.llnl.gov/tutorials/parallel comp/

    oferecem suporte de HT.

    Figura 4: Hyperthreadinghttp://www.techfrill.com/132/

    hyper-threading-technology-introduction/

    2.1.1 Multithreads com granularidade fina(Fine-grained Multithreads - FMT)

    Uma arquitetura e de granularidade fina quando a trocaentre threads ocorre em curtos espacos de tempo (Figura5), normalmente a cada ciclo de clock. A vantagem destaarquitetura e que, em casos de paradas (stalls) curtas elongas, ela permite ocultar a perda em largura de banda,uma vez que, assim que uma thread entra em stall, instrucoesde outra thread podem ser executadas, sendo mais facilfazer um balanceamento eficiente de carga [6]. Porem, adesvantagem desta arquitetura e que ela atrasa a execucaode threads de forma individual, pois uma thread tera suaexecucao atrasada por instrucoes de outras threads, mesmoque estivesse preparada para ser executada sem stall [4].

    2.1.2 Multithreads com granularidade grossa(Corse-grained Multithreads - CMT)

    Uma arquitetura e de granularidade grossa quando a trocapara uma proxima thread ocorrer pelo fato de a thread queesta em execucao utilizar uma operacao de longa latencia(Figura 6), como por exemplo, o acesso a` memoria principaldevido a um miss cache. Neste tipo de arquitetura o

    Figura 5: Granularidade Fina - FMThttp://www.realworldtech.com/page.cfm?ArticleID=RWT122600000000

    desempenho de uma thread individual e menos afetado.Porem, esta arquitetura possui um pipeline limitado paradespachar instrucoes de uma unica thread e assim, a cadatroca de threads, o pipeline precisa ser esvaziado, e portanto,esta tecnica traz benefcios em casos onde o stall e maisdemorado que o tempo do preenchimento do pipeline [4].Portanto, neste tipo de arquitetura e difcil fazer umbalanceamento eficiente de carga [6].

    Figura 6: Granularidade Grossa - CMThttp://www.realworldtech.com/page.cfm?ArticleID=RWT122600000000

    2.2 Programao Paralela: um complementoPara que haja um maior aproveitamento dos nucleos (esuas respectivas threads) disponveis nos processadores,e necessario que as aplicacoes que serao executadas nosmesmos sejam implementadas para utilizarem estes recursos.A situacao ideal seria que existisse um mecanismo quetransformasse um programa sequencial em um programaparalelo [1]. Um exemplo do mecanismo que poderiaser usado e apresentado em [7]. A experiencia temmostrado que nao e possvel extrair suficiente paralelismoautomaticamente em muitos programas sequenciais [1],devido a` porcao de codigo paralelizavel de cada programa.Por este motivo, a programacao paralela deve se tornara tendencia das tecnicas de desenvolvimento de software,pois programas paralelos podem usar mais eficientemente orecurso disponibilizado [1]. E importante ressaltar que paraalguns programas, os benefcios da tecnologia de multiplosnucleos e significativa, enquanto que para outros nao.

    Para este trabalho foram realizados alguns experimentoscom uma aplicacao para a area estatstica, denominadaR, para que fosse possvel observar como a aplicacaoutiliza a tecnologia multicore. R e um exemplo de umaaplicacao que nao foi projetada inicialmente para tirar todoo proveito da tecnologia multicore. Em sua versao parao Windows 7, somente um core e utilizado na simulacaoque dura cerca de 16 horas, mesmo que exista capacidadepara outros cores. A Figura 7 mostra que este programa,em uma simulacao estatstica, nao usa todos os nucleos

  • durante sua execucao. A Figura 8 mostra todos os coressendo utilizados, porem 4 simulacoes diferentes estao sendoexecutadas simultaneamente.

    Figura 7: Ferramenta R - Uma execucao

    Figura 8: Ferramenta R - Quatro execucoessimultaneas

    Este exemplo serve para evidenciar que e possvel haver umamelhora no desempenho de muitas aplicacoes. Como aspessoas estao interessadas em se beneficiar desta melhora,projetistas tem se esforcado para adicionar o paralelismocomo requisito a` programacao e assim tentar melhorar odesempenho geral das aplicacoes [8].

    3. PROCESSADORESNesta secao sera apresentado um panorama geral dosprocessadores produzidos pela industria, especificamenteaqueles utilizados para construcao de computadores maispoderosos. A Figura 9 mostra a evolucao do uso datecnologia de diversos fabricantes de 1993 ate 2011. Pode-se observar que em 2011 somente 4 fabricantes aindaprevaleciam no mercado: IBM, INTEL, ORACLE (SPARC)e AMD.

    Figura 9: Tecnologia de chiphttp://www.top500.org/static/lists/2011/11/TOP500 201111 Poster.pdf

    PROCESSADOR DATA CORES THREAD

    IBMPower 7[9] 2010 8 32

    Intel R CoreTM i7i7-3960X[10] 2011 6 12

    Intel R Xeon R E7E7-8870[11] 2011 10 20

    OracleSPARC T4[12] 2010 8 64

    AMD PhenomTM II X6Black 1100T[13] 2011 6 6*

    AMD OpteronTM

    6282 SE[14] 2011 16 16*

    Tabela 1: Exemplos de processadores(*) AMD Escalabilidade Nucleo verdade[15](nao suportam a tecnologia Hyperthread)[16]

    Alguns exemplos de processadores destes fabricantes saomostrados na Tabela 1. Os processadores SPARC sao osque suportam o maior numero total de threads, bem comoo maior numero de threads por nucleo, seguido pela IBMPower 7, cujo processador foi tomado como objeto de estudodeste trabalho e sera apresentado na secao 4.

    Uma observacao final realizada nesta Tabela 1 e que osprocessadores AMD nao suportam Hyperthread.

    4. IBM - FAMLIA DE PROCESSADORESPOWER

    A IBM possui uma famlia de processadores denominadosPower [17]. A Figura 10 mostra a evolucao da famlia aolongo dos anos. Em 2001, aparece o processador Power 4o qual e Dual Core e possui multiprocessamento simetricoimplementado em um unico chip (CMP, do ingles ChipMultiprocessing). Em 2004, a IBM lancou o Power 5,que possua como caracterstica de destaque o SMT2, queconsistia em 2 linhas de execucao simultaneas. Em 2007,aparece o processador que a IBM denominou Power 6 onde

  • ainda eram utilizadas 2 threads. Em 2010, a IBM apresentouo Power 7, que possua como caracterstica o SMT4 e queconsistia em 4 linhas de execucao simultaneas.

    Figura 10: Famlia de processadores Power [17]

    Para melhor compreensao das caractersticas da evolucaodos multiprocessadores da IBM, pode-se observar a Figura11, a qual mostra que em 1995 existia apenas um thread. Em1997, pode-se observar que o hardware permitia a execucaode 2 threads separadas. Em 2003 e 2009 ja existia autilizacao de SMT, com 2 e 4 linhas de execucao simultaneas,respectivamente.

    Figura 11: Evolucao de SMT em IBM[18]

    4.1 IBM Power 7O IBM Power 7 suporta 4 threads simultaneas (4-waySMT ), em 8 nucleos (SMP) o que significa um total de32 threads por processador. Ainda, varios processadoresPower 7 podem se interligar para formar um sistema maispotente. Cada um destes nucleos pode ser reconfiguradomanualmente ou automaticamente para fornecer todosseus recursos para menos threads ou para uma unicathread. O Sistema Operacional conhece as caractersticasde desempenho do SMT e pode organizar as threads paraexecutarem sozinhas no core [19]. O Power 7 trabalhabaseado em granularidade fina (FMT ), mencionada naSecao 2.1.1.

    O SMT4 prove uma melhora media no throughput de 1.5X -

    2X vezes mais do que o fornecido quando um thread executasozinho no core [20][19].

    O Power 7, alem da configuracao da quantidade de thread,tambem suporta CUoD (Capacity Upgrade on Demand), quepermite a configuracao da quantidade de nucleos que pode-se realmente querer utilizar [20]. Muitas aplicacoes naoutilizam todos os recursos disponveis e desativar o recursonao utilizado pode ser util para diminuir o consumo deenergia e a emissao de calor na maquina.

    O processador, no melhor dos casos, apresenta uma taxa decinco instrucoes por ciclo (IPC ) com as seguintes unidadesfuncionais (duas de ponto fixo, duas de load/store, quatrode ponto flutuante de dupla precisao, uma de operacoesvetoriais, uma de registrador condicional, uma de branche uma de ponto flutuante decimal) organizadas em [20]:(a) dois pipelines para execucao de instrucoes com acessoa armazenamento; (b) dois pipelines para execucao deinstrucoes aritmeticas nos conteudos dos registradores; (c)um pipeline para instrucoes de desvio.

    As threads em execucao em um processador muitas vezesrequerem o compartilhamento de informacoes. Essecompartilhamento pode ser feito no Power 7, por meio dascaches. O Power 7 suporta um novo tipo de gerenciamentode cache, denominado lateral cast-out. Este projeto decache permite armazenar dados mais antigos dentro da cachede outros cores do mesmo chip, de modo a manter os dadosna cache do chip por um pouco mais de tempo [21].

    Cada core possui sua propria cache de nvel 1 (L1),sendo que esta, por sua vez, possui espaco especfico paradados e especfico para instrucoes, conforme Figura 12.Outra caracterstica apresentada e de que a velocidade defrequencia do processador e o mesma velocidade de acesso a`cache L1. Para o acesso a` cache de nvel 2 (L2), perdem-sepoucos ciclos para o acesso, mas para o acesso a` cache denvel 3 (L3), sao necessarios mais de 50 ciclos [21].

    Figura 12: Armazenamento no Power 7[21]

    4.2 Coerncia de cacheComo os cores podem compartilhar dados entre suas cachesL2, e necessario ter mecanismos para garantir a coerenciaentre os dados. No Power 7 este compartilhamento ecompletamente automatico. Todos os cores recebem umacopia dos mesmos dados e estes existem tambem na memoriafsica. Quando um core, dentre aqueles que possuem cacheL2 compartilhando um determinado dado, faz uma operacaoque modifica o valor atualmente armazenado, o hardwareautomaticamente marca o dado como invalido nas outrascaches L2 que compartilham o dado. Quando ocorre umcache miss , o hardware verifica se o dado e compartilhado e,

  • em caso afirmativo, obtem uma copia do mesmo a partir dacache L2 que tem o dado valido, minimizando a penalidadede miss. Caso nao seja compartilhado, o hardware continuao processamento normal, procurando-o na cache L3. Oseguinte exemplo ilustra uma situacao em que o mecanismoe usado para a coerencia de cache (Figura 13).

    1. Os cores A e B obtem uma copia do mesmo bloco dememoria em suas respectivas caches;

    2. O core A executa uma instrucao store neste bloco, coma intencao que a mudanca permaneca nesta cache;

    3. O proximo acesso do core B a este dado tem aexpectativa de ver a mudanca;

    4. Para assegurar que o core B acesse o novo valor dedado e nao o antigo, o hardware invalida a bloco decache do core B que contem o dado;

    5. O core A agora possui uma versao exclusiva do blocode memoria;

    6. O core B, ao requisitar subsequentemente o bloco dememoria, requisita uma copia do bloco do core A. Bagora possuira uma copia exclusiva por executar umainstrucao que modificara o valor previamente copiado;

    7. O core A acessa o bloco e memoria e obtem uma copiacompartilhada.

    Figura 13: Coerencia de cache[21]

    5. CONCLUSESPode-se observar que os processadores multicore sao o futurodos processadores por razoes fsicas.

    Outro ponto a ser observado e que existem limites reais sobreo aumento do desempenho por meio do paralelismo e, devidoa isso, a programacao paralela e um aspecto que deve vir a

    se tornar a tendencia das tecnicas de desenvolvimento desoftware. Um dos motivos para esta observacao e que aexperiencia da investigacao em paralelizacao tem mostradoque, para muitos programas sequenciais nao e possvelextrair suficiente paralelismo automaticamente, de modoque a melhora no desempenho seja significativa.

    Pesquisas mostraram que nem todas as aplicacoes obtema mesma proporcao de melhora no desempenho quandoexecutadas com paralelismo, pois isto depende diretamenteda quantidade de codigo paralelizavel que a aplicacao possui.

    O TLP permite que os recursos da maquina que estariamociosos durante a execucao de somente uma thread sejamutilizados por outras threads, otimizando, a priori, o sistema.

    Nao existe uma unica forma de implementar TLP, pois osfabricantes o desenvolvem baseados na arquitetura de suasrespectivas maquinas, de modo a utilizar os recursos dasmesmas.

    6. REFERNCIAS[1] Gudula Runger Rauber Thomas. Parallel

    Programming: for Multicore and Cluster Systems.Springer-Verlag Berlin Heidelberg, 3ra edition, 2010.

    [2] David J. Kuck. Platform 2015 software-enablinginnovation in parallelism for the next decade.Technology@Intel Magazine, 2005.

    [3] David Culler, J.P. Singh, and Anoop Gupta. ParallelComputer Architecture: A Hardware/SoftwareApproach. Morgan Kaufmann, 1st edition, 1998.

    [4] David A. Patterson John L. Hennessy. ComputerArchitecture: A Quantitative Approach. ELSEVIER,Morgan Kaufmann Publishers, 4ra edition, 2007.

    [5] Lawrence Livermore National LaboratoryBlaise Barney. Introduction to parallel computing.https://computing.llnl.gov/tutorials/parallel comp/,2012. [Online; acessada 18-Mai-2012].

    [6] Lin Gao. Multithreading.http://www.cse.unsw.edu.au/ cs9244/06/seminars/05-gaol.pdf, 2012. [Online; acessada18-Mai-2012].

    [7] Tianzhou Chen, Xingsheng Tang, Jianliang Ma, LihanJu, Guanjun Jiang, and Qingsong Shi. Single threadprogram parallelism with dataflow abstracting thread.ICA3PP10. Springer-Verlag, Berlin, Heidelberg, 2010.

    [8] RForge provide a colaborative environment forR package developers. Multicore - parallel processingin r on machines with multiple cores or cpus.http://www.rforge.net/multicore/, 2011. [Online;acessada 20-Mai-2012].

    [9] IBM Corporation. Power7 processors: The beat goeson.http://www.ibm.com/developerworks/wikis/download/attachments/104533501/POWER7+-+The+Beat+Goes+On.pdf, 2011. [Online; acessada12-Mai-2012].

    [10] Intel Corporation. Intel R coreTM i7-3960x processorextreme edition.http://www.intel.com/content/www/us/en/processor-comparison/processor-specifications.html?proc=63696,2012. [Online; acessada 12-Mai-2012].

  • [11] Intel Corporation. Intel R xeon R processor e7-8870.http://ark.intel.com/products/53580, 2011. [Online;acessada 12-Mai-2012].

    [12] ORACLE Corporation. Sparc t4 processor.http://www.oracle.com/us/products/servers-storage/servers/sparc-enterprise/t-series/sparc-t4-processor-ds-497205.pdf, 2010. [Online; acessada12-Mai-2012].

    [13] AMD Corporation. Amd phenomTM ii x6 black 1100t.http://products.amd.com/en-us/DesktopCPUDetail.aspx?id=726, 2010. [Online;acessada 12-Mai-2012].

    [14] AMD Corporation. Amd opteronTM 6282 se processor.http://products.amd.com/en-us/OpteronCPUDetail.aspx?id=756, 2011. [Online;acessada 12-Mai-2012].

    [15] HP Hewlett-Packard Development Company. AmdopteronTM and intel R xeon R x86 processors inindustry-standard servers.http://h20000.www2.hp.com/bc/docs/support/SupportManual/C02731435/C02731435.pdf, 2012.[Online; acessada 20-Mai-2012].

    [16] AMD Corporation. Intel hyper-threading vs. amd truecore scalability.http://blogs.amd.com/work/2010/03/30/intel-hyper-threading-vs-amd-true-core-scalability/, 2010. [Online;acessada 12-Mai-2012].

    [17] IBM Corporation. Advances in simultaneousmultithreading testcase generation methods.http://www.research.ibm.com/haifa/conferences/hvc2010/present/Advances in SimultaneousMultithreading Testcase Generation Methods.pdf,

    2011. [Online; acessada 30-Mai-2012].

    [18] Carlo Costantini Volker Haug Cesar Diniz MacielJohn T Schmidt An Ding Chen, James Cruickshank.IBM Power 795: Technical Overview andIntroduction. ibm.com/redbooks, 1ra edition, 2010.

    [19] IBM Corporation. Whats this multi-core computingreally? http://www-03.ibm.com/systems/resources/pwrsysperf WhatIsMulticoreP7.pdf, 2011. [Online;acessada 30-Mai-2012].

    [20] IBM Corporation. Simultaneous multi-threading onpower7 processors. http://www-03.ibm.com/systems/resources/pwrsysperf SMT4OnP7.pdf,2011. [Online; acessada 30-Mai-2012].

    [21] IBM Corporation. Under the hood: Of power7processor caches.http://www-03.ibm.com/systems/resources/ sys-tems power software i perfmgmt underthehood.pdf,2011. [Online; acessada 30-Mai-2012].