Baixe o app para aproveitar ainda mais
Prévia do material em texto
- -1 ARQUITETURA DE SISTEMAS DISTRIBUÍDOS CLASSIFICAÇÃO DE FLYNN E MODELOS DE PROGRAMAÇÃO - -2 Olá! Nesta aula, estudaremos a classificação de multiprocessadores em relação à quantidade de fluxo de dados e instruções, e em relação ao acesso à memória. Conheceremos, também, algumas características de desenvolvimento de aplicações para as arquiteturas MIMD. Nesta aula, você irá: 1- Definir a classificação de Flynn; 2- Reconhecer as implementações da arquitetura MIMD e as características de desenvolvimento de aplicações para essa arquitetura; 3- Descrever a motivação a partir de alguns modelos de programação paralela. 1 Taxonomia de Flynn Em 1966, Michael J. Flynn propôs uma taxonomia: o primeiro esquema para classificar computadores em configurações de paralelismo crescente. 0 esquema consistia de quatro categorias baseadas em tipos diferentes de fluxos usados por processadores. Um processador aceita dois fluxos: um fluxo de instruções e um fluxo de dados. Veja, a seguir, uma tabela que apresenta a classificação de Flynn para os computadores: - -3 1.1 Computadores de fluxo único de instruções e fluxo clínicode dados - (SISD)Single-Instruction-Stream, Single-Data-Stream Trata-se da classificacao do tipo mais simples: sac) os monoprocessadores tradicionais, nos quais um ark° processador busca uma instrucho por vez e a executa sobre um Unico item de dada. Como exemplos dessa classificacao, podemos citar a arquitetura sequencial e a maquina de Von-Neumann. Tecnicas como a de , a - e a dopipeline da palavra de instrucão muito longa - Very Long Instruction Word (VLIW) projeto superescalar podem introduzir paralelismo em computadores SISD. Alem disso, a tecnologia Hyper-Threading da Intel introduz paralelismo, criando dois processadores virtuais por meio de urn Unico processador fisico, o que da a um sistema operacional habilitado a multiprocessador a impressao de que esteja executando em dois processadores (um a urn) com pouco menos da metade da velocidade do processador fisico. Na técnica de , o caminho de execução de uma instrução é dividido em estágios discretos, o que permitepipeline que o processador processe várias instruções simultaneamente, contanto que, no máximo, uma instrução ocupe cada estágio durante um ciclo de relógio. Já as técnicas VLIW e superescalar emitem, simultaneamente, várias instruções independentes (de um fluxo de instruções), que executam em diferentes unidades de execução. A VLIW depende de um compilador para determinar quais instruções emitir a qualquer ciclo de relógio, enquanto um projeto superescalar requer que um processador tome essa decisão. 1.2 Computadores de fluxo múltiplo de instruções e fluxo único de dados - (MISD)Multiple-Instruction-Stream, Single-Data-Stream Esses tipos de computadores não são usados. Uma arquitetura MISD teria várias unidades de processamento que agiriam sobre um fluxo único de dados. Cada unidade executaria uma instrução diferente nos dados e passaria o resultado para a próxima unidade. 1.3 Computadores de fluxo único de instruções e fluxo múltiplo de dados - (SIMD)Single-Instruction-Stream, Multiple-Data-Stream Esses computadores emitem instruções que agem sobre vários itens de dados. Um computador SIMD consiste em uma ou mais unidades de processamento. - -4 Um processador executa uma instrução SIMD processando-a em um bloco de dados (por exemplo, adicionando esse bloco a todos os elementos de um arranjo). Se houver mais elementos de dados do que unidades de processamento, essas unidades buscarão elementos de dados adicionais para o ciclo seguinte. Isso pode melhorar o desempenho da arquitetura SIMD em relação às arquiteturas SISD, que exigiriam um laço para realizar a mesma operação em um elemento de dados por vez. Um laço contém muitos testes condicionais e requer que o processador SISD decodifique a mesma instrução várias vezes, além de exigir que o processador SISD leia os dados uma palavra por vez. Ao contrário, arquiteturas SIMD leem um bloco de dados por vez, reduzindo dispendiosas transferências da memória para o registrador. Por isso, arquiteturas SIMD são mais efetivas em ambientes em que um sistema aplica a mesma instrução a grandes conjuntos de dados. Como exemplos de computadores que usam uma arquitetura SIMD, podemos citar os processadores vetoriais e os processadores matriciais. Processadores vetoriais Contêm uma unidade de processamento que executa cada instrução vetorial em um conjunto de dados, processando a mesma operação em cada elemento de dado. Esses processadores dependem de pipelines profundos e de altas velocidades de clock. Pipelines profundos permitem que o processador realize trabalho em diversas instruções por vez, de modo que muitos elementos de dados possam ser manipulados de uma só vez. Processadores matriciais Também denominados processadores maciçamente paralelos, contêm diversas unidades de processamento que executam a mesma instrução em paralelo sobre muitos ele-mentos de dados. Os processadores matriciais podem conter dezenas de milhares de elementos de processamento. Portanto, esses processadores são mais eficientes quando manipulam grandes conjuntos de dados. 1.4 Computadores de fluxo múltiplo de instruções e fluxo múltiplo de dados - (MIMD)Multiple-Instruction-Stream, Multiple-Data-Stream Trata-se de multiprocessadores, nos quais as unidades processadoras são completamente independentes e operam sobre fluxos de instruções separados. Entretanto, esses sistemas normalmente contêm hardware que permite que os processadores se sincronizem uns com os outros quando necessário, como no caso de acessarem um dispositivo periférico compartilhado. Essa classe foi subdividida em sistemas fortemente acoplados e fracamente acoplados. - -5 2 Esquemas de interconexão de processadores O esquema de interconexão de um sistema multiprocessador descreve de que modo os componentes do sistema (como, por exemplo, um processador e módulos de memória) são conectados fisicamente. O esquema de interconexão é uma questão fundamental para projetistas de multiprocessadores, porque afeta o desempenho, a confiabilidade e o custo do sistema. Um sistema de interconexão consiste de (compostos denós componentes do sistema ou de chaves que fazem o roteamento das mensagens entre componentes) e enlaces (conexão entre dois nós) Em muitos sistemas, um único nó pode conter um ou mais processadores, seus caches associados, um módulo de memória e uma chave. Em multiprocessadores de grande escala, às vezes, abstraímos o conceito de nó e indicamos um grupo de nós como um único supernó. Uma técnica para medir a tolerância à falha de um esquema de interconexão é contar o número de enlaces de comunicação que devem falhar antes que a rede não possa mais funcionar adequadamente. Isso pode ser quantificado por meio da largura de (número mínimo de enlaces que precisam ser cortados parabisseção dividir a rede em duas metades não conectadas). Sistemas que têm larguras de bisseção maiores são mais tolerantes à falha do que aqueles que têm larguras de bisseção menores, pois mais componentes têm de falhar antes que o sistema inteiro tenha problemas. O desempenho de um esquema de interconexão depende, em grande parte, da latência de comunicação entre nós, que pode ser medida de várias maneiras, como, por exemplo, por meio da latência média. Outra medição de desempenho é o (distância mais curta entre os dois nós mais remotos dodiâmetro da rede esquema de interconexão). Para determiná-lo, você deve considerar todos os pares de nós da rede e identificar o caminho de comprimento mais curto para cada par calculado pela soma do número de enlaces percorridos. Só então, você identificará o maior desses caminhos. Um diâmetro de rede pequeno indica baixa latência de comunicação e desempenho mais alto. Por fim, arquitetos de sistemas tentam minimizar o custo de um esquema de interconexão, semelhante ao número total de enlaces de uma rede. Saibamais Clique aqui e conheça agora alguns esquemas de interconexão de processadores: http://estaciodocente.webaula.com.br/cursos/gra257/docs/esquemas_inter_processadores. pdf http://estaciodocente.webaula.com.br/cursos/gra257/docs/esquemas_inter_processadores.pdf http://estaciodocente.webaula.com.br/cursos/gra257/docs/esquemas_inter_processadores.pdf - -6 3 Arquiteturas de acesso à memória Veja, a seguir, uma figura que representa a classificação das arquiteturas segundo o acesso à memória: 3.1 Acesso uniforme à memória - UMA Arquiteturas de multiprocessadores com acesso uniforme à memória - Uniform Memory Access multiprocessor (UMA) - requerem que todos os processadores compartilhem a memória principal do sistema. Essa é uma extensão direta da arquitetura de memória de um monoprocessador, mas com vários processadores e módulos de memória. O tempo de acesso à memória é uniforme para qualquer processador que acessar qualquer item de dado, exceto quando esse estiver armazenado no cache de um processador ou quando houver contenção no barramento. Saiba mais Clique aqui e saiba mais: http://estaciodocente.webaula.com.br/cursos/gra257/docs/UMA.pdf http://estaciodocente.webaula.com.br/cursos/gra257/docs/UMA.pdf - -7 3.2 Acesso não uniforme à memória - NUMA Arquiteturas de multiprocessador de acesso não uniforme à memória - (NUMA)NonUniform Memory Access mantêm uma memória global compartilhada, que pode ser acessada por todos os processadores. A memória global é fracionada em módulos, e cada nó usa um desses módulos de memória como a memória local do processador. Cada nó contém um processador, mas isso não é uma exigência. Embora a implementação do esquema de interconexão possa variar, os processadores são conectados diretamente a seus módulos de memória local e conectados indiretamente ao restante da memória global. Esse arranjo proporciona acesso mais rápido à memória local do que ao restante da memória global, porque o acesso à memória global requer que se percorra a rede de interconexão. 3.3 NUMA com cache coerente (CC-NUMA) NUMAs com cache coerente (CC-NUMAs) sâo multiprocessadores NUMA que im-pôemCache Coherent NUMAS coerência de cache. Em uma arquitetura CC-NUMA típica, cada endereço de memória física está associado a um nó nativo, responsável por armazenar o item de dado com aquele endereço de memória principal. Muitas vezes, o nó nativo é simplesmente determinado pelos bits de ordem mais alta do endereço. Saiba mais Clique aqui e saiba mais: http://estaciodocente.webaula.com.br/cursos/gra257/docs/NUMA. pdf Saiba mais Clique aqui e saiba mais: http://estaciodocente.webaula.com.br/cursos/gra257/docs/CC- NUMA.pdf http://estaciodocente.webaula.com.br/cursos/gra257/docs/NUMA.pdf http://estaciodocente.webaula.com.br/cursos/gra257/docs/NUMA.pdf http://estaciodocente.webaula.com.br/cursos/gra257/docs/CC-NUMA.pdf http://estaciodocente.webaula.com.br/cursos/gra257/docs/CC-NUMA.pdf - -8 3.4 Arquitetura de memória somente de cache - COMA Em um sistema NUMA, cada nó mantém sua própria memória local, cujo acesso pode ser feito por processadores de outros nós. Muitas vezes, o acesso à memória local é radicalmente mais rápido do que o acesso à memória global (ou seja, o acesso a outrc nó da memória local). A latência de falta de cache ( ), que é o tempo requerido para recuperar dados que não estãocache-miss latency no cache, pode ser significativa quando o dado requisitado não estiver presente na memória local. Um modo de reduzir a latência de falta de cache é reduzir o número de requisições de memória atendidas por nós remotos. Os multiprocessadores de arquitetura de memória somente de cache - (COMA)Cache Only Memory Architecture usam uma ligeira variação da NUMA para abordar essa questão do posicionamento da memória. 3.5 Sem acesso à memória remota - NORMA Multiprocessadores sem acesso à memória remota - (NORMA) - sãoNo Remote Memory Access multiprocessadores fracamente acoplados que não fornecem nenhuma memória global compartilhada. Cada nó mantém sua própria memória local, e multiprocessadores NORMA implementam, frequentemente, uma memória virtual compartilhada comum (SVM).Shared Virtual Memory Saiba mais Clique aqui e saiba mais: http://estaciodocente.webaula.com.br/cursos/gra257/docs/COMA. pdf Saiba mais Clique aqui e saiba mais: http://estaciodocente.webaula.com.br/cursos/gra257/docs/NORMA. pdf http://estaciodocente.webaula.com.br/cursos/gra257/docs/COMA.pdf http://estaciodocente.webaula.com.br/cursos/gra257/docs/COMA.pdf http://estaciodocente.webaula.com.br/cursos/gra257/docs/NORMA.pdf http://estaciodocente.webaula.com.br/cursos/gra257/docs/NORMA.pdf - -9 4 Programação distribuída A programação distribuída pode ser: • Sequencial: Composta por um conjunto de instruções que são executadas sequencialmente. • Concorrente: Permite execução concorrente de tarefas dentro de um mesmo processo ou entre processos que compartilham recursos. • Paralela: Pressupõe a existência de mais de uma CPU, pois é destinada à execução simultânea de tarefas de um mesmo processo. 5 Execução de uma tarefa Existem três maneiras de executar uma tarefa de forma mais rápida, quais sejam: Aumento da velocidade da CPU Algumas limitações estão associadas à aquisição de CPUs com maior poder de processamento, como o aumento de seu custo e a previsão para a velocidade dos processadores duplicarem a cada 18 meses (Lei de Moore), que tem sido mantida até os dias atuais. Mesmo com o aumento da frequência das CPUs, há a possibilidade de essas não atenderem à solução de alguns problemas. Otimização do algoritmo Geralmente, conseguimos aumentar o desempenho de um sistema com a melhora do algoritmo. Entretanto, esse sistema pode ser comprometido quando não há uma solução determinística para o problema. Colaboração Quando pensamos em trabalhar com colaboração, devemos atentar para a diferença entre paralelismo e concorrência. Veja: • Paralelismo - Execução de uma tarefa em mais de uma CPU (os processadores colaboram para execução dessa tarefa); • Concorrência – Os processos disputam CPUs (uma ou mais). 6 Aspectos técnicos da programação distribuída Veja alguns aspectos técnicos da programação distribuída: • Interação da aplicação e do usuário com o ambiente distribuído em níveis diferentes; • Suporte a plataformas heterogêneas através de uma camada de entre o kernel e a aplicação (software );middleware • Problemas como custo e carência de produtos de adequados; software • Programação paralela, utilizando bibliotecas de troca de mensagem (como, por exemplo, o MPI e o PVM) ou bibliotecas baseadas em memória compartilhada (como, por exemplo, ).Pthreads • • • • • • • • • - -10 A troca de mensagens ( ) é o método de comunicação baseada no envio e recebimento demessage passing mensagens através de uma rede de computadores, seguindo regras de protocolo de comunicação entre vários processadores que possuam memória própria. Os processos possuem acesso à memória local. As informações, por sua vez, são enviadas da memória local do processo à memória local do processo remoto. Nesse modelo, o programador é responsável pela sincronização das tarefas. O que vem na próxima aula Na próxima aula, você estudará sobre os seguintes assuntos: • Introdução aos modelos de comunicação e a arquitetura cliente/servidor; • O que é um modelo e quais são as características dos modelos arquitetural e fundamental; • Fundamentos e características de cada componente do modelo cliente/servidor. CONCLUSÃO Nesta aula, você: • Conheceu a classificação de multiprocessadores em relação à quantidade de fluxo de dados e instruções, e em relação ao acesso à memória; • Verificou o desenvolvimento de aplicações para as arquiteturas MIMD. Saiba mais Clique aqui e conheça, a seguir, os exemplos citados de bibliotecas de troca de mensagem e bibliotecas baseadas em memória compartilhada: http://estaciodocente.webaula.com.br/cursos/gra257/Aula_04.htm • • • • • http://estaciodocente.webaula.com.br/cursos/gra257/Aula_04.htmOlá! 1 Taxonomia de Flynn 1.1 Computadores de fluxo único de instruções e fluxo clínicode dados - Single-Instruction-Stream, Single-Data-Stream (SISD) 1.2 Computadores de fluxo múltiplo de instruções e fluxo único de dados - Multiple-Instruction-Stream, Single-Data-Stream (MISD) 1.3 Computadores de fluxo único de instruções e fluxo múltiplo de dados - Single-Instruction-Stream, Multiple-Data-Stream (SIMD) 1.4 Computadores de fluxo múltiplo de instruções e fluxo múltiplo de dados - Multiple-Instruction-Stream, Multiple-Data-Stream (MIMD) 2 Esquemas de interconexão de processadores 3 Arquiteturas de acesso à memória 3.1 Acesso uniforme à memória - UMA 3.2 Acesso não uniforme à memória - NUMA 3.3 NUMA com cache coerente (CC-NUMA) 3.4 Arquitetura de memória somente de cache - COMA 3.5 Sem acesso à memória remota - NORMA 4 Programação distribuída 5 Execução de uma tarefa 6 Aspectos técnicos da programação distribuída O que vem na próxima aula CONCLUSÃO
Compartilhar