---
# System prepended metadata

title: Multiprocessamento
tags: [Arq. de computadores]

---

---
title: Multiprocessamento
description: Multiprocessamento
tags: Arq. de computadores
---
# Multiprocessamento
### O que é multiprocessamento?
Nada  mais é que a execução de 2 ou mais instruções, programas ou threads simultaneamente pelo processador.
### Qual sua importancia?
Com o processamento paralelo(simultaneo) é gerado um ganho na performance, execução de instruçoes, melhorando o tempo de processamento e resposta.
### Porque surgiram?
Um único processador trabalhando, não tinha um bom desempenho para os novos programas surgindo, o consumo de energia era alto, consequentemente a temperatura era alta, assim teve-se a necessidade de aumentar o numero de núcleos(core) no chip.
### Quais tipos de multiprocessamentos?


| Tipos de Paralelismo      | Oque é? | Grau de granularidade |
| ------------------------ | --------------------------------------------------------------------------------------------- | --- |
| Multiprocessador         | Literalmente mais de um chip processando os mesmo programa, instrução ou thread. |  -   |
| Nivel de processo        | Programas executando independentemente em um multiprocessador.  |  Grossa   |
| Nivel de threads         | Mais de uma linha de execução dentro de um mesmo processo.                                    | Grossa    |
| Nivel de dados(DLP)      | Mesma opreação sendo aplicada sobre um conjunto de dados, muito utilizada por placas de video |  Fina   |
| Nivel de instruções(ILP) | Mais de uma instrução do mesmo programa sendo executada por multiplos núcleos                 |   Fina  |


### Qual conceito mais comum de multiprocessamento?
1) Usando mais de um processador físico ou 
2) Usando um processador com vários núcleos(core).
### Quais novos requisitos e dificuldades surgiram?
1. Programação voltada para o uso de multiplos núcleos;
2. O sistema operacional passa a ter de gerenciar o balancemaneto de carga dos núcleos, buscando manter um equilibrio entre eles;
3. **Granularidade**: O que estará em paralelismo? Programas? Threads? Instruções?(O sistema operacional tratá disto), os processos raramente se comunicam em granulidade grossa
4. **Escalabilidade**: Qual núcleo executa tal tarefa? Quando inciar, terminar e pausar uma execução paralela?
5. **Balanceamento de carga**: Quão trabalhoso é a divisão da tarefa, para que todos os núcleos tenham cargas de trabalho semelhantes?
6. **Sincronização**: Quão trabalhoso é a comunicação entre 2 núcleos, para que os 2 tenham tempos de resposta semelhantes?
7. **Vale a pena o paralelismo?** O tempo gasto em comunicação + processamento utilizando multiplos núcleos, é menor do que o tempo de processamento utilizando apenas um único núcleo? A comunicação entre núcloes leva certo tempo. **Enquanto não se comunica não se computa.**
### Quais vantagens surgiram?
1. Melhor desempenho na execução de instruções, programas e threads;
2. Mais de uma instrução, programa ou thread sendo executada simultaneamente;
### Hardware X Software
|              | Serial-Sequencial | Paralelo-Concorrente |
| ------------ | ------ | -------- |
| **Hardware** |     Pentium 4   |   Ryzen 5 3500x   |
| **Software** | Multiplicação de matriz   | Sistema Operacional     |

* Se o Software não for preparado para uma execução parelela, o uso de um processador paralelo não surtira efeito, pois os diversos núcleos não serão usados.
### Execução em paralelo
A imagem ilustra uma execução em parlelo, balanceando o uso de cada núcleo para que a tenham tempo de resposta semelhante.
![](https://i.imgur.com/xl8RySF.png)
### Classificação de Flynn
A classificação separa os programas em 4 grupos, categorizadas por instruçoes(única ou multiplas) atuando sobre dados(único ou multiplos)
![](https://i.imgur.com/UPjy90r.png)


| Classificação | Oque é?                                  | Exemplos                          | Visual deles    |
| ------------- | ---------------------------------------- | --------------------------------- | --- |
| SISD          | Uma instrução alterando um dado          | Computadores sequencias           | ![](https://i.imgur.com/ErSHjgI.png)|
| SIMD          | Uma instrução alterando varios dados     | Computadores vetoriais            | ![](https://i.imgur.com/4LSudiN.png) |
| MISD          | Varias intruçoes alterando um dado       | **Não existem**                   | ![](https://i.imgur.com/3kbqES6.png) |
| MIMD          | Varias instruçoes alterando varios dados | Múltiplos processadores em conjunto | ![](https://i.imgur.com/cajKcwJ.png) |