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