--- title: Memoria compartilhada, distribuida e multithreading description: Memoria compartilhada, distribuida e multithreading tags: Arq. de computadores --- # Multiprocessamamento de memoria compartilhada ### Oque é SMP(Multiprocessador de Memória Compartilhada)? Cada processador consegue ter acesso a todo o espaço de memória do sistema. ![](https://i.imgur.com/Rk2EJI5.png) Gerenciando o tempo de acesso a memoria de maneira uniforme(UMA) ou não uniforme(NUMA). ### Quais vantagens de um SMP? 1. Como os processadores tem acesso a toda memoria, não é necessario movimentar os dados na comunicação de processadores. 2. Não há necessidade de particionar o codigo ou dados, facilitando a alteração de programas seriais para parelelos. ### Quais desvantagens de um SMP? 1. É necessario gerenciar quando um processador deve acessar a memoria, para receber o dado que deseja. 2. Como o numero de memoria é limitado, aumentar o numero de processadores não aumentara o desempenho, a não ser que aumente tambem a quantidade de memoria. ### Snooping (sincronização de cache) ![](https://i.imgur.com/6i1lR4a.png) * Bus sniffing ou Bus snooping é uma técnica utilizada em **multiprocessadores** e **sistemas de memória compartilhada distribuída** para realizar coerência de cache. Apesar de haver uma memória principal, há vários caches, um por processador, e a menos que tome-se providências para bloquear-se, o mesmo local de memória pode ser carregado em dois caches e ser atribuído dois valores diferentes. Para impedir isto, todo controlador de cache monitora o barramento, escutando por broadcasts que possam causá-lo para invalidar sua linha de cache. Um cache contendo um controlador de coerência (snooper) é chamado de cache snoopy. * Os dados são manuseados por 2 componentes: escrita e leitura. * Para que um processador escreva um novo dado, nenhum outro processador deve estar escrevendo ou lendo aquele dado no momento. * A cada escrita de dado feita por um processador, os outros processadores devem obter novos valores, buscando manter uma sincronização dos dados. | | Oque faz? | | ---------- | ---------- | | Na leitura | Caso a leitura do dado falhe e outros caches tenham o dado requisitado, é tomado a decisão de fornecer ou não os dados para outra cache | | Na escrita | Todas caches verificam se possuem uma copia do dado, e tomam a decisão de invalidar ou atualizar sua cópia | --- # Multiprocessamamento de memoria distribuída ### Oque é? Há um espaço de endereçamento distinto para cada processador. A comunicação para troca de mensagens é feita por operações de send e receive. ![](https://i.imgur.com/35pSCMg.png) # Memoria compartilhada X Memoria distribuida * **Memoria Compartilhada** 1. Comunicação é implícita e o Hardware trata a proteção; 3. Cache controlada por hardware; * **Memoria Distribuida** 1. Não há necessidade de sincronização das caches; 2. Comunicação explicita, facilitando reestruturação do código; 3. Cache controlada por software; # Loosely Coupled Clusters(Cluster Fracamente Acoplado) Consiste em computadores que funcionam com um mínimo de comunicação e cooperação entre eles. Isso resulta no uso eficiente de cada computador individual, mas limita a quantidade de coordenação e compartilhamento de cargas de trabalho. • Cada um tem sua própria memória e sistema operacional. • Conectado usando o sistema de E/S. • Por exemplo, Ethernet / switch, Internet. * Adequado para aplicações com tarefas independentes • Servidores da Web, bancos de dados, simulações,… * Alta disponibilidade, escalável e acessível * Problemas • Custo de administração • Largura de banda de interconexão baixa # Grid Computing (Computação em Grade) Computação em GRID é um modelo computacional capaz de alcançar uma alta taxa de processamento dividindo as tarefas entre diversas máquinas, podendo ser em rede local ou rede de longa distância, que formam uma máquina virtual. # Multithreading ### Oque é? Se da por varios seguimentos de um mesmo programa executando simultaneamente no mesmo processador. ### Quais vantagens? Possui um baixo custo para CPU e não há necessidade de comunição entre processadores. A maioria dos processadores não encontra tarefas que usem seu maximo, com threads eles aumentariam seu trabalho, trocando de thread quando a em execução ser pausada. ### Principais modelos de multithreading | Tipo | Oque é? | Vantagem | Desvantagem | | --------------------------- | ----------------------------------------------------------------------------------------------------------------------- | --- | --- | | **Multithreading Coarse-Grain** | So é ativada em casos de longa demora, simplificando o hardware, mas não ocultando paradas curtas. | Não limita a performance da thread. | Pequenas interrupções não podem ser evitadas. | | **Multithreading Fine-Grain** | Troca a execução das threads a cada ciclo, intercalando entre elas, caso uma thread pare, outra é executada em seguida. | Oculta perdas de vazão devido interrupções. | Precisa de várias threads para realizar a ocultação, alem da execução individual da thread ser atrasada. | | **Simultaneous Threading** | Intercalação dinâmica entre as difrentes threads, executando instruçoes de varios segmentos. | Maior paralelismo por utilizar melhor os recursos disponiveis. | Precisa de várias threads para realizar a ocultação, alem da execução individual da thread ser atrasada. | ![](https://i.imgur.com/YMEXVax.png)