---
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.

### 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)

| Classificação | Oque é? | Exemplos | Visual deles |
| ------------- | ---------------------------------------- | --------------------------------- | --- |
| SISD | Uma instrução alterando um dado | Computadores sequencias | |
| SIMD | Uma instrução alterando varios dados | Computadores vetoriais |  |
| MISD | Varias intruçoes alterando um dado | **Não existem** |  |
| MIMD | Varias instruçoes alterando varios dados | Múltiplos processadores em conjunto |  |