• Nenhum resultado encontrado

UNIDADE 4 ARQUITETURAS CONVENCIONAIS E NÃO CONVENCIONAIS MÓDULO 1 MÁQUINAS SEQUENCIAIS, MÁQUINAS RISC E CISC 1 - MÁQUINAS SEQUENCIAIS DE VON NEUMANN

N/A
N/A
Protected

Academic year: 2021

Share "UNIDADE 4 ARQUITETURAS CONVENCIONAIS E NÃO CONVENCIONAIS MÓDULO 1 MÁQUINAS SEQUENCIAIS, MÁQUINAS RISC E CISC 1 - MÁQUINAS SEQUENCIAIS DE VON NEUMANN"

Copied!
57
0
0

Texto

(1)

UNIDADE 4–ARQUITETURAS CONVENCIONAIS E NÃO CONVENCIONAIS

MÓDULO 1–MÁQUINAS SEQUENCIAIS, MÁQUINAS RISC E CISC

01

1-MÁQUINAS SEQUENCIAIS DE VON NEUMANN

Durante o estudo deste módulo falaremos sobre a importância das chamadas máquinas sequenciais de von Neumann para computação. Falaremos também sobre as máquinas não von Neumann e

finalizaremos decorrendo sobre as características das arquiteturas RISC e CISC, bem como de projetos recentes utilizando o melhor de cada uma dessas arquiteturas.

No início de nosso estudo sobre arquitetura e organização de computadores, começamos a ver o que é um sistema computacional, a importância dos seus componentes, que são memórias, processadores, dispositivos de E/S (entrada e saída) e meios de interconexão. No decorrer do nosso curso também tivemos oportunidade de estudar que componentes do processador, como controladores, registradores e coprocessadores, possuem um conjunto de instruções que operam sobre instruções e dados obtidos e armazenados externamente e organizados em palavras. Vimos que Memórias são formadas

basicamente pela MP (memória principal) e MS (memória secundária), que o valor (custo) associado à memória está diretamente relacionado à sua velocidade de operação e capacidade de armazenamento.

Os dispositivos de E/S (entrada e saída) são os que representam fisicamente os dados e são geralmente mais lentos em comparação ao processador. Os meios de interconexão são os responsáveis pela comunicação entre os componentes por meio dos barramentos que estão sob seu controle. Um dos problemas que ocorrem é a disputa pelo uso simultâneo dos recursos compartilhados.

02 O resumo que acabamos que ver tem como intuito relembrar conceitos que já estudamos. Para você ter um rendimento melhor nos estudos é necessário compreender que estes conceitos constituem a base teórica para entendermos que, tendo por referência o relacionamento e a organização dos

componentes de um sistema computacional, poderemos classificar as máquinas que têm por base von Neumann e as máquinas chamadas de não von Neumann.

Vimos a evolução da computação ao longo do tempo e também vimos que o cientista John von Neumann foi um dos principais estudiosos da matemática, física, meteorologia, economia e computação do século XX.

Ele nasceu na Hungria, na cidade de Budapeste no ano de 1903 e faleceu em 1957. Para a área de TI, von Neumann, é o responsável pela estrutura clássica dos computadores digitais que armazenam programas na

memória e geram outros programas.

Ele também contribuiu de maneira importante na arquitetura de

computadores, na análise de algoritmos, nos princípios de programação, na computação científica, na análise numérica, nas redes neurais, na

(2)

teoria dos autômatos e tolerância a falhas.

03 Uma característica básica da máquina von Neumann é sua composição. Esta é feita a partir de três subsistemas básicos, que são: CPU ou UCP, memória principal e sistema de E/S. Observe a figura abaixo:

Vale a pena relembrar que a UCP (Unidade Central de Processamento) é formada pelos seguintes componentes: unidade de controle (UC), unidade Lógico Aritmética (ALU) e registradores.

04

Podemos destacar que dentre as características principais das máquinas de von Neumann estão:

• o programa armazenado em memória,

• existência de um único caminho entre memória e a UC (unidade de controle)

• e a execução sequencial de instruções.

Há uma sequência de ciclos do modelo da máquina de von Neumann que são a execução de um programa que faz uma busca da instrução (fetch), que nada mais é que uma transferência da instrução da posição de memória para a UCP, e a execução da instrução propriamente dita, que consiste na decodificação da instrução feita pela UC (Unidade de Controle) e a gerência dos passos para sua execução pela Unidade Lógica Aritmética (ULA).

Outro modelo básico de máquinas von Neumann são as máquinas conhecidas como “máquinas de Harvard”. A diferença dos modelos pode ser observada pela existência de vias separadas para dados e

(3)

instruções entre a MP e UCP, conforme pode ser visualizado na figura abaixo. A origem do termo

“Máquinas de Harvard” surgiu durante a criação dos computadores Mark I a Mark IV, desenvolvidos em Harvard, que tinham como característica possuir instruções e memórias de dados separadas.

Mark I

Chamado de Mark I (ASCC - Automatic Sequence Controlled Calculator) pela Universidade de Harvard, este foi o primeiro computador eletromecânico automático de larga escala desenvolvido nos EUA.

Construído em 1944 num projeto da Universidade de Harvard em conjunto com a IBM.

(Fonte: http://pt.wikipedia.org/wiki/Harvard_Mark_I).

Saiba+

O Harvard Mark I, também conhecido como “Harvard-IBM Automatic Sequence Controlled Calculator”, foi concluído em 1944 pelo renomado engenheiro de computação Howard H. Aiken, tendo tido a contribuição e ajuda de uma equipe de engenheiros da IBM, que eram chefiados por Clair D. Lake. O Mark I teve apoio e financiamento da IBM (International Business Machines), bem como, da marinha americana. O projeto começou no ano de 1937 e o objetivo era construir um computador que ajudasse na construção de novas armas, no cálculo de trajetórias de artilharia e também decodificar os códigos secretos do inimigo. O Mark I era muito pesado, chegava a ter aproximadamente 5 toneladas e era composto por setenta e oito máquinas calculadoras, que eram controladas por dispositivos mecânicos e elétricos. O computador era operado por meio de uma fita de papel, na qual se armazenavam, por meio de perfurações, as instruções codificadas. Uma vez inserido o programa, o computador iniciava os cálculos. O Mark I teve sua utilidade voltada para fins militares e também foi utilizado no

desenvolvimento da bomba atômica. Entre 1947 e 1952, o cientista Howard Aiken construiu versões melhoradas do Mark I, os Mark II, III e IV.

(4)

05

2-MÁQUINAS NÃO VON NEUMANN

As máquinas que não seguem o modelo de von Neumann são chamadas de máquinas “não von Neumann”. Porém, não quer dizer que esse modelo seja contra ou antagônico ao modelo de von Neumann, mas uma categoria um pouco mais ampla, em que incluímos os sistemas computacionais chamados de:

06

3-AVALIAÇÃO DE DESEMPENHO

Em virtude de haver um número grande de alternativas para a organização de um computador, é necessário haver mecanismos que possibilitem a realização de uma avaliação de cada arquitetura. Para isso, algumas medidas básicas de avaliação são necessárias. Atualmente o desempenho está associado à velocidade de execução das instruções básicas representadas em MIPS (milhões de instruções por segundo) e por flops. Outra maneira é a velocidade de execução de programas representativos das aplicações em benchmarks (teste para avaliação de performance na execução de um programa).

Quando avaliamos o custo de um determinado componente precisamos nos atentar aos parâmetros que mais influenciam o valor final que são: número de pinos, área de chip e número de chips por sistema.

Quando você resolve adquirir um laptop ou um notebook pode utilizar como parâmetro o tamanho, pois para você um item importante é a facilidade de transporte e uso em viagens.

Será muito difícil avaliar um sistema de maneira isolada, geralmente a comparação básica que fazemos é o custo e desempenho, que tenha um preço justo e um desempenho aceitável, que possamos assistir a um filme em HD ou jogar determinado game. Aliás, quando falamos em jogos, o fator desempenho

(5)

ganha um vulto maior, pois dependendo do jogo haverá uma alta exigência de recursos como

processador, memória, placa de vídeo dedicada, capacidade de armazenamento e etc. Vamos usar como exemplo uma propaganda sobre as especificações e vantagens de adquirir um notebook da Marca XYZ:

“Você pode assistir a um filme de sucesso ou bater um recorde em um jogo sem problemas, pois a 4ª Geração dos Processadores XYZ oferece bateria de longa duração e uma experiência visual

surpreendente para você aproveitar ao máximo seus aplicativos e jogos favoritos...”

Sendo assim, o mais importante é o entendimento da necessidade e do emprego de determinada arquitetura.

FLOPS

Flop(s) é um acrônimo na computação que significa FLoating-point Operations Per Second, que, em português, quer dizer operações de ponto flutuante por segundo. Isto é usado para determinar o desempenho de um computador, especificamente no campo de cálculos científicos, que fazem grande uso de cálculos com ponto flutuante; similar a instruções por segundo.

(Fonte: http://pt.wikipedia.org/wiki/FLOPS)

07 Arquitetura de alto desempenho

Um projeto de um sistema com arquitetura de alto desempenho só é possível alterando os algoritmos para melhor ajustar à organização do sistema. Há outros casos em que apenas mudanças na organização básica do sistema também serão necessárias. Dependendo da arquitetura, será mais adequado o uso de paralelismo.

No processo de definição de arquitetura torna-se necessário observar alguns questionamentos:

- Qual será o tempo necessário para execução de um conjunto de programas de determinada aplicação?

- Qual será o espaço necessário para o armazenamento de um conjunto de programas ou dados?

- Qual será o uso efetivo dos diversos componentes do sistema?

Diante destas perguntas chegamos à conclusão de que não há uma resposta simples. Essas perguntas exigem uma análise mais ampla, abrangendo o teste com programas (softwares) que exijam

Benchmark

Em computação, benchmark é o ato de executar um programa de computador, um conjunto de programas ou outras operações, a fim de avaliar a performance relativa de um objeto, normalmente executando uma série de testes padrões e ensaios. (Fonte: http://pt.wikipedia.org/wiki/Benchmark).

Tamanho

No caso do tamanho, a avaliação está nas características físicas, exemplo: peso, volume, facilidade de transporte e consumo de energia. Você também poderá considerar outro fator, por exemplo: para estudar.

(6)

determinada resposta do sistema computacional. Por meio destes testes será possível desenvolver projetos computacionais com arquitetura de alto desempenho identificando e retirando os possíveis

“gargalos” do sistema. Estes “gargalos” limitam o desempenho como um todo.

Paralelismo

O paralelismo ou também chamado de ILP (Paralelismo em nível de instrução) é uma técnica utilizada no desenvolvimento de processadores e compiladores que melhoram (aumentam) o desempenho dos computadores, fazendo que operações como multiplicações de ponto flutuante, adição de inteiros, escrita e leitura de memória sejam executadas em paralelo. No nível de instruções, o paralelismo é muito utilizado por arquiteturas de processadores que possuem a capacidade de operar dados ou executar instruções em paralelo.

08

4-ARQUITETURA RISC

Tendo por objetivo melhorar a performance, estudos sobre o comportamento da execução de programas em linguagens de alto nível visam orientar o projeto de um novo tipo de arquitetura para processadores, o chamado computador com conjunto reduzido de instruções(Reduced Instruction Set Computes), também conhecido como arquitetura RISC.

Trata-se de uma linha de arquitetura de processadores que favorece um conjunto simples e pequeno de instruções que levam aproximadamente a mesma quantidade de tempo para serem executadas.

Trata-se de uma linha de arquitetura de processadores que favorece um conjunto simples e pequeno de instruções que levam aproximadamente a mesma quantidade de tempo para serem executadas.

Desde o surgimento e desenvolvimento do 1º computador que utilizava a memória para

armazenamento dos programas, na década de 1950, não houve tantas mudanças significativas na área de Arquitetura de Organização de Computadores. Podemos destacar que os maiores avanços foram:

(7)

Linguagem de alto nível

Linguagem com um nível de abstração relativamente elevado, longe do código de máquina e mais próximo à linguagem humana. Desse modo, as linguagens de alto nível não estão diretamente

relacionadas à arquitetura do computador. O programador de uma linguagem de alto nível não precisa conhecer características do processador, como instruções e registradores. Essas características são abstraídas na linguagem de alto nível.

(Fonte: http://pt.wikipedia.org/wiki/Linguagem_de_programa_de_alto_nivel)

09 Conforme vimos na lista anterior, é possível adicionar uma inovação muito interessante na arquitetura de computadores que é chamada deconjunto reduzido de instruções (RISC). Essa arquitetura (RISC) mudou as tendências da época na arquitetura de computadores.

Mesmo que o sistema RISC tenha sido definido de muitas maneiras por grupos diferentes de projetistas, a maioria segue os seguintes elementos básicos:

• Foco em otimizar o pipeline de instruções;

• Número grande de registradores com o propósito geral ou o uso de tecnologias de compilação que otimizam o uso de registradores;

• Conjunto de instruções limitado e simples.

Uma das maneiras de evidenciar a evolução das linguagens de programação foi também a evolução dos computadores. Com a diminuição do valor (custo) do hardware, houve um aumento do software. Isso ocorreu devido à diminuição do número de programadores disponíveis para o desenvolvimento de

(8)

programas. Sendo assim, o preço do software passou a ser maior, no ciclo de vida de um sistema, do que o do hardware. Além de apresentar um custo elevado, o software, geralmente, apresenta bugs, o que diminui a confiança. Infelizmente é comum nos depararmos com situações que programas ou aplicações apresentam erros inexplicáveis mesmo após vários anos de uso.

Bugs

Bug em inglês quer dizer “defeito”, é um erro no funcionamento de um software ou mesmo do hardware, também chamado de falha na lógica de um programa. Pode vir a causar comportamentos inesperados, como resultado incorreto ou comportamento indesejado. São geralmente causados por erros no próprio código-fonte (código desenvolvido pelo programador).

(Fonte: http://pt.wikipedia.org/wiki/Bug)

10

5-ARQUITETURA CISC

Há também a arquitetura CISC - Complex Instruction Set Computer, ou Computador com um Conjunto Complexo de Instruções.

É uma linha de arquitetura de processadores capaz de executar centenas de instruções complexas diferentes sendo, assim, extremamente versátil.

Havia uma tendência para o uso de conjuntos de instruções cada vez mais ricas, incluindo um grande número de complexas instruções. Essa tendência teve por motivação duas grandes razões: desejo de otimizar o desempenho e o desejo de simplificação dos compiladores.

Essas razões tinham por fundamentação a adoção da linguagem de alto nível nas atividades de

programação; os projetistas de computadores almejavam projetar máquinas que oferecessem o melhor suporte possível para as linguagens de alto nível.

Não será nosso objetivo questionar o que motivou alguns projetistas de computadores adotarem a técnica CISC. O importante é o entendimento que a tecnologia não para, como na canção do Cazuza “o tempo não para”, a TI também não para. Atualmente, para a TI, as tecnologias ficam obsoletas em um curto prazo de tempo. Consequentemente, as arquiteturas existentes variam dentro de um espectro, não podendo ser classificadas em apenas duas categorias, RISC ou CISC, pois é pouco provável que algum dia haja uma conclusão sobre o tipo de abordagem mais adequada, se uma arquitetura com reduzido número de instruções (RISC) ou se a arquitetura com um complexo conjunto constituído de grande quantidade de instruções (CISC).

Compilador

É um programa de sistema que traduz um programa descrito em uma linguagem de alto nível para um programa equivalente em código de máquina para um processador. Em geral, um compilador não produz diretamente o código de máquina, mas sim um programa em linguagem simbólica (assembly) semanticamente equivalente ao programa em linguagem de alto nível. O programa em linguagem simbólica é então traduzido para o programa em linguagem de máquina através de montadores.

(9)

(Fonte: http://www.dca.fee.unicamp.br/cursos/EA876/apostila/HTML/node37.html).

11 É interessante observar que mesmo a abordagem CISC tendo por premissa um complexo conjunto de instruções, ela veio contribuir para a simplificação dos compiladores. Um compilador gera uma sequência de instruções de máquina para cada comando da linguagem de alto nível. Caso existam instruções de máquina que se assemelhem aos comandos de linguagens de alto nível, essa tarefa tornar- se-á mais simples.

Contudo, esse raciocínio vem sendo discutido por pesquisadores adeptos da arquitetura RISC. Eles descobriram que instruções de máquina complexas frequentemente são mais difíceis de serem utilizadas, em virtude de o compilador ter de encontrar os casos em que essas instruções estejam exatamente adequadas a uma dada construção da linguagem. Com o uso de um conjunto complexo de instruções, fica muito mais difícil a tarefa de melhorar (otimizar) o código gerado. Fica difícil minimizar seu tamanho, reduzir o número de instruções executadas e melhorar o desempenho da pipeline de instruções.

Outro argumento utilizado e que merece destaque é a expectativa de que uma arquitetura CISC possa produzir programas menores e mais rápidos. Programas menores têm duas vantagens. A primeira é consumir um menor espaço de memória, resultando na economia desse recurso. Como a memória é, hoje em dia, mais accessível e tornou-se mais barata, essa vantagem deixa de ser tão significativa. A vantagem mais evidente e importante de programas menores é, consequentemente, contribuir para melhorar o desempenho.

O problema com essa linha de raciocínio é que não se pode ter certeza de que um programa compilado para arquitetura CISC será menor que um programa compilado para uma arquitetura RISC

correspondente. Em muitos casos, o programa CISC, expresso em linguagem de máquina simbólica, pode ter um número menor de instruções, mas o número de bits de memória ocupada pode não ser significativamente menor.

Melhorar o desempenho

Essa melhoria de desempenho pode acontecer de duas maneiras:

• Primeiro, um menor número de instruções significa menor número de bytes de instruções a serem buscados.

• Segundo, em um ambiente de paginação, programas menores ocupam um número menor de páginas, o que reduz a taxa de falta de páginas.

Paginação

Processo de virtualização da memória que consiste na subdivisão da memória física em pequenas partições (frames), para permitir uma utilização mais eficiente da mesma. As frames da memória física correspondem a páginas de memória virtual. A alocação de memória é requisitada por páginas, a menor unidade deste método. Cada página é mapeada numa frame de memória através de um processo que chama paginação. (http://pt.wikipedia.org/wiki/Mem%C3%B3ria_paginada).

(10)

12 RISC X CISC – Projetos Recentes

Até o momento você deve ter observado as características de cada arquitetura (RISC X CISC) e provavelmente deve estar pensando ou querendo saber qual delas seria realmente a melhor arquitetura.

O interessante neste caso não é saber quem é a melhor, mas sim reconhecer que o projeto RISC pode beneficiar-se com a inclusão de algumas características CISC e o CISC pode beneficiar-se com a inclusão de algumas características RISC. O resultado é que projetos RISC mais recentes não são RISC “100%”, assim como projetos CISC incorporam característica RISC.

Sendo assim, não há atualmente processadores que sigam fielmente uma arquitetura específica, RISC ou CISC. Veja alguns exemplos.

Visando à praticidade, uma vantagem da arquitetura CISC é que já há várias instruções guardadas no próprio processador, o que viabiliza o trabalho dos programadores que, desta forma, já têm disponível as instruções necessárias para seus programas. Caso o programador estivesse programando para uma arquitetura RISC, ele teria mais trabalho, pois as instruções são mais simples e exigiriam muito, caso houvesse a necessidade de executar algumas tarefas mais complexas. Uma comparação bem

interessante e que ajuda na elucidação seria tentar usar uma calculadora comum (operações básicas) para fazer cálculos de estatística ou usar a calculadora comum para fazer conversão de base.

Para finalizar nosso módulo, uma sugestão é você visitar a página (http://www.techtudo.com.br/dicas-e-tutoriais/noticia/2014/03/quais- as-diferencas-entre-os-processadores-amd-e-intel.html) e ler esta reportagem sobre as diferenças entre processadores da marca Intel e da marca AMD.

Outra sugestão é a reportagem

(http://www.tecmundo.com.br/processadores/2760-tabela-de- processadores-intel.htm) que explica com detalhes as características dos processadores da INTEL e vale a pena visitar a página da AMD (http://www.amd.com/pt-br/products/processors) para conhecer alguns tipos de processadores e suas características.

13

RESUMO

Durante o estudo desta unidade tivemos a oportunidade de entender as chamadas: máquinas von Neumann e as não von Neumann. Uma característica básica da máquina von Neumann é sua composição, a qual é feita a partir de três subsistemas básicos: CPU ou UCP, memória principal e sistema de E/S. As máquinas que não seguem o modelo de von Neumann são chamadas de máquinas

“não-von Neumann”. Porém, não quer dizer que este modelo seja contra ou antagônico ao modelo de

(11)

von Neumann. Um projeto de um sistema com arquitetura de alto desempenho só é possível alterando os algoritmos para melhor ajustar à organização do sistema. Tendo por objetivo melhorar a

performance, estudos sobre o comportamento da execução de programas em linguagens de alto nível visam orientar o projeto de um novo tipo de arquitetura para processadores, o chamado computador com conjunto reduzido de instruções (Reduced Instruction Set Computes) ou também conhecido como arquitetura RISC. Há também a arquitetura CISC, que era resultado de uma tendência para o uso de conjuntos de instruções cada vez mais ricas, incluindo um grande número de complexas instruções. Essa tendência teve por motivação duas grandes razões: desejo de otimizar o desempenho e desejo de simplificação dos compiladores.

Ao final, concluímos que o mais interessante não é saber quem é a melhor (RISC ou CISC), mas sim reconhecer que o projeto RISC pode beneficiar-se com a inclusão de algumas características CISC e o CISC pode beneficiar-se com a inclusão de algumas características RISC. O resultado é que projetos RISC mais recentes não são RISC “100%”, assim como projetos CISC incorporam características RISC.

UNIDADE 4–ARQUITETURAS CONVENCIONAIS E NÃO CONVENCIONAIS

MÓDULO 2–MÁQUINAS PARALELAS

01

1-COMPUTAÇÃO PARALELA

No decorrer do estudo deste módulo entenderemos que quando falamos em computação paralela fazemos referência à maneira de realizar vários cálculos (instruções) de maneira simultânea. Falaremos da organização SMP, que faz referência a vários processadores similares em um mesmo computador, ligados pelo barramento ou por meio de algum circuito de conexão. Você entenderá que cluster é o conjunto de máquinas, ligadas entre si, que trabalham juntas como um sistema computacional único, dando a impressão que é uma única máquina.

Falaremos também do sistema NUMA no qual o tempo gasto para acesso a uma palavra na memória varia conforme a posição dessa palavra na referida memória. Você verá que computadores

superescalares são máquinas que possuem várias unidades de execução no mesmo processador, sendo assim, executam em paralelo várias instruções de um mesmo programa. Estudaremos como é uma organização MIMD, na qual cada processador irá processar todas as instruções para, de forma

adequada, realizar a transformação dos dados. Estudaremos a máquina SISD, a qual possui uma unidade de controle que oferece uma sequência de instruções para uma unidade de processamento.

Na sequência, estudaremos o modelo PRAM, que é uma extensão do modelo sequencial RAM e também o mais conhecido dos modelos de computação paralela. Veremos o modelo Bulk Synchronous Parallel Model (BSP) que foi um dos primeiros a levar em consideração os custos da comunicação e não levar em conta as características de uma máquina paralela em um número pequeno de parâmetros. E ao final, veremos também o modelo Coarse Grained Multicomputer (CGM) que é muito similar ao modelo BSP.

Vamos ao nosso estudo!

(12)

02 Caso alguém pedisse sua opinião para melhorar o desempenho de um sistema computacional,

provavelmente você aconselharia a aumentar o número de processadores. Se você teve esta ideia, muito bem, está correto. A ideia de adicionar mais processadores para trabalharem (executarem) em paralelo para melhorar a performance diante de uma carga de trabalho é muito bem-vinda. Tanto é, que, hoje em dia, ao comprarmos uma máquina (computador) notamos que os processadores são, na maioria das vezes, multicore (processador com mais de um núcleo).

Quando falamos em computação paralela, estamos fazendo referência à maneira de realizar vários cálculos (instruções) de forma simultânea. Trata-se de dividir um grande problema em problemas menores, os quais serão processados concorrentemente (paralelamente).

Esta técnica, chamada de paralelismo, é empregada há muito tempo e seu foco sempre foi a

computação de alto desempenho. Atualmente, em virtude da necessidade de criarmos máquinas mais potentes, de tamanho reduzido e que consumam menos energia elétrica, tornou-se ainda mais necessário o uso de processadores multinúcleo.

Todavia, há várias maneiras de organizar múltiplos processadores, vamos destacar:

• a organização de multiprocessadores simétricos (SMP),

• os NUMA (acesso não uniforme à memória) e

• os chamados agregados (clusters).

Sistema computacional

Conjunto de dispositivos eletrônicos (hardware) que processam informações de acordo com um programa (software). O software mais importante é o sistema operacional, porque ele fornece as bases para a execução das aplicações, às quais o usuário deseja executar. Exemplos de sistemas operacionais são: GNU/Linux, Microsoft Windows, o IOS da Apple.

(Fonte: http://pt.wikipedia.org/wiki/Sistema_computacional).

03

2-SMP/NUMA/CLUSTERS

Quando falamos de uma organização SMP (Symmetric MultiProcessor - multiprocessadores simétricos), estamos fazendo referência a vários processadores similares em um mesmo computador, ligados pelo barramento ou por meio de algum circuito de conexão. O que há de crítico neste arranjo é o que chamamos de coerência de cache. Isto ocorre em virtude de cada processador ter sua memória cache e quando trabalham em conjunto, por algum motivo, alguma linha de dados for alterada indevidamente a MP (memória principal) terá uma versão inválida dessa linha.

Reforçando o conceito, um SMP consiste em vários processadores que compartilham uma memória única ou mesmo um conjunto de memória através do compartilhamento de um barramento ou de outro tipo de conexão. Esse sistema tem por característica que o tempo de acesso a qualquer região da

(13)

memória é praticamente o mesmo para cada processador. O sistema SMP tem esta denominação em referência tanto quanto ao comportamento do sistema operacional quanto à arquitetura de hardware.

Um sistema SMP tem as seguintes características:

O controle do sistema é feito por um sistema operacional integrado, que estabelece uma interação entre seus programas e os processadores, em nível de dados, arquivos e de tarefas;

Em virtude de serem simétricos, os processadores poderão desempenhar as mesmas funções;

Tanto por meio de canais distintos ou comuns que provêm caminhos para os dispositivos, todos os processadores compartilham acesso aos dispositivos de entrada e saída (E/S);

O tempo de acessa à memória é aproximadamente o mesmo para cada processador, isto ocorre em virtude dos processadores compartilharem as facilidades de E/S e a mesma MP e estão conectados por um barramento ou outro meio de conexão;

Há dois ou mais processadores similares, com capacidade de computação compatível.

04

As vantagens do SMP são as seguintes:

• necessita de espaço físico e demanda de energia menor que um cluster;

• fisicamente falando é muito próximo ao modelo original de um processador único, sendo assim, fica mais fácil para as aplicações desenvolvidas para monoprocessadores, pois a aplicação não precisa

“saber” quantos processadores há em uma máquina.

Quando falamos em cluster estamos fazendo referência a um conjunto de máquinas, ligados entre si, que trabalham juntos como um sistema computacional único, dando a impressão que é uma única máquina.

Coerência de cache

Diversas arquiteturas de máquinas paralelas atuais são construídas com processadores produzidos em larga escala. Essas máquinas paralelas incorporam caches em suas arquiteturas, o que provoca o problema de coerência de cache, que, em síntese, é a inconsistência de dados. Essa inconsistência é provocada pelos seguintes motivos:

- múltiplas cópias de mesma posição de memória podem existir em diferentes caches,

- cada processador atualiza sua cópia local, não se preocupando com a existência de outras cópias em outros processadores;

- cópias de mesmo endereço de memória poderão possuir valores diferentes.

Sistema Operacional

É um sistema que tem por objetivo organizar e controlar os softwares e o hardware tornando possível a utilização de um computador (máquina).

(Fonte: http://pt.wikipedia.org/wiki/Sistema_operativo)

(14)

Quando falamos no sistema NUMA (Non-Uniform Memory Access ou acesso não uniforme à memória) estamos fazendo referência a um multiprocessador com memória compartilhada, no qual o tempo gasto para acesso a uma palavra na memória varia conforme a posição dessa palavra na referida memória.

Então, como o próprio nome sugere, o tempo de acesso a diferentes regiões da memória pode não ser igual para um processador NUMA. Um grupo de computadores com apenas um processador ou de SMP independentes podem ser conectados por meio de cabos de rede ou outro tipo de conexão e formarem um cluster.

Então não se esqueça, o sistema NUMA tem por característica o fato de todos os processadores possuírem acesso a todas as áreas da MP (memória principal), via operação de armazenamento e de carga. Sendo assim, o fator tempo de acesso à memória por um processador é diferente conforme a região utilizada. Isso acontece com todos os processadores, contudo, as regiões de memória na qual o acesso é mais rápido ou mais lento serão diferentes para diferentes tipos de organização utilizada nos processadores.

05

3-MÁQUINA SEQUENCIAL /MÁQUINA PARALELA

Tipicamente, uma máquina é vista como uma máquina sequencial. Grande parte das linguagens de programação exige a especificação do algoritmo como uma sequência de instruções. Esta visão é que os processadores executam programas através da execução sequencial de instruções de máquina.

Contudo, esta visão não é totalmente verdadeira. Isso devido ao fato de que ao nível de microoperações, uma gama de sinais de controle é gerada ao mesmo tempo.

A técnica de Pipeline de instruções é utilizada há um certo tempo, fazendo sobreposição nas operações de execução e busca de instruções. Esses são exemplos de execução em paralelo das funções.

Essa visão nos remete a uma organização chamada superescalar, que tem por objetivo explorar o paralelismo ao nível de instrução. Nos chamados computadores superescalares, há várias unidades de execução no mesmo processador, sendo assim, executam em paralelo várias instruções de um mesmo programa.

(15)

À proporção que há evolução da tecnologia e o preço do hardware da máquina (computador) diminui, os projetistas de máquina estão buscando outras maneiras de aproveitar o paralelismo, geralmente com o intuito de melhorar o desempenho e também aumentar a disponibilidade do sistema.

O cientista da computação, o americano Michael J. Flynn foi o criador do primeiro sistema para a classificação de programas e computadores paralelos e sequenciais, ficando conhecida como a taxonomia de Flynn, que veremos a seguir.

06

Flynn fez a seguinte classificação para as categorias de sistemas de computação paralela:

• SISD (Single Instruction Single Data) – “única instrução, único dado”. Significa que apenas um processador irá executar uma única sequência de instruções, utilizando os dados que estão armazenados em apenas uma memória. Pertencem a esta categoria os sistemas uniprocessados.

Na estrutura de uma máquina SISD há uma UC (unidade de controle) que oferece uma SI (sequência de instruções) para uma UP (unidade de processamento). A UP opera sobre uma única SD de uma única UM (unidade de memória). Na máquina SIMD, há uma única UC, que alimenta múltiplos EP (elementos de processamento) com somente uma sequência de instruções. Cada elemento de processamento possui sua própria memória ou compartilha uma memória. Na organização MIMD, há múltiplas UC, cada qual alimentando seu próprio elemento de processamento com diferentes sequências de instruções.

• SIMD (Single Instruction Multiple Data) – “única instrução múltiplos dados”. Significa que apenas uma instrução de máquina controla a execução simultânea de determinado número de elementos de

processamento, em passos de execução. Cada elemento de processamento está associado a uma memória de dados, de tal maneira que cada instrução será executada em cada processador sobre um conjunto de dados diferentes. Pertencem a esta categoria os processadores matriciais e os vetoriais.

07

(16)

• MISD (Multiple Instruction Sigle Data) - “múltiplas instruções único dado”. Significa dizer que determinada sequência de dados é enviada para um conjunto de processadores, cada processador executa uma sequência diferente de instruções. Esta estrutura é experimental.

• MIMD (Multiple Instruction Multiple Data) – “múltiplas instruções múltiplos dados”. Significa que determinado conjunto de processadores simultaneamente executam sequências diferentes de instrução, sobre conjuntos de dados distintos. Pertencem a esta categoria os SMP, clusters e sistemas NUMA.

Na organização MIMD, os processadores são utilizados para propósito geral, cada processador irá processar todas as instruções para, de forma adequada, realizar a transformação dos dados.

Os sistemas MIMD podem, conforme a forma de comunicação, ser subdivididos. Os processadores compartilham a mesma memória, então cada processador irá utilizar programas e dados que estão armazenados na memória compartilhada e toda comunicação entre eles (processadores) será por meio dessa memória. Este tipo de sistema é conhecido como SMP (multiprocessador simétrico).

Até a pouco tempo, a maioria dos PC (computadores pessoais) e das workstation (estações de trabalho) possuíam apenas um processador. Em virtude da necessidade de melhor desempenho e a constante queda do custo dos processadores, os fabricantes começaram a introduzir os sistemas SMP.

08 Para complementar o seu estudo, assista ao vídeo abaixo. Neste vídeo você terá oportunidade de entender o que motivou o INPE (Instituto Nacional de Pesquisas Espaciais) a investir em um sistema computacional de alto desempenho para o CPTEC (Centro de Previsão do Tempo e Estudos Climáticos),

(17)

que é composto por um cluster de 1,1 mil processadores trabalhando em conjunto e está na lista dos 500 supercomputadores mais rápidos do mundo.

https://www.youtube.com/watch?v=gfBSNxcYRiU

Aproveite também para ler uma pequena reportagem da revista on-line Exame.com, que aborda como a USP está utilizando os maiores e mais potentes clusters (aglomerado de computadores) do mundo voltado para pesquisas de astronomia.

http://exame.abril.com.br/tecnologia/noticias/supercomputador-da-usp-estuda-estrelas- gigantes/

09

4-CLUSTER: BENEFÍCIOS

Cluster é um grupo de computadores interconectados, trabalhando em conjunto, como um sistema computacional unificado, dando a impressão de ser um único computador.

Você poderá encontrar outras definições, que dizem: clusters são formados por vários “nós”, sendo que cada “nó” representa um computador, sendo assim, cluster também poderá ser chamado de conjunto de “nós” interconectados.

Quando falamos em clusters podemos ver que é uma área muito utilizada e promissora do projeto de sistemas de computação. Clusters são uma alternativa para multiprocessadores simétricos (SMP), como abordagem para o provimento de alta disponibilidade e alto desempenho, sendo muito utilizados em ambiente de servidores.

Servidor

Na TI (Tecnologia da Informação) o termo “servidor” é utilizado para especificar um sistema de

computação centralizado que fornece serviços a uma rede de computadores. Esses serviços podem ser de vários tipos, como por exemplo: servidor de arquivos (file server) ou de correio eletrônico (mail server). As máquinas (computadores) que utilizam os serviços de um servidor são chamadas de clientes ou estações de trabalho clientes. (Fonte: http://pt.wikipedia.org/wiki/Servidor).

(18)

10 No ano de 1997 o autor Brewer, no seu livro “Clustering multiply and conquer”, que em uma tradução simples seria “Cluster: dividir para conquistar”, fala sobre os benefícios do uso de clusters. Fazendo um

“parêntese”, essa expressão “dividir para conquistar” foi utilizada por grandes personagens da história, como César (Roma) e Napoleão (França), no intuito de explicar uma estratégia de manter os inimigos divididos, em grupos pequenos, ficando mais fácil dominá-los. Contudo, em nosso “mundo da TI” e mais especificamente em Cluster, estamos fazendo referência a “dividir as tarefas” entre os processadores, para “conquistar” uma melhor performance.

Abaixo podemos ver como Brewer relaciona os benefícios alcançados com clusters:

• Escalabilidade incremental;

• Escalabilidade absoluta;

• Melhor relação custo/desempenho;

• Alta disponibilidade.

Tanto cluster como SMP (multiprocessadores simétricos) possuem uma configuração com vários processadores (múltiplos processadores) para suportar aplicações que exigem alto desempenho. Essas soluções (cluster e SMP) estão disponíveis no mercado, sendo que a principal vantagem dos sistemas SMP é a fácil configuração em relação a um cluster.

Fica também claro o que motiva as empresas a investirem em clusters para aplicações de alto desempenho (exemplo do INPE, visto anteriormente), pois nos quesitos escalabilidade incremental, escalabilidade absoluta e disponibilidade os clusters são muito mais eficientes e superiores que os SMP.

Escalabilidade Incremental

Na configuração de um cluster é possível adicionar novos computadores, tornado sua expansão incremental. Dessa maneira, é possível começar com um sistema pequeno e expandir à medida do aumento das necessidades.

Melhor relação custo/desempenho

Em virtude da facilidade da construção de um cluster, utilizando máquinas mais simples, com poder de processamento menor ou mesmo máquinas que são consideradas ultrapassadas, é possível obter um cluster com poder de computação igual ou maior que um servidor de rede de ultima geração, com um valor muito mais acessível.

Alta Disponibilidade

Cada nó de um cluster é uma máquina independente, uma falha em qualquer destas máquinas não significa uma perda total do serviço, pois as outras máquinas mantêm a disponibilidade da aplicação ou serviço de rede.

Escalabilidade Absoluta

Capacidade de criação de grandes clusters, com capacidade de executar vários aplicativos de maneira que ultrapassa várias vezes a capacidade de uma máquina comum. Um cluster pode ser formado por muitas máquinas, sendo que cada uma constitui um processador ou multiprocessador.

(19)

11

5-NUMA: VANTAGENS E DESVANTAGENS

Dentre as principais vantagens de um sistema NUMA destacamos o desempenho efetivo em níveis de paralelismo mais altos que o fornecido por sistemas SMP, sem necessidade de grandes mudanças no software. Com vários “nós” NUMA, o tráfego no barramento em qualquer “nó” estará limitado à

demanda que esse barramento é capaz de suportar. Contudo, caso haja um grande número de acessos a posições de memória localizadas em “nós” remotos, o desempenho cairá sensivelmente. Mas tudo isso pode ser minimizado com uso da memória cache e também de memória virtual (visto anteriormente).

Há também algumas desvantagens no sistema NUMA, a primeira é que este sistema não se apresenta de forma transparente como um SMP, havendo necessidade de modificações de software para a migração de sistemas operacionais e aplicações do sistema SMP para o sistema NUMA. A segunda desvantagem é a questão da disponibilidade, conforme vimos na comparação Cluster e SMP.

Na grande maioria dos softwares desenvolvidos para máquinas paralelas observam apenas o problema da paralelização com baixos níveis de comunicação. Contudo, nas máquinas reais, o tempo de

comunicação é, geralmente, mais elevado que o tempo de processamento (computação). Sendo assim, muitos algoritmos paralelos que na teoria são eficientes, para o modelo PRAM (memórias de acesso aleatório com mudança de fase), não têm o desempenho que se espera quando implementados em máquinas paralelas reais.

12 Com vimos até agora, o objetivo da computação paralela é a utilização simultaneamente de um

conjunto de processadores interligados (conectados), de tal modo que resolva um problema de maneira conjunta e mais rapidamente do que seria em um processamento sequencial quando utilizado apenas um processador.

Ao pararmos para pensar, poderemos ver que um computador paralelo é simplesmente um grupo (coleção) de processadores, geralmente do mesmo tipo, interligados de tal modo que permita a

(20)

coordenação de como é feita a troca de dados e também das suas atividades. Essas atividades podem ser: quando o volume de dados e cálculos é muito grande e necessita-se de rapidez na resolução.

Na busca constante por um modelo adequado há a necessidade de compreender e incorporar, em tal modelo, características peculiares da computação paralela.

No decorrer do nosso estudo vimos o modelo de computação sequencial de von Neumann, que assume a existência de apenas uma UCP e uma memória de acesso aleatório (RAM), é possível estabelecer uma relação entre os desempenhos das implementações e dos seus respectivos algoritmos por meio de medidas de complexidade de tempo.

No modelo de von Neumann, estas medidas (complexidade de tempo) tornam possível medir de maneira mais eficiente a performance dos algoritmos sequenciais, servindo como referência para as implementações. Entretanto, na computação paralela, a mesma relação entre algoritmos e

implementações não há ainda um modelo padrão. Em virtude da presença de vários elementos de processamento torna a definição de um modelo de computação paralela mais complicado.

13

6-PRAM-PARALLEL RANDOM ACCESS MACHINE

O modelo PRAM (Parallel Random Access Machine) é uma extensão do modelo sequencial RAM e também o mais conhecido dos modelos de computação paralela.

Podemos descrevê-lo como um conjunto de processadores que trabalham sob o controle do clock de maneira síncrona. Cada processador possui uma identificação única e uma memória local própria, comunicando-se com os demais processadores por meio de uma memória compartilhada.

(21)

Apesar de sua importância conceitual e teórica, o modelo PRAM, não consegue espelhar com precisão a noção de paralelismo. Algumas características que não foram incorporadas ao modelo têm grande impacto no desempenho das implementações.

Em virtude das limitações do modelo PRAM, outras alternativas surgiram para contornar estes problemas, estes modelos são chamados realísticos, exemplo, o BSP e o CGM, que veremos a seguir.

Clock

Significa a quantidade de ciclos que um processador é capaz de realizar durante um determinado tempo. (Fonte: http://pt.wikipedia.org/wiki/Clock)

14

7–MODELOS BSP E CGM

O modelo Bulk Synchronous Parallel Model (BSP), que em uma tradução simples seria “Modelo Paralelo Síncrono Volumoso”, teve sua proposição feita por Valiant (Leslie Valiant – professor de Harward), no ano de 1990, foi um dos primeiros em levar em consideração os custos da comunicação e não levar em conta as características de uma máquina paralela em um número pequeno de parâmetros. Este modelo tem como objetivo principal servir de ponte entre as necessidades na computação paralela de hardware e software. Conforme a proposição de Leslie Valiant, este é um dos fatores responsáveis pelo sucesso do modelo sequencial de von Neumann.

O modelo de máquina BSP consiste de um conjunto de “p” processadores com memória local, trocando informações por meio de alguma interconexão, gerenciados por um roteador (faz a intermediação entre um ou mais pontos) e com facilidade de sincronização global. Um algoritmo BSP consiste de uma sequência de uma quantidade muito grande de passos (superpassos) separados por barreiras de sincronização.

Há também o modelo Coarse Grained Multicomputer (CGM), que em uma tradução simples seria

“Multicomputador com Granularidade Grossa”, teve sua proposição feita por Dehne et al, no ano de 1993.

O modelo CGM é muito parecido com o modelo BSP, no entanto, é definido em apenas dois parâmetros:

n = tamanho do problema e p número de processadores.

Um algoritmo CGM consiste de sequência alternada de rodadas de computação e rodadas de comunicação, separadas por uma barreira de sincronização. Ao falarmos de um algoritmo CGM,

precisamos entender que é uma sequência de rounds (rodadas), com alternância de fases bem definidas de processamento local e estabelecendo uma conexão global. Geralmente, durante uma rodada de computação é feita com a utilização do melhor algoritmo sequencial para o processamento dos dados disponibilizados localmente.

(22)

O cálculo do custo de um algoritmo CGM é feito pela soma dos tempos obtidos em termos do número total de rounds de computação local e do número de superpassos, o que seria equivalente ao número total rodadas de comunicação.

Granularidade grossa

Quando se fala em “coarse grained” (granularidade grossa) é em virtude do tamanho de o problema ser razoavelmente maior que a quantidade de processadores, ou seja, “tamanho do problema” = “número de processadores” (n/p = p).

15 Os modelos modernos de computação paralalela, BSP e CGM, têm por objetivo a redução dos custos de comunicação de maneira muito semelhante e buscam a caracterização de uma máquina paralela por meio de um conjunto de parâmetros. Podemos destacar que no número de operações de computação local e no número de superpassos eles são muito semelhantes.

Entretanto, há diferenças. Destacamos que o modelo CGM é mais simples no projeto e o

desenvolvimento de algoritmos em virtude de ser um modelo mais simplificado e um pouco mais poderoso que o modelo BSP. É interessante destacar que um algoritmo CGM pode ser convertido para o modelo BSP sem nenhuma mudança. Em suma, os modelos BSP e CGM apresentam características muito parecidas. Contudo, o modelo CGM é mais simples quanto ao custo da comunicação, o que facilita bastante o projeto de algoritmos.

Fazendo referência ao final da década de 1980, observamos que houve o crescimento grande do desenvolvimento de algoritmos paralelos para o modelo chamado PRAM. Em virtude, infelizmente, dos resultados teóricos obtidos não serem positivos eles não foram utilizados para implementações nas máquinas atuais. Na década de 1990, é quando surgem os modelos BSP e CGM. O desenvolvimento de algoritmos para esses modelos, quando foram implementados nas máquinas atuais, apresentam resultados satisfatórios de “Tempo do Algoritmo Sequencial Dividido pelo Tempo do Algoritmo Paralelo com “p” processadores” (speedup) semelhantes ao que havia sendo ensaiado nas análises teóricas.

Os modelos BSP e CGM tornaram possível um progresso considerável na área de algoritmos paralelos, mas o mais interessante é que ainda há muito a melhorar e que muitas pesquisas ainda serão

necessárias para atingir o estado da arte.

16

RESUMO

Durante nosso estudo você teve oportunidade de conhecer o que é Computação Paralela e sua maneira de realizar vários cálculos (instruções) simultaneamente. Você compreendeu como é a organização SMP, que faz referência a vários processadores similares em um mesmo computador, ligados pelo

barramento ou por meio de algum circuito de conexão. Você compreendeu que CLUSTER é o conjunto de máquinas, ligadas entre si, que trabalham juntas como um sistema computacional único, dando a impressão que é uma única máquina.

(23)

Quando falamos em sistema NUMA estamos fazendo referência a um multiprocessador com memória compartilhada, no qual o tempo gasto para acesso a uma palavra na memória varia conforme a posição dessa palavra na referida memória. Você teve oportunidade de saber que computadores superescalares são máquinas que possuem várias unidades de execução no mesmo processador. Na organização MIMD, os processadores são utilizados para propósito geral, cada processador irá processar todas as instruções para, de forma adequada, realizar a transformação dos dados.

Você compreendeu que na estrutura SISD há uma UC (unidade de controle) que oferece uma SI (sequência de instruções) para uma UP (unidade de processamento). Você também teve oportunidade de conhecer o que é um sistema NUMA (Acesso não uniforme à memória) que tem por característica que todos os processadores possuem acesso a todas as áreas da MP (memória principal), via operação de armazenamento e de carga. Você compreendeu que o modelo PRAM (Parallel Random Access Machine) é uma extensão do modelo sequencial RAM e também o mais conhecido dos modelos de computação paralela. Para finalizar você conheceu o modelo Bulk Synchronous Parallel Model (BSP) que foi um dos primeiros a levar em consideração os custos da comunicação e não levar em conta as

características de uma máquina paralela em um número pequeno de parâmetros e o modelo Coarse Grained Multicomputer (CGM) que é muito similar ao modelo BSP, no entanto, é definido em apenas dois parâmetros: em que “n” é o tamanho do problema e “p” número de processadores.

UNIDADE 4–ARQUITETURAS CONVENCIONAIS E NÃO CONVENCIONAIS

MÓDULO 3–AMBIENTE DISTRIBUÍDO DE ALTO DESEMPENHO -FUNDAMENTOS BÁSICOS

01

1-ARQUITETURAS COMPUTACIONAIS

Durante o estudo deste módulo você terá a oportunidade de compreender que os sistemas

computacionais estão cada vez mais elaborados e complexos, requerendo o processamento de grandes quantidades de informação e os computadores que as processam precisam ter um melhor

balanceamento de carga, uma melhor distribuição na concorrência de tarefas, além da redução do tempo de resposta ao usuário.

As opções mais usuais para a solução desses problemas são: a utilização de processadores mais rápidos (cujo custo normalmente é elevado); o desenvolvimento de melhores algoritmos (permitindo agilidade nas aplicações); ou então, a agregação (clusters) ou distribuição geográfica (grids) dos computadores locais permite a maximização da eficiência global das aplicações.

Com microprocessadores cada vez mais potentes, com um custo cada vez menor, além do avanço na tecnologia de comunicação de dados houve a criação de um ambiente favorável para o

desenvolvimento e utilização de sistemas distribuídos.

(24)

A computação distribuída ou paralela diz respeito à interligação de vários computadores a uma rede com a finalidade de compartilhar e coordenar os recursos disponíveis para a solução de problemas complexos na execução de tarefas.

02 Há inúmeras possibilidades na arquitetura dos computadores com a finalidade de uniformizar as

características dos sistemas computacionais, porém a taxonomia de Flynn é a mais aceita na área, pois considera tanto o número de instruções executadas, quanto o conjunto de dados para os quais essas instruções são submetidas. Vale a pena relembrar a classificação dos computadores segundo Flynn:

(25)

03 Ao permitir a introdução de fluxos múltiplos de dados ou instruções, as arquiteturas MIMD criaram o ambiente perfeito para o surgimento da computação distribuída. A classificação da arquitetura MIMD pode ser feita sob dois prismas:

1) Multiprocessadores: há vários processadores compartilhando uma única memória ou conjunto de memórias, sendo conhecida como fortemente acoplada, visto que há uma interligação entre processadores e memória, através de um sistema local de interconexão. O diferencial é que “a comunicação entre os processadores é efetuada através de instruções de acesso comum à memória (as operações de carregamento e armazenamento), pois os processadores compartilham a memória de uma forma global” (DANTAS, 2005). Há restrições na escalabilidade de processadores.

(26)

Fortemente acoplado

Sistemas fortemente acoplados são aqueles que possuem vários processadores compartilhando uma memória física. Exemplos: SMP(UMA) e NUMA.

04 A interconexão entre processadores e memória pode ser efetuada por meio de uma barra, que permite a configuração compartilhada.

05 Outra forma de interligação é usar um equipamento de comutação, (switch), estabelecendo uma configuração comutada simples e até multinível.

(27)

06 2) Multicomputadores: este tipo de arquitetura é composta por ambientes fracamente

acoplados, onde os processadores têm suas próprias memórias locais e a comunicação entre processos é caracterizada por “troca de mensagens entre os processos que estão

executando nos processadores” (DANTAS, 2005). Há uma boa escalabilidade da estrutura da máquina.

(28)

07 Os multicomputadores também podem ser ligados em barramento e por comutação conforme as figuras que se seguem:

Multicomputadores ligados em barramento

08

2-SMP, CCNUMA E MPP

Multiprocessadores Simétricos (SMP)

(29)

Conforme vimos anteriormente, os Multiprocessadores Simétricos (SMP) são arquiteturas de compartilhamento total e representadas pelos Symmetric Multiprocessor SMP onde há inúmeros processadores compartilhando toda a base computacional e executando as instruções num único sistema operacional. São chamados de simétricos porque os processadores têm os mesmos custos para acesso à memória e a qualquer dispositivo conectado no sistema de entrada e saída.

As máquinas são denominadas servidores de pequeno porte, que visam aumentar o desempenho de aplicações por meio do compartilhamento do código com uma memória única utilizando fortemente os processadores disponíveis, provendo maior rapidez nas consultas e atualizações de bancos de dados, por exemplo. Uma das características dessa arquitetura é que os ambientes não são muito escaláveis, pois o sistema de interconexão normalmente utilizado é um barramento que fixa a largura da banda e cria uma limitação.

Fonte: Prof. Dr. Odemir Martinez Bruno – Processamento Paralelo – Slide ICMC – USP 09 ccNuma - Cache Coherence Non-Uniform Memory Access

A arquitetura de acesso não uniforme à memória – ccNuma (Non-Uniform Memory Access NUMA) tem a característica de poder escalar centenas de processadores, preservando o modelo de programação simples de uma configuração SMP. Os processadores podem compartilhar os mesmos dados que estão armazenados em uma memória global. Há “um retardo para acesso a determinadas partes da memória por determinados processadores dependendo de suas localizações” (DANTAS, 2005).

Referem-se a estas configurações como organização de multiprocessador distribuída de memória, onde cada nó processador possui um cache local que reduz o tráfego na rede de interconexão e o

balanceamento de carga é realizado de forma dinâmica pelos protocolos de coerência das caches.

As arquiteturas ccNUMA são complexas e suas implementações dependem das soluções de cada fabricante para a sincronização de acesso e consistência à memória, permitindo um melhor desempenho da máquina.

(30)

10 MPP - Massively Parallel Processors

É um tipo de arquitetura fracamente acoplada na qual os computadores são classificados como multicomputadores e as máquinas possuem configuração massivamente paralelas (MPP), podendo ser compostos por um conjunto de multiprocessadores, que representam um nó de uma configuração do tipo multicomputador, com cache e memória local, e há milhares de nós interligados por dispositivos de interconexão de alta velocidade.

Cada nó possui uma cópia de sistema operacional, onde as aplicações executam localmente e se

comunicam através de pacotes de troca de mensagem. A escalabilidade desta abordagem é maior, visto que cada nó tem sua estrutura própria de memória e a interligação de vários nós é efetuada por

dispositivos chamados redes de interconexão, podendo ser implementadas de várias formas de acordo com sua topologia, seu algoritmo de roteamento, a estratégia de comutação e o controle do fluxo entre nós.

11

3-SISTEMAS DISTRIBUÍDOS, CLUSTERSEGRIDS

São configurações que agregam computadores existentes nas redes convencionais e possuem grande poder de escala em virtude disso. Nos ambientes distribuídos os conjuntos de máquinas existentes permitem configurações diferenciadas de SMPs, MPP, de clusters e grids computacionais. Muitos autores empregam o termo metacomputador como referência ao uso de sistemas distribuídos como um grande computador, vide a própria internet que possui máquinas agrupadas para a execução de uma aplicação.

É importante que a segurança, o retardo de comunicação, a confiabilidade, a disponibilidade e a compatibilidade de versões de pacotes de software sejam analisados durante o processo de

implementação desta configuração, visto que, como há mais computadores, a probabilidade de uma falha ocorrer aumenta substancialmente.

Referências

Documentos relacionados

Todavia, é importante ressaltar que, quando são desenvolvidos projetos de máquinas, devem ser adotadas medidas de segurança principalmente relativas às mangueiras e aos

Toda atividade industrial envolve operações de armazenamento de matéria-prima, movimentação e estoque de materiais e produtos acabados, a fim de que o processo de produção

Nos dados estudados, as estratégias utilizadas pelas crianças ao grafarem a estrutura (C)(C)VCC foram de dois tipos: omissão da nasal ou omissão da fricativa.

equipamentos são geridos pelo Departamento Central sempre que não estão sendo utilizados em uma obra e os. equipamentos são alugados pelo Serviço Central

c) obedecer a distancia máxima entre as chaves de parada de emergência recomendada pelo fabricante.. As chaves de parada de emergência devem ser localizadas de tal forma que todo o

20215 ACESSÓRIOS PARA MÁQUINAS DE TRICOTAR E PARA FABRICO DE MALHA 10248 AGULHAS PARA MÁQUINAS DE MALHAS.. 13629 FORNECEDORES, DISPOSITIVOS DE DESENHO 16368

Considere uma pizza definida por um círculo de raio (r) igual a , conforme figura abaixo. Determine á área hachurada da figura, sabendo que a mesma está dividida em

Na investigação, feita com base em informações de mulheres de 40 a 69 anos, o consumo de apenas 9 gramas de embutidos ao dia (cerca de três fatias de salame) aumentou em 21%