Introdução
Várias pesquisas foram desenvolvidas a fim de baratear o custo dos processadores e assim torná-los mais potentes e acessíveis, esse era o objetivo principal. No entanto, para se conseguir um pequeno ganho na capacidade de processamento destes, é necessário um grande investimento em pesquisas. Ainda assim, hoje, tem-se um grande barateamento no preço dos processadores em relação aos anos anteriores. Devido a esse fato, existem novas pesquisas sobre arquiteturas de computadores formados por mais de um processador, objetivando o aumento da produtividade através do paralelismo real de processamentos. Essa nova arquitetura formada por vários processadores, permitem uma maior capacidade de processamento comparada com as arquiteturas que possuem processadores compartilhados.
MULTIPROCESSADORES
Uma das maneiras mais tradicionais de aumentar o desempenho de um sistema computacional é se utilizar de vários processadores, visto que, estes executam instruções em paralelo e podem suportar uma dada carga de trabalho exigido. Multiprocessador é um computador paralelo onde todas as CPUs compartilham uma memória comum, conforme exemplifica a Figura 1. Todos os processos executados ao mesmo tempo em um multiprocessador podem com compartilhar apenas um espaço de endereço virtual mapeado para a memória comum. Cada processo pode ler ou escrever uma palavra de memória executando uma instrução LOAD ou STORE, estas instruções transferem conteúdo da memória para o registrador e vice e versa, o restante é feito pelo hardware e a comunicação entre dois processos é feita quando um escreve um dado para a memória e ou outro o lê e esta é a razão da popularização dos multiprocessadores. São fáceis de se entender no nível de programação e são aplicáveis a uma ampla faixa de problemas existentes.
Figura 1. Multiprocessador com 16 CPUs que compartilham uma memória comum.
O mecanismo de execução das tarefas em um multiprocessador funciona de mudo que todas as CPUs veem a mesma imagem de memória e portanto existe apenas uma cópia do sistema operacional e consequentemente, existe apenas um mapa de páginas e uma tabela de processor, quando um processo é bloqueado, sua CPU salva seu estado nas tabelas do sistema operacional vindo a consulta-las afim de encontrar outro processo a ser executado. Este sistema de imagem única de memória é que distingue um multiprocessador de um
multicomputador, já que no segundo trabalha de modo que cada computador possui sua própria cópia do sistema operacional. Como qualquer computador, os multiprocessador possuem dispositivos de entrada e saída, a exemplo de discos e adaptadores de rede, dentre outros. Em alguns multiprocessador, apenas algumas CPUs possuem acesso aos dispositivos de entrada e saída, possuindo assim função especial de entrada e saída. Entretanto, existem outros em que todas as suas CPUs possuem acesso aos dispositivos de entrada e saída, estes são denominados multiprocessadores simétricos (SMPs). Além dos SMPs existem também outras duas organizações de multiprocessadores, a de agregados, os chamados clusters e mais recentemente os sistemas com acesso nãouniforme à memória (NUMA), que tem sido introduzidos no mercado. Um cluster é um conjunto de computadores completos, interconectados, que trabalham juntos de maneira a serem vistos como um sistema computacional único. Já um sistema NUMA, é um multiprocessador com memória compartilhada em que o tempo utilizado por um de seus processadores para acesso a uma palavra na memória depende da posição desta palavra na memória, ou seja, na sua localização na memória. Com relação a organização de processadores múltiplos a taxonomia utilizada até os dias de hoje é a introduzida por Flynn em 1972, e ela classifica os sistemas de processamento paralelo como:
Única instrução, único dado (SISD – single instruction, single data): Composto de um único processador que executa uma única sequência de instruções e se utiliza de dados armazenados em uma memória também única, denominado uniprocessador; Única instrução, múltiplos dados (SIMD – single instruction, multiple data): caracterizado por possuir instrução única de máquina que controla a execução de vários elementos de processamento ao mesmo tempo, os processadores vetoriais e matriciais são assim caracterizados; Múltiplas instruções, único dado (MISD – multiple instruction, single data): caracterizase por uma sequência de dados que é transmitida para um conjunto de processadores e cada um deles executa uma tarefa diferente, entretanto essa estrutura jamais foi implementada na prática; Múltiplas instruções, múltiplos dados (MIMD): composto por um conjunto de processadores que executa sequencias diferentes de instruções ao mesmo tempo, sobre conjunto de dados distintos. São inseridos nesta categoria os SMPs, clusters e sistemas NUMA.
Na organização MIMD os processadores são de finalidade geral e portanto podem processar todas as instruções necessárias para o tratamento dos dados de maneira apropriada e podem ser subdivididos de acordo com a forma de comunicação entre seus processadores conforme exemplifica a Figura 2.
Figura 2. Exemplificação da taxonomia de arquiteturas com processadores paralelos.
Multiprocessadores Simétricos
(SMPs)
Os sistemas SMPs foram introduzidos aos computadores pelos fabricantes devido a demanda crescente por desempenho e a queda constante do custo dos microprocessadores, pois atém então praticamente todos os computadores continham um único microprocessador de uso geral. SMPs são uma forma de paralelismo em que um grupo de processadores (CPUs) trabalham em conjunto e compartilham uma mesma memória comum através de um mesmo barramento, o que torna possível a qualquer uma das CPUs executar uma etapa da tarefa requerida. Multiprocessadores simétricos executam as tarefas de modo que todos os seus processadores são visto de maneira igualitária, em que cada CPU pode executar a tarefa de uma outra, pois seus processos são divididos de maneira a poderem ser processados em qualquer um dos processadores existentes no multiprocessador. Vários sistemas modernos possuem suporte SMP, a exemplo do Linux, Windows e Mac Os. Estes sistemas costumam possuir alto grau de cooperação entre os processadores, caracterizando uma vantagem deste tipo de multiprocessador, o que vem a melhorar seu desempenho. O fato de qualquer um dos seus processadores ser capaz de desempenhar a mesmas funções faze com que o sistema não pare o que melhora a disponibilidade do sistema e também melhora seu desempenho, além disso novos processadores podem vir a ser inseridos no sistema o que aumenta a funcionalidade de execução de processos pelo sistema, dentre outras vantagens, que podem não ser garantidas, pois dependem de toda a configuração do sistema, uma vez que, o sistema operacional deve prover ferramentas e funções que exploram as características de paralelismo do sistema SMP.
Multiprocessadores Clusters
Clusters são definidos como sistemas que possuem dois ou mais computadores independentes que trabalham de maneira conjunto afim de realizar um grande processamento e são coordenador por um sistema operacional paralelo. As CPUs dividem as tarefas de processamento via troca de mensagens executando-as paralelamente, vindo a trabalhar assim
como um único processador e são usados de acordo com a necessidade ou característica requerida. Uma vantagem dos clusters com relação aos sistemas SMPs é possuir baixo custo, pois o custo de fabricação de um clusters que possua o mesmo desempenho de um SMP é muito mais baixo que a implementação de um SMP, devido a popularização e maior performance das CPUs usadas nos nós dos clusters, além disso na ocasião de uma falha, é possível se fazer a substituição de uma CPU sem que o sistema computacional inteiro seja comprometido, o que não seria possível no sistema SMP, que normalmente tem seu desempenho reduzido nestes casos. Além do mais aumentar o poder de processamento de um cluster é mais fácil que em um SMP, pois as CPUs são interligadas via rede local, o que facilita sua manipulação. Já se falando em desvantagens dos clusters com relação a outros multiprocessadores, podemos citar o fato de os clusters serem conectados usando o barramento de entrada e saída do computador, já os multiprocessadores utilizam o barramento de memória, que possui largura de banda maior e por isso se comunicam de maneira mais rápida que um cluster, além disso o uso do barramento de entrada e saída pode gerar conflitos quando seu uso se torna mais intenso. Outra desvantagem está no fato de um cluster possuir várias memorias independer e várias cópias do sistema operacional, enquanto multiprocessadores compartilham o sistema operacional e assim lidam com apenas uma cópia, pois possuem endereçamento compartilhado através de sua memória comum.
Multiprocessadores NUMA
Outro tipo de sistema multiprocessador conhecido como acesso não-uniforme à memória (NUMA) tem sido objeto de estudo a alguns anos e recentemente teve alguns modelos lançados comercialmente. Existe o sistema de acesso uniforma à memória (UMA), onde todos os processadores possuem acesso a todas as parte da memória principal através de operações de carga e armazenamento, possuindo o mesmo tempo de acesso a memória em todas as suas regiões por um processador, este tipo de configuração já foi discutida e é conhecida como SMP. Nos sistemas NUMA todos os processadores possuem acesso a todas as partes da memória principal, através de operações de carga e armazenamento e seu tempo de acesso à memória por um processador é diferente conforme a região da memória em que está usando. Sistemas NUMA podem ter ou não coerência de cache, se tiver é conhecido como CCNUMA, onde a coerência de cache entre as memorias cache dos vários processadores é mantida, já um NUMA sem coerência de cache é o já mencionado cluster. A abordagem NUMA obtém um multiprocessador em larga escala mantendo o estilo SMP, seu objetivo é manter, de forma transparente, uma visão de uma grande e única área de memória do sistema, permitindo vários multiprocessadores, com barramentos e ou outros sistemas de interconexão independentes. Nesta configuração a coerência de cache é a preocupação fundamental, pois cada nó deve manter uma espécie de diretório, que indica a localização das várias porções da memória e também a informação de estado das caches. Em se tratando de vantagens, a principal vantagem do sistema NUMA é que ele pode possui maior desempenho quando solicitado paralelismos mais altos quando comparado com sistemas SMP, sem que mudanças sejam executadas via software. Sua desvantagem principal é o fato de não se apresentar de forma transparente como um SMP, pois são necessárias modificações de software para se migrar sistemas operacionais e aplicações de um sistema SMP para um sistema NUMA.
Referencias usadas!!! http://www.jairo.pro.br/introd_sist_operac/semana05.pdf http://gse.ufsc.br/~bezerra/disciplinas/arqi/livros/CD_Patterson/Content/COD3e/CDSect ions/CAPITULO-09.PDF http://sistemasmultiprocessadores.blogspot.com.br/
STALLINGS, W. Arquitetura de Sistemas Operacionais. 2ª Edição. Rio de Janeiro: LTC, 1997.pg. 650; TANENBAUM, A. S. Organização Estruturada de Computadores. 5ª Edição. São Paulo: Prentice-Hall, 2007.
Sueyla de Sousa Silva
Multicomputadores
Um multicomputador, ou sistema de memória distribuída é um computador paralelo construído com múltiplos computadores interligados por uma rede na qual cada CPU tem sua própria memória privada, acessível somente a ela mesma e a nenhuma outra CPU, como ilustrado na figura 1.
Figura 1: multicomputador.
Sistema
de
um
O que distingue um multicomputador de um multiprocessador é que cada CPU em um multicomputador tem sua própria memória local privada. Já em um multiprocessador, os processadores compartilham a memória. No caso dos multicomputadores, as informações compartilhadas devem ser trocadas entre os processadores por meio de rotinas de comunicação. Assim, multiprocessadores têm um espaço de endereço físico compartilhado por todas as CPUs, ao passo que um multicomputadores têm um espaço de endereço físico para cada CPU. Uma vez que as CPUs em um multicomputador não podem se comunicar apenas lendo e escrevendo na memória comum, elas precisam de um mecanismo de comunicação diferente. O que elas fazem é passar mensagens uma para a outra usando a rede de interconexão. Entre os exemplos de multicomputadores podemos citar o IBM BlueGene/L, o Red . Storm e o c l u s t e r Google A ausência de memória compartilhada em hardware em um multicomputador tem importantes
implicações para a estrutura do software. É impossível ter um único espaço de endereço virtual do qual e para o qual todos os processos podem ler e escrever de e para toda a memória apenas executando instruções load e store em um multicomputador. Em um multicomputador, a comunicação entre processos costuma usar primitivas de software tais como send e receive. Isso dá ao software uma estrutura diferente e muito mais complicada do que para um multiprocessador. Também significa que subdividir os dados corretamente e posicioná-los em localizações ótimas é uma questão importante em um multicomputador. Não é tão importante em um multiprocessador, pois o posicionamento não afeta a correção ou a programabilidade, embora possa afetar o desempenho. Resumindo, programar um multicomputador é muito mais difícil do que programar em um multiprocessador.
Multicomputadores podem divididos em duas categorias:
ser
(Massively MPP Parallel Processors) - Processadores fortemente paralelos São multicomputadores compostos por um grande número de processadores, fortemente acoplados através de uma rede de alta velocidade. Geralmente são arquiteturas de custo elevado, pois utilizam processadores específicos e redes de interconexão proprietárias. COW(Cluster of Workstations ) -
Clusters de estação de trabalho Também chamadas de NOW (Network of Workstations ), essas máquinas são construídas a partir de computadores comuns (PCs) ligados por redes de interconexão tradicionais. Um cluster é um conjunto de computadores (heterogêneos ou não)
conectadas em rede para o desenvolvimento de processamento paralelo. Ou seja, as máquinas são conectadas via rede para formar um único computador para os clientes com a menor perda de tempo possível. Cada computador de um cluster é denominado nó ou nodo. Todos devem ser interconectados, de maneira a formarem uma rede. A rede precisa ser criada de uma forma que permita o acréscimo ou a retirada de um nó, mas sem interromper o funcionamento do cluster. Quanto ao sistema operacional usado nos computadores, ele deve ser de um mesmo tipo, ou seja, somente Windows, somente Linux, etc. Isso porque existem particularidades em cada sistema operacional que poderiam impedir o funcionamento do cluster. Nos multicomputadores cada processador possui sua memória privativa e canais de comunicação ligados através de redes de interconexão compostas por múltiplos canais bipontuais; as redes de computadores são formadas por computadores independentes interconectados através de redes concebidas como canais de comunicação compartilhados. Os multicomputadores são considerados sistemas fracamente acoplados pelo fato de não possuírem memória compartilhada. Devido a essa característica, alguns autores não fazem distinção entre multicomputadores e redes de computadores, considerando ambos como sistemas fracamente acoplados. Apesar de conceitualmente parecidos, existe uma separação clara quando se considera a relevância dos canais de comunicação que interligam tais arquiteturas. As redes de computadores possuem canais de comunicação compartilhados pelos seus nós processadores, enquanto um multicomputador é constituído de canais de comunicação exclusivos para comunicações bipontuais. Devido a limitações nas velocidades das comunicações, as redes de computadores não se adaptam
perfeitamente a processos que se comunicam intensamente: O gargalo na velocidade de comunicação reduziria o ganho conseguido pelo paralelismo real. A razão tempo de processamento dividido por tempo de comunicação é denominada granularidade de processamento. As redes de computadores e os multicomputadores são sistemas voltados para aplicações com grande ou média granularidade de processamento, enquanto os multiprocessadores são ideais para aplicações com granularidade fina.
Referências
1. TANENBAUM, Andrew S. Capítulo 8.3: Multiprocessadores de Memória Compartilhada. TANENBAUM, Andrew S. Organização estruturada de computadores. 5ª Edição. São Paulo: Pearson Prentice Hall, 2007, 342 – 358. 2. TANENBAUM, Andrew S. Capítulo 8.4: Multicomputadores de Troca de Mensagens. TANENBAUM, Andrew S. Organização estruturada de computadores. 5ª Edição. São Paulo: Pearson Prentice Hall, 2007, 359 – 376. 3. OLIVEIRA, Christyan B.; GÁUDIO, Felipe N. Ordenação de Dados em Disponível em: Memória Externa Utilizando Programação Paralela. UVV. http://www.uvv.br/edital_doc/ORDENA%C3%87%C3%83O%20DE%20DADOS%20EM%20ME M%C3%93RIA%20EXTERNA%20UTILIZANDO%20PROGRAMA%C3%87%C3%83O%20PAR ALELA_6d8f385b-d05c-494a-b805-009b57fcb015.pdf . [06 dez. 2013].