Buscar

Arquitetura de Computadores - Processamento Paralelo

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 40 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 40 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 40 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

T5 - M1/M2/M3 1
🗒
T5 - M1/M2/M3
🗓 22/05/23
Processamento em Paralelo
Introdução
🎬 Introdução
M1 - Computação de alto desempenho por meio do processamento em paralelo
Evolução dos computadores
Paralelismo em nível de instruções e processadores superescalares
Superescalar e pipeline
🎬 Superescalar 
🎬 Execução de uma instrução em pipeline
Pipelines profundos
Superescalar X Superpipeline
M2 - Tipos de organizações de processadores paralelos
Múltiplos processadores
Arquitetura Clássica
Tipos de processadores paralelos – taxonomia de Flynn
🎬 Multiprocessadores Simétricos
🎬 Esquemas de interconexão de processadores
Coerência de cache
🎬 Arquiteturas de acesso à memória
M3 - Desempenho do hardware
Computadores multicore
🎬 Desempenho do Hardware
🎬 Desempenho do Software
Organização multicore
Níveis de cache e cache compartilhada
🎬 Arquitetura Multicore
Multithreading simultâneo
Considerações Finais
Referências
Explore +
T5 - M1/M2/M3 2
Processamento em Paralelo
Introdução
Com os avanços tecnológicos houve uma crescente necessidade em aumentar o 
desempenho dos equipamentos usados em nosso cotidiano. Exemplo disso são 
processos executados em nossos celulares, tablets e notebooks. Para atender a 
essas demandas, o processamento em paralelo fez com que as operações 
pudessem ser executadas independentemente, minimizando o tempo de execução. 
Assim, veremos o vínculo entre o alto desempenho da computação e o 
processamento em paralelo.
O vídeo introdutório a seguir nos faz compreender a importância por soluções 
paralelizáveis de modo a responder: o que é o processamento em paralelo?
🎬 Introdução
amos entender o conceito de processamento paralelo, que é a capacidade de 
executar várias instruções ao mesmo tempo. Para ilustrar sua importância, vamos 
analisar um exemplo simples: fazer compras em um supermercado. Se 
percorrêssemos os corredores aleatoriamente, qual seria o tempo necessário para 
completar a tarefa sem otimização? Isso dependeria das nossas decisões e do 
comportamento adotado. Para melhorar a eficiência, podemos otimizar nossa rota, 
percorrendo o supermercado de forma mais organizada e reduzindo o tempo gasto 
indo e voltando entre corredores. No entanto, essa otimização ainda não envolve 
paralelismo.
Agora, vamos pedir ajuda a outra pessoa, que pode ser considerada uma CPU. Se 
dividirmos a lista de compras em duas partes e cada uma cuidar de uma parte, 
provavelmente conseguiremos reduzir o tempo total em comparação com a ação 
anterior. Mas será mais eficiente do que a solução otimizada? A resposta dependerá 
de como isso for realizado.
Podemos ainda utilizar essa mesma pessoa para nos auxiliar de forma ordenada, 
dividindo a lista de compras de acordo com a disposição do supermercado em duas 
grandes áreas. Dessa forma, a tarefa será realizada em menos tempo. Seguindo 
essa analogia, as pessoas podem ser comparadas a diferentes CPUs ou cores de 
execução de uma CPU, e a lista de compras são as instruções a serem 
processadas. O paralelismo é utilizado pelos fabricantes de processadores para 
produzir soluções que processam instruções cada vez mais rápidas, não apenas 
T5 - M1/M2/M3 3
pela frequência do clock, mas também pela capacidade de escalonar em diferentes 
CPUs, como em máquinas multiprocessadoras e computadores multicore.
Ao considerarmos o paralelismo a nível de instrução e a nível de máquina, devemos 
analisar a situação em que três instruções de um código devem ser executadas. Se 
for possível executá-las em paralelo, sobrepondo as operações, isso é vantajoso. 
Caso contrário, se houver dependência entre as instruções, haverá um atraso 
devido a essa dependência. O paralelismo de instrução é determinado pela 
frequência em que ocorrem dependências no código, enquanto o paralelismo de 
máquina é a medida da capacidade do processador de aproveitar o paralelismo no 
nível das instruções.
Em relação à arquitetura dos processadores, vamos apresentar alguns conceitos, 
como arquitetura superescalar e superpipeline. O caminho de execução de uma 
instrução é dividido em estágios discretos que permitem que o processador execute 
várias instruções simultaneamente. Podemos comparar isso a uma linha de 
produção, onde um produto é construído em fases, e cada fase contribui para a 
construção final do produto. Cada fase é responsável por uma etapa específica, e o 
produto vai progredindo de fase em fase até ser concluído. Dessa forma, várias 
instruções podem estar sendo processadas simultaneamente em diferentes 
estágios do processador.
Na arquitetura superescalar, busca-se melhorar o desempenho da execução das 
instruções escalares comuns, como carregar valores da memória para registradores 
ou armazenar valores de registradores na memória, desvios condicionais, entre 
outros. Essas instruções podem ser iniciadas e executadas de forma independente, 
sem dependências entre elas. Já na arquitetura superpipeline, há múltiplos estágios 
do pipeline que executam tarefas que requerem apenas metade de um ciclo de 
clock, aproveitando melhor o tempo de cada ciclo. Isso é possível utilizando um 
relógio interno que controla os estágios, permitindo que duas tarefas sejam 
executadas no mesmo ciclo de clock.
Esses são alguns conceitos relacionados ao paralelismo e à arquitetura dos 
processadores, que visam melhorar o desempenho e a eficiência na execução de 
instruções.
M1 - Computação de alto desempenho por 
meio do processamento em paralelo
T5 - M1/M2/M3 4
Evolução dos computadores
Nas últimas décadas, os sistemas de computação se tornaram mais acessíveis em 
termos de custo, ao mesmo tempo em que sua capacidade e desempenho 
aumentaram significativamente. Hoje em dia, temos dispositivos como 
computadores, tablets e smartphones que possuem uma capacidade de 
processamento muito maior do que os computadores mainframes que existiam nas 
décadas de 1960 e 1970, considerados supercomputadores naquela época. Isso é 
ilustrado na imagem.
Essa evolução tecnológica nos permitiu superar as limitações do passado, tanto em 
termos de custo quanto de capacidade de processamento. Atualmente, existem 
diversas aplicações que exigem um alto poder de processamento em sistemas 
baseados em microprocessadores, como processamento de imagens, renderização 
3D, reconhecimento de voz, videoconferência, modelagem e simulação, entre 
outras.
Agora, vamos refletir: o que aconteceria se uma determinada tarefa fosse realizada 
por várias pessoas em vez de apenas uma?
As respostas podem variar, e uma delas poderia ser que a tarefa não seria 
concluída. No entanto, se dividíssemos as ações dessa tarefa de maneira 
organizada, buscando controlar a eficiência do processo, poderíamos obter os 
seguintes resultados:
A tarefa seria concluída no mesmo tempo.
O tempo necessário para concluir a tarefa seria reduzido.
A partir dessa análise, podemos entender a importância de buscar soluções que 
possam ser executadas em paralelo, já que a maioria das aplicações atuais, tanto 
A evolução da máquina.
T5 - M1/M2/M3 5
em software quanto em hardware, é implementada dessa forma.
Paralelismo em nível de instruções e processadores 
superescalares
Superescalar e pipeline
🎬 Superescalar 
Neste vídeo, vamos falar sobre a arquitetura superescalar. Esse termo se refere à 
organização dos elementos de hardware de um computador de forma que a CPU 
possa executar mais de uma instrução a cada ciclo de clock. Isso significa que 
podemos ter várias instruções sendo executadas em um curto espaço de tempo.
Na arquitetura superescalar, o processador determina se uma instrução depende ou 
não de outras instruções. Em seguida, utiliza várias unidades de execução para 
executar simultaneamente duas ou mais instruções independentes. Em resumo, a 
ideia principal da abordagem superescalar é permitir a execução independente e 
simultânea de diferentes tarefas.
Isso está relacionado à microarquitetura, que é a organização interna do 
microprocessador, incluindo seus componentes e conexões. O sistemabusca 
continuamente por instruções independentes que possam ser executadas em 
paralelo.
O termo "superescalar" foi criado em 1987 por Agerwala e Cocke, com o objetivo de 
melhorar o desempenho na execução de instruções em máquinas escalares.
Vamos comparar duas técnicas:
Superescalar: 
Nessa organização, instruções comuns, como operações matemáticas com 
números inteiros e de ponto flutuante, carregar valores da memória para 
registradores, armazenar valores dos registradores na memória e desvios 
condicionais podem ser iniciadas e executadas de forma independente.
Pipeline: 
Nessa técnica, o caminho de execução de uma instrução é dividido em estágios 
discretos, permitindo que o processador execute várias instruções simultaneamente, 
desde que cada estágio seja ocupado por apenas uma instrução durante um ciclo 
de relógio.
T5 - M1/M2/M3 6
Vamos usar um exemplo para entender a decomposição do processamento de 
instruções em um pipeline de seis estágios. Supondo que todos os estágios tenham 
a mesma duração, um pipeline de seis estágios pode reduzir o tempo de execução 
de 9 instruções de 54 unidades de tempo para apenas 14 unidades de tempo. Veja 
o diagrama ilustrativo:
Ver no material, pois ele é Animado.
🎬 Execução de uma instrução em pipeline
Vamos voltar um pouco no tempo, lá para a década de 70, quando surgiram os 
primeiros microprocessadores. Naquela época, o principal desafio tecnológico era 
construir processadores cada vez mais rápidos. Estamos falando de algumas 
dezenas de megahertz de clock, que é a frequência que sincroniza as operações 
internas do processador.
Conforme a tecnologia evoluiu, a frequência de operação aumentou. Hoje em dia, 
estamos na faixa de alguns gigahertz. No entanto, aumentar apenas a frequência 
não é suficiente para melhorar o desempenho do processador. Então, como 
podemos melhorar?
Vamos analisar um diagrama para entender melhor. Se observarmos uma CPU 
típica, podemos ver que ela possui cinco etapas para a execução de uma instrução: 
busca da instrução, decodificação, busca do operando, execução e escrita do 
T5 - M1/M2/M3 7
resultado. Em um processador clássico, cada instrução é executada em sequência, 
levando cinco ciclos de clock para ser concluída.
No entanto, nessa configuração clássica, várias unidades funcionais ficam ociosas 
enquanto uma instrução é executada. Por exemplo, na primeira etapa, as unidades 
funcionais 2, 3, 4 e 5 ficam ociosas. Para aproveitar melhor essas unidades e 
melhorar o desempenho, podemos utilizar uma técnica chamada pipeline.
O pipeline é como uma linha de montagem em uma fábrica de carros, onde cada 
operário realiza uma tarefa específica. A ideia do pipeline é aproveitar as unidades 
funcionais ociosas para adiantar a execução das próximas instruções. Dessa forma, 
enquanto uma instrução está em execução em uma unidade funcional, a próxima 
instrução já começa a ser executada em outra unidade funcional.
No segundo diagrama, podemos ver a execução em pipeline. A primeira instrução 
passa pelas cinco unidades funcionais sequencialmente, assim como na execução 
clássica. No entanto, a segunda instrução já começa a ser executada quando a 
primeira instrução libera a primeira unidade funcional. Isso resulta em um ganho de 
tempo significativo. Enquanto no primeiro diagrama foram necessários 10 ciclos de 
clock para executar duas instruções, no segundo diagrama, após o sexto ciclo de 
clock, as duas instruções estão prontas.
É importante ressaltar que esse exemplo é hipotético, assumindo que não há 
dependência entre as instruções. Na prática, pode haver dependências entre 
instruções, o que exigirá técnicas de sincronização. No entanto, mesmo que seja 
necessário interromper o pipeline por dependências, ainda há um ganho de 
desempenho na execução de instruções.
As técnicas VLIW (Very Long Instruction Word) e superescalar são usadas para 
melhorar o desempenho dos processadores executando várias instruções 
independentes ao mesmo tempo, em diferentes unidades de execução.
No caso da VLIW, um compilador é responsável por determinar quais instruções 
devem ser emitidas em cada ciclo de relógio. Já na abordagem superescalar, é o 
próprio processador que toma essa decisão.
A tecnologia Hyper-Threading (HT) da Intel introduziu o paralelismo ao criar dois 
processadores virtuais a partir de um único processador físico. Isso permite que um 
sistema operacional com suporte a multiprocessamento execute tarefas como se 
estivesse usando dois processadores, embora cada um opere a uma velocidade um 
pouco inferior à do processador físico.
T5 - M1/M2/M3 8
Os processadores vetoriais possuem uma unidade de processamento especializada 
que executa uma mesma operação em cada elemento de um conjunto de dados. 
Eles dependem de pipelines longos e altas frequências de clock.
Já os processadores matriciais, também conhecidos como processadores 
massivamente paralelos, possuem várias unidades de processamento que 
executam a mesma instrução em paralelo em muitos elementos de dados. Esses 
processadores são mais eficientes ao lidar com conjuntos de dados grandes e 
podem ter dezenas de milhares de elementos de processamento.
Veja o esquema a seguir:
A essência da abordagem superescalar é a possibilidade de execução 
independente e concorrente em pipelines diferentes, inclusive em ordem diversa 
daquela definida no programa.
Pipelines profundos
Organização escalar e superescalar.
T5 - M1/M2/M3 9
Pipelines profundos são como "equipes" dentro do processador, onde cada membro 
executa uma parte do trabalho para acelerar o processamento de várias instruções 
ao mesmo tempo. Isso significa que múltiplos elementos de dados podem ser 
manipulados simultaneamente.
No paralelismo do pipeline, diferentes estágios trabalham em instruções diferentes 
ao mesmo tempo, permitindo um aumento significativo na velocidade de 
processamento em comparação com a organização escalar tradicional, que possui 
uma única unidade funcional para operações inteiras e outra para operações de 
ponto flutuante.
Existem duas abordagens principais para aumentar o desempenho: superpipeline e 
superescalar.
Superescalar X Superpipeline
No superpipeline, vários estágios do pipeline executam tarefas que requerem 
menos da metade de um ciclo de clock. Isso permite dobrar a velocidade do clock 
interno, executando duas tarefas em um ciclo de clock externo. Essa abordagem é 
representada por um pipeline com dois estágios por ciclo de clock.
T5 - M1/M2/M3 10
Já o superescalar envolve a execução de duas instâncias de cada estágio do 
pipeline em paralelo. Isso é ilustrado por duas "equipes" trabalhando em conjunto. 
Nessa abordagem, é possível executar mais instruções simultaneamente, 
aumentando ainda mais o desempenho.
No entanto, é importante destacar que, embora essas abordagens possam executar 
várias instruções ao mesmo tempo, cada instrução está em um estágio diferente em 
um determinado momento. Comparando o superpipeline e o superescalar, o 
superescalar tem uma vantagem inicial e em pontos específicos do programa, pois 
pode executar mais instruções simultaneamente.
Questão 1
Considere um processador com pipeline ideal de 4 estágios, em que cada estágio 
ocupa um ciclo de processador. A execução de um programa com 9 instruções, 
utilizando os 4 estágios, levará
T5 - M1/M2/M3 11
A alternativa D está correta.
Veja como o cálculo foi feito:
Como existem 4 estágios, cada instrução demandará percorrer 4 ciclos para ser 
executada e cada estágio ocupa 1 ciclo.
NI = número da instrução
Ciclo 1º estágio 2º estágio 3º estágio 4º estágio
1 1l
2 2l 1l
3 3l 2l 1l 0
4 4l 3l 2l 1l
5 5l 4l 3l 2l
6 6l 5l 4l 3l
7 7l 6l 5l 4l
8 8l 7l 6l 5l
9 9l 8l 7l 6l
10 9l 8l 7l
11 9l 8l
12 9l
Assim, serão necessários 12 ciclos para que a nona instrução seja executada 
completamente.
M2 - Tipos de organizações de 
processadores paralelos
Múltiplos processadores
Arquitetura Clássica
Muitas pessoas veem os computadores como máquinas que executamtarefas em 
uma sequência ordenada, seguindo as instruções de um programa. Isso acontece 
porque a maioria das linguagens de programação exige que as instruções sejam 
escritas de forma contínua e em ordem.
T5 - M1/M2/M3 12
No entanto, se olharmos mais de perto o funcionamento interno dessas máquinas, 
podemos perceber que elas são capazes de realizar várias operações ao mesmo 
tempo, de forma paralela e invisível para nós. Isso é possível graças a técnicas 
como o pipeline de instruções, em que as operações de leitura e execução são 
sobrepostas, permitindo um processamento mais eficiente.
Uma das razões para essa eficiência é a redução do custo de hardware, com 
projetos de arquitetura que tornam as operações mais rápidas, confiáveis e 
disponíveis. As soluções paralelas são uma resposta a essa demanda, permitindo 
que os computadores executem tarefas de forma simultânea, aumentando sua 
eficiência.
Tipos de processadores paralelos – taxonomia de Flynn
Na década de 1960, Michael J. Flynn propôs um esquema pioneiro para classificar 
computadores de acordo com seu nível de paralelismo. Essa classificação é 
conhecida como taxonomia de Flynn e é baseada nos diferentes tipos de fluxos 
(sequências de bytes) usados pelos processadores, que podem ser fluxos de 
instruções ou de dados.
A taxonomia de Flynn possui quatro categorias principais, conforme mostrado na 
tabela a seguir:
SISD (Single Instruction Single Data): Nessa categoria, temos um único fluxo de 
instruções e um único fluxo de dados. É o caso dos monoprocessadores 
tradicionais, em que uma única instrução é executada em um único dado por 
vez.
T5 - M1/M2/M3 13
MISD (Multiple Instruction Single Data): Aqui, temos múltiplos fluxos de 
instruções e um único fluxo de dados. Essa categoria representa uma máquina 
teórica em que várias instruções são aplicadas em um mesmo dado 
simultaneamente.
SIMD (Single Instruction Multiple Data): Nessa categoria, temos um único fluxo 
de instruções e múltiplos fluxos de dados. É o caso das máquinas vetoriais, em 
que uma única instrução é aplicada a múltiplos dados simultaneamente.
MIMD (Multiple Instruction Multiple Data): Nessa categoria, temos múltiplos 
fluxos de instruções e múltiplos fluxos de dados. Representa sistemas com 
vários processadores independentes, como SMP (Multiprocessamento 
Simétrico), clusters e NUMA (Acesso Não Uniforme à Memória).
Essa classificação de Flynn nos ajuda a entender os diferentes tipos de arquiteturas 
de computadores e como eles aproveitam o paralelismo para melhorar o 
desempenho e a eficiência.
Veja o esquema seguir:
Organizações alternativas de computadores.
T5 - M1/M2/M3 14
🎬 Multiprocessadores Simétricos
O Multiprocessador Simétrico é uma arquitetura independente que possui dois ou 
mais processadores semelhantes. Os seus processadores são interligados entre si 
atráves de barramentos e compartilham recursos como a memória principal (MP) e 
os dispositivos de E/S. 
Mas duas importantes caracteristicas sobre o multiprocessamento simetrico é que 
todos os processadores desempenham as mesmas funções, dai a origem do termo 
simetrico. E por fim todo o controle é feito pelo sistema operacional (SO), que 
integra os processadores aos programas, dados e tarefas.
Há algumas décadas, os computadores pessoais e máquinas semelhantes tinham 
apenas um processador de uso geral. Mas com o avanço da tecnologia e a redução 
de custos na produção de componentes de hardware, foi possível melhorar o 
desempenho dessas máquinas.
Os fabricantes passaram a introduzir sistemas chamados SMP, que significa 
"multiprocessamento simétrico" em inglês. Isso se refere à arquitetura de hardware 
e ao comportamento dos sistemas operacionais.
Um sistema SMP tem as seguintes características:
Possui dois ou mais processadores semelhantes, ou seja, com capacidades 
comparáveis.
Os processadores compartilham a mesma memória principal e os dispositivos 
de entrada e saída. Eles também são interconectados por barramentos ou 
outros mecanismos de conexão para garantir tempos de resposta equilibrados 
para cada processador.
Todos os processadores desempenham as mesmas funções. O termo 
"simétrico" vem dessa afirmação.
O sistema é controlado por um sistema operacional integrado que permite a 
integração entre os processadores, gerenciando programas, arquivos, dados e 
tarefas.
Antes, as máquinas com um único processador executavam as instruções 
sequencialmente. Com a inclusão de multiprocessadores, as operações podem ser 
executadas de forma independente, o que reduz o tempo de execução. No entanto, 
a conexão dos processadores em máquinas multiprocessadas pode criar gargalos 
de desempenho. Por isso, é importante analisar as formas de conexões físicas entre 
T5 - M1/M2/M3 15
os processadores. O vídeo a seguir abordará esses conceitos de forma mais 
detalhada.
🎬 Esquemas de interconexão de processadores
Hoje vamos falar sobre a conexão de processadores em máquinas 
multiprocessadoras e como isso pode afetar o desempenho e custo do projeto.
Existem diferentes formas de conectar os processadores fisicamente em uma 
máquina multiprocessadora, e essa escolha pode influenciar em gargalos de 
desempenho e custo. Vamos analisar como essa conexão é feita e como os 
processadores têm acesso à memória principal.
Os sistemas de interconexão em máquinas multiprocessadoras são compostos por 
nós e laços, que são as conexões entre os componentes do sistema. Existem 
diferentes arquiteturas de interconexão, que são definidas no projeto da máquina 
multiprocessadora. Essas máquinas podem ter de duas a centenas ou até milhares 
de CPUs.
Podemos analisar a história da computação e ver a evolução dos computadores, 
mas vamos focar na computação de alta performance. Atualmente, existem duas 
principais abordagens no projeto de supercomputadores. Uma delas é a arquitetura 
de máquinas fortemente acopladas, em que todos os processadores estão em uma 
única máquina, formando um acoplamento forte. Essas máquinas são conhecidas 
como máquinas multiprocessadoras, como as máquinas vetoriais e as SMP 
(multiprocessadores simétricos).
Por outro lado, nas últimas décadas, houve um crescimento significativo das 
máquinas fracamente acopladas. Nesse caso, as diferentes máquinas são 
conectadas por uma rede de computadores de alta velocidade e coordenadas por 
software, formando uma única máquina de grande escala. Essas máquinas são 
chamadas de multicomputadores.
Vamos analisar mais de perto as máquinas multiprocessadoras, em que a forma de 
conexão é feita por barramento. O exemplo mais simples é um barramento único 
que permite a conexão de vários processadores. Podemos fazer uma analogia com 
a comunicação de dois rádios. Se duas pessoas falarem ao mesmo tempo, haverá 
uma colisão de mensagens, e a comunicação será interrompida. Agora, se 
adicionarmos mais um rádio, a coordenação dessa comunicação se torna mais 
complexa. Há um limite máximo para a adição de novos participantes nesse sistema 
para garantir seu funcionamento.
T5 - M1/M2/M3 16
Existem diferentes estruturas e dispositivos controladores para viabilizar a 
comunicação no projeto desses computadores. Essa complexidade não está 
apenas relacionada ao custo de fornecer mais processadores, mas também à 
performance dessas máquinas. Um exemplo de barramento compartilhado é o 
barramento cruzado, como o computador Cray. Nesse caso, diferentes linhas de 
barramento de alta velocidade não se cruzam fisicamente, mas há comutadores 
inteligentes que permitem que uma CPU se conecte a qualquer linha ou coluna da 
matriz.
Outra estrutura física utilizada é a malha 2D, em que os elementos processadores 
são conectados a outras quatro CPUs, formando uma estrutura plana de um 
retângulo. Essa solução não é tolerante a falhas, pois não possui redundância nas 
conexões finais, mas é melhor do que as barras simples e pode ser usada em 
sistemas de grande escala.
Há também a ligação em toros, em que os elementos da malha são conectados àsextremidades, formando uma estrutura de cilindro. Por fim, temos o modelo Hiper, 
que consiste em conectar cubos formados a partir de uma malha 2D. Essa estrutura 
permite uma conexão com diâmetro igual a quatro, e é eficiente em larga escala.
Os modelos de barramento são representados por comutadores inteligentes, que 
têm duas entradas e podem direcionar qualquer sinal recebido para qualquer uma 
das suas saídas. Redes de torus e Hiper são exemplos desse modelo. A taxa de 
crescimento desses comutadores é logarítmica quando comparada à matriz de 
barras cruzadas, que tem um crescimento exponencial. Isso significa que o custo 
associado ao número de comutadores será menor nesse caso.
No entanto, esse tipo de barramento é considerado bloqueante, pois permite 
apenas conexões individuais. Apesar disso, possui boa escalabilidade. É importante 
considerar essas diferentes estruturas e dispositivos controladores no projeto de 
máquinas multiprocessadoras, levando em conta o custo e a complexidade dessas 
soluções.
Coerência de cache
Quando os caches foram introduzidos nas arquiteturas de computadores, a 
coerência de memória se tornou uma consideração importante no projeto. Isso 
ocorreu porque os computadores passaram a ter diferentes caminhos de acesso 
aos dados, seja por meio do cache ou da memória principal. Em sistemas 
T5 - M1/M2/M3 17
multiprocessadores, lidar com a coerência de cache se tornou complexo devido ao 
fato de cada processador ter seu próprio cache privado.
Vamos entender melhor:
Coerência de cache UMA
Em sistemas multiprocessadores UMA (Uniform Memory Access), é relativamente 
simples implementar protocolos de coerência de cache, pois os caches são 
pequenos em tamanho e o barramento que conecta a memória compartilhada é 
rápido. Quando um processador atualiza um dado, o sistema precisa atualizar ou 
descartar todas as cópias desse dado nos caches dos outros processadores e na 
memória principal. Isso é feito por meio de escuta do barramento, onde um 
processador "escuta" as transações realizadas no barramento para determinar se a 
escrita de outro processador se destina ao dado presente em seu cache. Se o dado 
estiver no cache do processador, ele é removido.
A escuta do barramento é uma implementação simples, mas gera tráfego adicional 
no barramento compartilhado.
NUMA com cache coerente (CC-NUMA)
Em sistemas multiprocessadores NUMA com coerência de cache (Cache Coherent 
NUMA - CC-NUMA), cada endereço de memória física está associado a um nó 
nativo responsável por armazenar os dados daquele endereço. Em uma arquitetura 
CC-NUMA típica, o nó nativo é determinado pelos bits mais significativos do 
endereço de memória.
Quando ocorre uma falha de cache em um nó, ele contata o nó associado ao 
endereço de memória solicitado:
Se o dado estiver "limpo" (ou seja, nenhum outro nó tem uma versão modificada 
desse dado em seu cache), o nó nativo envia o dado para o cache do 
processador solicitante.
Se o dado estiver "sujo" (ou seja, outro nó fez uma modificação no dado desde 
a última atualização na memória principal), o nó nativo envia a solicitação para o 
nó que possui a cópia modificada. Esse nó envia o dado tanto para o 
requisitante quanto para o nó nativo.
As solicitações para modificar dados são feitas através do nó nativo. Quando um nó 
deseja modificar dados em um determinado endereço de memória, ele solicita a 
propriedade exclusiva dos dados.
T5 - M1/M2/M3 18
A versão mais recente dos dados, caso não esteja no cache do nó que deseja 
modificá-los, é obtida da mesma forma que uma solicitação de leitura. Após a 
modificação, o nó nativo notifica os outros nós que possuem cópias dos dados de 
que houve uma modificação.
Esse protocolo é relativamente simples de implementar, pois todas as leituras e 
escritas passam pelo nó nativo. Embora possa parecer ineficiente e envolver um 
grande número de comunicações na rede, ele facilita a distribuição de carga em 
todo o sistema, garantindo que cada nó nativo tenha aproximadamente o mesmo 
número de endereços. Isso aumenta a tolerância a falhas e reduz a contenção. No 
entanto, esse
protocolo pode ter um desempenho ruim se a maioria dos acessos aos dados vier 
de nós remotos.
Existem diferentes classificações para arquiteturas de máquinas multiprocessadas. 
No vídeo a seguir, abordaremos esses tipos de classificação de forma mais 
detalhada.
🎬 Arquiteturas de acesso à memória
Existem diferentes formas de classificar as arquiteturas de máquinas 
multiprocessadas. Uma delas é baseada no acesso à memória principal das CPUs. 
Vamos analisar o caso de um computador com uma única CPU para entender 
melhor. Nesse caso simples, a comunicação da CPU é realizada por barramentos 
dedicados. Agora, se adicionarmos mais CPUs, essas CPUs terão que compartilhar 
o mesmo barramento, o que torna a gestão dessa comunicação mais complexa 
devido à concorrência.
Existem diferentes soluções para viabilizar essa comunicação, como o uso de 
computadores inteligentes no barramento compartilhado. Cada projeto de máquina 
multiprocessada busca soluções específicas para aumentar a eficiência do 
barramento e melhorar o desempenho. Uma dessas soluções é o acesso uniforme à 
memória (UMA), em que todas as CPUs têm acesso à memória principal por meio 
de um barramento compartilhado.
No entanto, essa solução linear cria um gargalo devido ao compartilhamento do 
barramento. Para reduzir o tráfego nesse barramento e melhorar o desempenho, 
surge o conceito de memória distribuída. Nesse caso, cada CPU tem seu próprio 
barramento dedicado para acessar sua memória principal específica. No entanto, se 
uma CPU precisar acessar a memória de outra CPU, ela terá que recorrer ao 
barramento compartilhado.
T5 - M1/M2/M3 19
Essa não uniformidade no acesso à memória cria diferentes barramentos de acesso 
com possíveis latências distintas para cada tipo de acesso. Além disso, existe o 
modelo de memória cache, que é uma memória de alta velocidade associada a 
cada CPU, mas com custo mais alto em comparação com a memória principal. O 
objetivo é melhorar a velocidade de acesso em relação a outros modelos.
Outra abordagem é a arquitetura de computadores multicomputadores, em que 
várias máquinas processam instruções de forma colaborativa. Cada máquina tem 
sua própria CPU e acesso somente à sua memória principal local. Não há um 
espaço de endereçamento único entre esses computadores, mas o resultado é visto 
como se viesse de uma única grande máquina.
Também é possível classificar os computadores multiprocessados com base na 
quantidade de fluxos de instruções e dados. Podemos ter múltiplos fluxos de 
instruções atuando em um único fluxo de dados, múltiplos fluxos de instruções 
atuando em vários fluxos de dados simultaneamente, ou até mesmo múltiplos fluxos 
de instruções e fluxos de dados atuando no mesmo dado ao mesmo tempo. Essa 
classificação tem aplicações teóricas, mas não é comumente utilizada na prática.
Em resumo, as arquiteturas de máquinas multiprocessadas podem ser classificadas 
de acordo com o acesso à memória (compartilhada, distribuída, cache) e a 
quantidade de fluxos de instruções e dados. Cada abordagem tem suas vantagens 
e desvantagens, e a escolha dependerá das necessidades e requisitos do projeto.
A seguir, apresentamos a taxonomia de múltiplos processadores e classificação 
segundo o acesso à memória:
T5 - M1/M2/M3 20
Questão 1
Em relação ao multiprocessamento simétrico (SMP), é correto afirmar:
I. Os processadores compartilham a mesma memória principal, mas cada um deles 
usa os seus próprios recursos de E/S;
II. O termo “simétrico” faz alusão ao fato de que todos os processadores executam 
as mesmas funções;
III. Existem, no mínimo, dois processadores com capacidades semelhantes.
Assinale a alternativa correta.
A alternativa D) ll e lll está correta.
Em um sistema SMP todos os processadores desempenham as mesmas funções, 
sendo essa a razão desse multiprocessamento ser chamado de simétrico. Além 
disso, onúmero de processadores semelhantes, ou seja, com capacidades que 
podem ser comparadas, é de dois ou mais processadores.
Portanto, as afirmações II e III estão corretas. Por outro lado, a afirmação I está 
incorreta, pois tanto a memória principal quanto os dispositivos de E/S são 
compartilhados pelos processadores em um sistema de multiprocessamento 
simétrico (SMP). Assim, a alternativa correta é a D.
Taxonomia de múltiplos processadores e classificação segundo o acesso à memória.
T5 - M1/M2/M3 21
Questão 2
Quanto à comparação entre organizações de acesso uniforme à memória (UMA) e 
acesso não uniforme à memória (NUMA), pode-se afirmar:
I. No UMA, a uniformidade do acesso à memória é garantida em função do acesso à 
memória por meio de um barramento comum compartilhado por todos os 
processadores.
II. No NUMA, há barramentos independentes entre os módulos de memória e os 
processadores. Além disso, poderá haver um barramento compartilhado para 
permitir a comunicação entre os processadores.
III. Tanto no UMA como no NUMA, não haverá limitações em função da taxa de 
processadores nessas estruturas.
Assinale a alternativa correta:
A alternativa C) l e ll está correta.
As alternativas I e II estão especificadas na própria definição dessas organizações. 
Entretanto, na afirmativa III haverá problemas de escala em ambas as soluções: 
incialmente na UMA, por se tratar de um barramento único compartilhado, o 
aumento de processadores introduzirá uma maior complexidade no controle de fluxo 
de comunicação entre os processadores e, consequentemente, o barramento 
tenderá a saturar mais facilmente do que no NUMA.
M3 - Desempenho do hardware
Computadores multicore
Um processador multicore é aquele que possui várias unidades de processamento, 
conhecidas como cores, em um único chip de silício. Cada um desses cores é 
essencialmente um processador completo, com seus próprios componentes 
independentes, como registradores, unidade lógica e aritmética (ULA), pipeline de 
hardware e unidade de controle (UC). Além disso, cada core possui suas próprias 
caches L1 para armazenar dados e instruções, bem como caches L2 e L3.
Alguns processadores multicore vão além e também incluem memória e 
controladores de periféricos, permitindo uma maior integração de funcionalidades 
em um único chip. Isso significa que esses processadores são capazes de executar 
várias tarefas simultaneamente, dividindo a carga de trabalho entre os diferentes 
T5 - M1/M2/M3 22
cores, o que resulta em um aumento significativo no desempenho e na eficiência do 
sistema.
🎬 Desempenho do Hardware
Quando falamos sobre o desempenho de computadores, muitas vezes precisamos 
buscar maneiras de melhorar o seu desempenho para executar aplicações mais 
exigentes. Um exemplo comum são as aplicações de computação gráfica e de 
aprendizado de máquina, que demandam um alto desempenho. Desde o 
surgimento dos computadores, houve uma preocupação em evoluir os 
processadores para atender a essas demandas.
Essa evolução inicialmente se baseou no aumento do paralelismo nas instruções 
dos processadores. Isso resultou em soluções como o pipeline, a execução 
superescalar e o multithreading simultâneo. Cada uma dessas soluções aumentou a 
complexidade da arquitetura dos sistemas, e também enfrentou restrições de 
produção e garantia de qualidade. Por exemplo, com as novas arquiteturas de 
processadores, foi necessário aumentar a quantidade de transistores por chip, o 
que resultou em um aumento no consumo de energia e na geração de calor.
É importante destacar que o aumento da complexidade de um sistema não gera um 
aumento proporcional na eficiência. Isso foi formalizado pela "regra de polac", que 
associa o aumento de desempenho à raiz quadrada do aumento da complexidade. 
Apesar dessas limitações, é evidente que a evolução das arquiteturas de hardware 
é extremamente importante para melhorar o desempenho das aplicações. Por isso, 
a indústria investe tanto nessa área.
Os projetos de evolução dos processadores buscaram inicialmente aumentar o 
paralelismo nas instruções, ou seja, realizar mais trabalho em cada ciclo de clock. 
Para isso, foram desenvolvidas soluções como o pipeline, a estrutura superescalar 
e o SMT (multithreading simultâneo). Cada uma dessas soluções tinha como 
objetivo melhorar o desempenho do sistema, tornando-o mais eficiente.
No entanto, essas soluções enfrentaram algumas limitações relacionadas aos 
processos de fabricação e aos materiais utilizados. Além disso, era necessário 
garantir um controle mais preciso para que as soluções fossem eficientes.
Com o avanço na construção dos processadores, o número de transistores por chip 
aumentou, assim como as frequências de clock. Isso resultou em um aumento 
significativo no consumo de energia e na geração de calor, entre outros desafios 
que surgiram.
T5 - M1/M2/M3 23
Observe a comparação:
Superscalar
Multithreading Simultâneo
Multicore
Arquitetura Superescalar.
Aquitetura multithreading.
T5 - M1/M2/M3 24
Podemos usar a Regra de Pollack para entender melhor esse conceito. Segundo 
essa regra, o aumento de desempenho está diretamente relacionado à raiz 
quadrada do aumento da complexidade. Por exemplo, se duplicarmos a lógica em 
um núcleo do processador, o ganho de desempenho será de apenas 40%. No 
entanto, ao utilizar vários núcleos, podemos aumentar o desempenho de forma 
quase linear, desde que o software seja capaz de aproveitar essa vantagem.
Além disso, a capacidade de integração dos chips é importante, pois permite 
aumentar proporcionalmente o espaço disponível para as caches. Isso resulta em 
menor consumo de energia, o que é muito importante para a eficiência do sistema.
🎬 Desempenho do Software
Vamos falar um pouco sobre o desempenho do software. Neste momento em que 
você está assistindo a este vídeo, você está tendo uma experiência com uma 
aplicação que depende do hardware do seu dispositivo. A arquitetura do hardware 
tem um grande impacto no desempenho da aplicação, especialmente quando a 
aplicação envolve diferentes tarefas.
Por exemplo, enquanto você assiste a este vídeo, você percebe o áudio, os 
recursos visuais e as cores. Agora, pense: esses recursos precisam ser 
gerenciados de forma sequencial? A resposta é não. É muito importante encontrar 
tarefas que podem ser executadas em paralelo para garantir um bom desempenho 
da aplicação.
Arquitetura multicore.
T5 - M1/M2/M3 25
Outro exemplo disso é a computação gráfica usada em jogos eletrônicos. Esses 
jogos envolvem muitas operações de áudio, vídeo e animações que podem ser 
executadas simultaneamente. É comum também em processamento de imagens e 
muitas outras situações práticas onde a execução paralela traz benefícios 
significativos, especialmente em aplicações para servidores, como aplicações 
multitarefas.
Existem diferentes maneiras de medir o desempenho de softwares, incluindo a 
análise do tempo necessário para executar as partes sequenciais e paralelizáveis, 
levando em consideração o overhead do escalonamento.
Estudos mostram que mesmo que uma pequena parte do código seja sequencial, 
executá-lo em um sistema com vários núcleos pode ser vantajoso em comparação 
com soluções de um único núcleo. Os softwares desenvolvidos para servidores 
também podem se beneficiar de uma estrutura multicore paralela, já que os 
servidores geralmente lidam com várias transações simultâneas e, muitas vezes, 
independentes umas das outras.
No caso de softwares de uso geral para servidores, é possível identificar vantagens 
ao considerar a capacidade de aumentar o desempenho em relação ao número de 
núcleos. O autor Stallings (2017) apresenta vários exemplos disso.
Aplicações multithread nativas (paralelismo em nível de thread)
São caracterizadas por possuírem um pequeno número de processos com alto 
nível de paralelização.
Aplicações com múltiplos processos (paralelismo em nível de processo) 
São caracterizadas pela presença de muitos processos de thread única (threadspodem ser consideradas como fluxos de um processo).
Aplicações Java
Aceitam threads de uma maneira natural, isto é, a Máquina Virtual Java (JVM) é 
um processo multithread que permite o escalonamento e o gerenciamento de 
memória para aplicações Java.
T5 - M1/M2/M3 26
Aplicações com múltiplas instâncias (paralelismo em nível de aplicação)
Mesmo que uma aplicação individual não possa ser dimensionada para obter 
vantagem em um número grande de threads, ainda é possível que se beneficie 
com a execução de várias instâncias da aplicação em paralelo.
Organização multicore
As Principais variáveis em uma organização multicore são:
Número de cores processadores no chip
Número de níveis da memória cache
Quantidade de memória cache compartilhada
Emprego do multithreading simultâneo (SMT)
Níveis de cache e cache compartilhada
Dada a importância dos caches em uma arquitetura multicore, ilustramos as 
organizações de cache a seguir:
Cache L1 dedicada
Há dois ou mais processadores semelhantes (capacidades que podem ser 
comparadas).
T5 - M1/M2/M3 27
Cache L2 dedicada
As caches L1 não são compartilhadas, mas, neste caso, há espaço suficiente no 
chip para permitir a cache L2. Exemplo: AMD Opteron e Athlon X2.
Cache L2 compartilhada
T5 - M1/M2/M3 28
É representada uma organização semelhante ao item anterior, mas agora o uso de 
cache L2 é compartilhada. Exemplo: Intel Core Duo – esse foi um marco definido 
pela Intel para a construção de processadores multicore com maior eficiência.
O uso de caches L2 compartilhadas no chip possui inúmeras vantagens quando 
comparado à dependência exclusiva das caches dedicadas, como, por exemplo, a 
comunicação mais eficiente entre os processadores e a implementação de caches 
coerentes.
Cache L3 compartilhada
Representa a possibilidade de expansão na quantidade de área disponível para 
caches no chip. Aqui, temos a divisão de uma cache L3 separada e compartilhada, 
com caches L1 e L2 dedicadas para cada core do processador. Exemplo: o Intel 
Core I7.
T5 - M1/M2/M3 29
🎬 Arquitetura Multicore
Vamos voltar um pouco no tempo, lá para a década de 70, quando surgiram os 
primeiros microprocessadores. Naquela época, as técnicas de construção de 
circuitos integrados permitiam construir circuitos simples, não sendo possível 
colocar muitos transistores em uma única pastilha semicondutora. Com o avanço 
das técnicas de litografia ao longo dos anos, fomos capazes de colocar cada vez 
mais transistores em uma pastilha de silício, tornando os processadores cada vez 
menores.
Chegou um momento em que uma única pastilha de silício poderia abrigar mais de 
um processador, e assim surgiu o paralelismo de processos, que permite que um 
processador execute simultaneamente dois processos ou threads. Os processos 
são independentes, embora compartilhem memória, e basicamente são dois 
processos que executam em paralelo. A primeira arquitetura de multithreading que 
surgiu era composta por duas CPUs completamente independentes, capazes de 
executar paralelamente dois processos.
No entanto, essa arquitetura enfrentava um grande problema: a sincronização da 
comunicação entre os processos. Cada processador tinha apenas uma cache L1 
em cada um de seus núcleos. A cache L1 foi projetada para facilitar a execução do 
pipeline. O problema era que, sempre que era necessário buscar ou sincronizar 
operações, era preciso acessar a memória principal, que é mais lenta em 
T5 - M1/M2/M3 30
comparação com a CPU. Isso resultava em uma comunicação um pouco mais lenta 
entre os processos, limitando o aproveitamento total das possibilidades de uma 
arquitetura multicore como essa que foi a primeira a ser desenvolvida.
Atualmente, com o avanço da tecnologia e a miniaturização, essa arquitetura 
evoluiu para uma configuração mais eficiente. Por exemplo, a configuração do 
processador Intel Core i7 possui três níveis de cache dentro do processador. Além 
disso, temos a unidade de controle de acesso à memória, concentrando toda a 
comunicação com a memória principal dentro do chip multicore. Essa configuração 
permite um melhor desempenho, pois as informações compartilhadas pelas threads 
são armazenadas na cache L3 e ambos os processadores podem acessá-la 
diretamente, evitando gargalos de comunicação.
É importante destacar que existe um mecanismo de controle para garantir a 
coerência dos dados entre as caches. Por exemplo, as informações presentes na 
cache L3 provavelmente também estarão na cache L2, e essas informações 
precisam ser replicadas e controladas para garantir a sincronia entre os dados nos 
três níveis de cache. Esse é o principal desafio da arquitetura multicore: manter a 
coerência da memória.
Com o aumento na quantidade de transistores para implementar esses mecanismos 
de controle, a arquitetura consome mais energia. Por exemplo, o processador Core 
i7 consome mais energia do que a arquitetura anterior que não tinha essa 
preocupação.
Multithreading simultâneo
Outro ponto importante a ser considerado no projeto de sistemas multicore é a 
capacidade dos núcleos individuais e a possibilidade de implementar o 
multithreading simultâneo (SMT), também conhecido comercialmente como hyper-
threading.
Vamos comparar duas arquiteturas:
Intel Core Duo: utiliza núcleos superescalares puros.
Intel Core i7: utiliza núcleos com SMT.
Agora, vamos comparar a execução de várias threads em diferentes arquiteturas de 
processadores:
T5 - M1/M2/M3 31
Vamos descrever cada caso:
(a) Superescalar: No primeiro exemplo, com um único processador 
superescalar, o processador está em uso, mas cerca de metade do tempo do 
processador fica ocioso.
(b) Multiprocessamento: No caso do multiprocessamento, podemos ver um 
sistema com duas CPUs trabalhando em threads separados. No entanto, 
novamente cerca de 50% do tempo das CPUs permanecem ociosos.
(c) Hyper-threading: No terceiro caso, um único processador está habilitado 
para hyper-threading, o que significa que os dois threads estão sendo 
executados simultaneamente e a eficiência da CPU aumentou de cerca de 50% 
para mais de 90%.
(d) Multiprocessamento com hyper-threading: No último exemplo, há dois 
processadores habilitados para hyper-threading, o que permite o funcionamento 
Exemplo de execução de threads com: (a) um processador escalar; (b) dois processadores; (c) um 
processador habilitado com hyper-threading; (d) dois processadores habilitados com hyper-
threading.
T5 - M1/M2/M3 32
de quatro threads independentes ao mesmo tempo. Mais uma vez, a eficiência 
da CPU é de cerca de 90%. Nesse caso, temos quatro processadores lógicos e 
dois processadores físicos.
Para concluir, é importante avaliar os benefícios quando os softwares são 
desenvolvidos para aproveitar recursos paralelos, dando destaque para a 
abordagem SMT.
Questão 1
Dentre as alternativas abaixo, qual delas não é considerada uma das principais 
variáveis na organização multicore?
A alternativa C) Cache L1 Compartilhada está correta.
A quantidade de cache compartilhada é importante, mas não exclusivamente a 
cache L1.
Questão 2
Considere os termos abaixo e relacione-os aos respectivos significados:
I. Simultaneous Multiprocessing (SMP)
II. Multithreading
III. Multithreading simultâneo SMT
IV. Multicore
A. Processador possui a capacidade de executar mais de uma thread no mesmo 
instante.
B. Técnica que permite explorar TLP (paralelismo a nível de threads) e ILP 
(paralelismo a nível de instrução).
C. Múltiplos núcleos de execução em um processador.
D. Arquitetura que permite a mais de um processador compartilhar recursos de 
memória, discos e rodar no mesmo SO.
Assinale a alternativa correta:
A alternativa D está correta.
A configuração correta é:
I- Simultaneous Multiprocessing (SMP) -> D – arquitetura que permite a mais de um 
processador compartilhar recursos de memória, discos e rodar no mesmo SO.
T5 - M1/M2/M3 33
II- Multithreading -> A – processador possui a capacidade de executar mais de uma 
thread no mesmo instante.III- Multithreading simultâneo SMT -> B – técnica que permite explorar TLP 
(paralelismo a nível de threads) e ILP (paralelismo a nível de instrução).
IV- Multicore -> C – Múltiplos núcleos de execução em um processador.
Considerações Finais
Muitas das limitações encontradas no desenvolvimento de dispositivos com melhor 
desempenho estavam relacionadas ao controle da temperatura gerada por seus 
componentes. Quando os transistores ficam menores, tentamos construir 
processadores mais rápidos, mas isso resulta em maior consumo de energia, o que 
gera mais calor.
Simplesmente aumentar o desempenho sem considerar outros aspectos resultava 
em processadores instáveis e não confiáveis. Além disso, enfrentávamos restrições 
físicas, como a estabilidade dos materiais utilizados e a redução de suas 
dimensões.
As arquiteturas paralelas surgiram para lidar com esses desafios, permitindo a 
integração de elementos de hardware e aproveitando o aumento de desempenho 
não apenas pela velocidade de processamento, mas também pela capacidade de 
executar tarefas em paralelo.
Diferentes soluções foram idealizadas para o processamento paralelo, como 
estruturas superescalares, superpipeline e multiprocessadores simétricos. Essas 
soluções possibilitaram a criação de computadores e dispositivos com alto 
desempenho.
Os processadores multicore, por sua vez, são uma opção economicamente viável 
para produção em larga escala. Eles oferecem alta capacidade de processamento, 
são confiáveis, estáveis e podem ser integrados com outros componentes em 
dispositivos diversos.
Referências
MONTEIRO, M. Introdução à Organização de Computadores. 5. ed. Rio de 
Janeiro: LTC, 2007.
T5 - M1/M2/M3 34
STALLINGS, W. Arquitetura e organização de computadores. 10. ed. São Paulo: 
Pearson Education do Brasil, 2017.
TANENBAUM, A. S.; STEEN, M. Sistemas Distribuídos: Princípios e Paradigmas. 
2. ed. São Paulo: Pearson Prentice Hall, 2007.
Explore +
Pesquise o modo de fabricação do processador Intel.
A fabricação dos processadores Intel segue um processo chamado de tecnologia de 
fabricação de semicondutores. Vou explicar resumidamente como funciona esse 
processo:
1. Projeto do chip: O processo começa com o projeto detalhado do chip, onde são 
definidos os circuitos, transistores, caches e outros componentes que estarão 
presentes no processador.
2. Máscara: Com o projeto concluído, é criada uma máscara, que é uma espécie 
de molde que será usado para imprimir os circuitos do processador em uma 
placa de silício.
3. Silício: A placa de silício é preparada, geralmente a partir de um disco de silício 
monocristalino. A superfície do silício é limpa e recebe camadas de materiais 
isolantes e condutores para formar o substrato.
4. Fotolitografia: Nessa etapa, a máscara é usada para transferir o padrão do 
projeto para a placa de silício. Isso é feito através da exposição da placa à luz 
ultravioleta, que passa pela máscara e cria o padrão desejado nos materiais 
depositados na placa.
5. Implantação iônica: Após a fotolitografia, a placa de silício passa por um 
processo chamado de implantação iônica. Nesse processo, íons são 
bombardeados na placa para ajustar as propriedades elétricas de determinadas 
regiões, como a formação de camadas dopadas para criar transistores.
6. Deposição de camadas: São adicionadas camadas adicionais de materiais 
isolantes e condutores à placa para formar os componentes do processador, 
como os transistores, interconexões e as camadas de metal.
7. Gravação: A gravação é um processo de corrosão química que remove as 
camadas indesejadas de materiais, deixando apenas os componentes 
desejados. Isso ajuda a definir as estruturas dos transistores e conexões.
T5 - M1/M2/M3 35
8. Testes e montagem: Após a fabricação dos componentes, o processador passa 
por testes rigorosos para garantir seu funcionamento adequado. Em seguida, 
ele é montado em um encapsulamento e conectado a outros componentes, 
como pinos e dissipadores de calor, para formar o produto final.
Vale ressaltar que essa é uma visão geral simplificada do processo de fabricação 
dos processadores Intel. O processo real é muito mais complexo e envolve muitas 
etapas adicionais, além de técnicas avançadas de litografia e controle de qualidade 
para garantir a precisão e funcionalidade dos chips.
Visite o site da Multicore Association (MCA), que promove o 
desenvolvimento e o uso de tecnologia multicore.
A Multicore Association (MCA) é uma organização sem fins lucrativos que se dedica 
a promover o desenvolvimento e o uso de tecnologia multicore. Seu objetivo é 
ajudar a indústria a aproveitar ao máximo o potencial dos processadores multicore 
em diversas áreas, como sistemas embarcados, dispositivos móveis, automotivos, 
redes, entre outros.
O site da MCA é uma plataforma importante para obter informações, recursos e 
diretrizes relacionadas à tecnologia multicore. Ele oferece uma variedade de 
recursos para profissionais da área, pesquisadores, desenvolvedores de software e 
empresas interessadas em explorar e utilizar eficientemente a tecnologia multicore.
No site da MCA, é possível encontrar:
1. Padrões e especificações: A MCA desenvolve e mantém padrões e 
especificações relacionados à tecnologia multicore, que ajudam a garantir a 
interoperabilidade e a portabilidade de software em ambientes multicore. Essas 
especificações incluem o padrão MCAPI (Multicore Communications API) e o 
padrão MRAPI (Multicore Resource Management API), entre outros.
2. Recursos de desenvolvimento: O site fornece informações e orientações sobre 
boas práticas de desenvolvimento de software para sistemas multicore. Isso 
inclui diretrizes de programação, técnicas de otimização, ferramentas de 
depuração e outros recursos úteis para auxiliar os desenvolvedores na criação 
de software eficiente e robusto para sistemas multicore.
3. Eventos e workshops: A MCA organiza e promove eventos, conferências e 
workshops relacionados à tecnologia multicore. Esses eventos oferecem 
oportunidades para profissionais da área se conectarem, compartilharem 
T5 - M1/M2/M3 36
conhecimentos e discutirem os avanços e desafios na área de sistemas 
multicore.
4. Colaboração e networking: O site da MCA também funciona como uma 
plataforma para facilitar a colaboração e o networking entre profissionais, 
pesquisadores e empresas envolvidas com tecnologia multicore. Por meio de 
fóruns, grupos de discussão e oportunidades de participação em projetos 
conjuntos, os membros da MCA podem compartilhar ideias, trocar experiências 
e colaborar em iniciativas relacionadas à tecnologia multicore.
Em resumo, o site da Multicore Association (MCA) é uma fonte abrangente de 
informações, recursos e orientações para promover o desenvolvimento e o uso 
eficiente da tecnologia multicore. Ele desempenha um papel importante na 
disseminação de conhecimento, na criação de padrões e na promoção da 
colaboração na indústria de sistemas multicore.
Leia, no site da Intel, a matéria Tecnologia Hyper-Threading Intel – 
Obtenha desempenho mais rápido para muitos aplicativos empresariais 
exigentes.
A Tecnologia Hyper-Threading Intel é uma tecnologia desenvolvida pela Intel que 
permite que um único processador físico execute várias threads simultaneamente, 
melhorando o desempenho em diversos aplicativos empresariais exigentes. No site 
da Intel, a matéria sobre a Tecnologia Hyper-Threading Intel destaca os benefícios 
dessa tecnologia para aumentar o desempenho de aplicativos em ambientes 
empresariais.
A matéria explica que a Tecnologia Hyper-Threading Intel permite que cada núcleo 
físico do processador seja dividido em dois threads virtuais, permitindo que o 
processador execute tarefas simultaneamente. Isso significa que o processador 
pode lidar com mais tarefas de forma eficiente, melhorando a capacidade de 
resposta e a velocidade de processamento.
A matéria destaca que a Tecnologia Hyper-Threading Intel é especialmente 
vantajosa em aplicativos empresariais que exigem muitosthreads, como servidores 
de banco de dados, servidores de virtualização, computação científica e 
renderização de vídeo. Esses aplicativos se beneficiam da capacidade de 
processamento paralelo oferecida pela tecnologia, permitindo uma execução mais 
eficiente das tarefas e um melhor desempenho geral do sistema.
T5 - M1/M2/M3 37
Além disso, a matéria ressalta que a Tecnologia Hyper-Threading Intel não requer 
alterações no software existente. Os aplicativos são capazes de aproveitar 
automaticamente os benefícios do Hyper-Threading, sem a necessidade de 
modificações adicionais. Isso facilita a adoção da tecnologia em ambientes 
empresariais, sem comprometer a compatibilidade com o software existente.
A matéria também menciona que a Tecnologia Hyper-Threading Intel está disponível 
em uma ampla gama de processadores Intel, desde desktops até servidores de alto 
desempenho. Isso oferece flexibilidade para escolher a solução mais adequada às 
necessidades específicas de cada empresa.
Em resumo, a matéria no site da Intel sobre a Tecnologia Hyper-Threading Intel 
destaca os benefícios dessa tecnologia para melhorar o desempenho de aplicativos 
empresariais exigentes. Ela enfatiza a capacidade de executar múltiplas threads 
simultaneamente, oferecendo maior capacidade de processamento e melhor 
desempenho em uma variedade de cenários empresariais.
Veja, no site da Intel, a ferramenta de diagnóstico para um processador 
Intel.
No site da Intel, você pode encontrar uma ferramenta de diagnóstico chamada "Intel 
Processor Diagnostic Tool" (Ferramenta de Diagnóstico do Processador Intel). Essa 
ferramenta é projetada para testar e verificar o funcionamento adequado do 
processador Intel em um sistema.
A Ferramenta de Diagnóstico do Processador Intel é um programa gratuito que 
pode ser baixado e instalado em seu computador. Ele fornece uma maneira 
conveniente de verificar se o processador está funcionando corretamente e 
identificar possíveis problemas ou falhas.
Ao executar a ferramenta, ela realizará uma série de testes no processador para 
verificar seu desempenho, estabilidade e integridade. Isso inclui testes de cálculo, 
testes de ponto flutuante, testes de cache e testes de memória. A ferramenta 
também verifica se todas as instruções e recursos do processador estão 
funcionando corretamente.
Ao final dos testes, a Ferramenta de Diagnóstico do Processador Intel fornecerá um 
relatório detalhado com os resultados dos testes. Isso inclui informações sobre a 
velocidade do processador, a quantidade de cache, os recursos compatíveis e 
quaisquer problemas detectados.
T5 - M1/M2/M3 38
A ferramenta é útil para usuários que desejam verificar se o processador Intel está 
funcionando dentro das especificações esperadas e se não há problemas de 
hardware afetando o desempenho do sistema. Também pode ser útil para técnicos 
de suporte técnico ou profissionais de TI que precisam diagnosticar problemas em 
sistemas com processadores Intel.
No site da Intel, você pode encontrar informações detalhadas sobre como baixar e 
instalar a Ferramenta de Diagnóstico do Processador Intel, bem como um guia de 
uso que explica passo a passo como executar os testes e interpretar os resultados.
Lembre-se de que a Ferramenta de Diagnóstico do Processador Intel é específica 
para processadores Intel e não é compatível com processadores de outras marcas. 
Certifique-se de usar a versão correta da ferramenta para o seu processador Intel 
específico.
Leia o capítulo 17, intitulado Processamento Paralelo, do livro Arquitetura 
e organização de computadores, do autor William Stallings.
O capítulo 17 do livro "Arquitetura e Organização de Computadores" de William 
Stallings, intitulado "Processamento Paralelo", aborda os conceitos e princípios 
fundamentais relacionados ao processamento paralelo em sistemas de 
computadores.
Neste capítulo, Stallings explora as razões e benefícios do processamento paralelo, 
discutindo como ele pode ser usado para melhorar o desempenho e a eficiência dos 
sistemas computacionais.
O autor começa explicando o contexto histórico do processamento paralelo e como 
ele evoluiu ao longo do tempo, desde os primeiros sistemas de multiprocessamento 
até os modernos sistemas com múltiplos núcleos de processamento. Ele destaca a 
importância do processamento paralelo para enfrentar os desafios impostos pelo 
aumento da complexidade dos aplicativos e pela demanda por maior capacidade de 
processamento.
Stallings também aborda os diferentes níveis de paralelismo, incluindo o paralelismo 
a nível de instruções, de dados e de tarefas, explicando como cada um deles pode 
ser explorado para melhorar o desempenho do sistema.
O livro também explora as principais arquiteturas e técnicas de processamento 
paralelo, como processadores superescalares, pipelines superlongos, 
multiprocessadores simétricos, clusters de computadores e sistemas de memória 
compartilhada. O autor apresenta exemplos de aplicativos e algoritmos que se 
T5 - M1/M2/M3 39
beneficiam do processamento paralelo e discute as considerações de projeto e 
programação necessárias para implementar efetivamente essas soluções.
Além disso, Stallings aborda questões relevantes ao processamento paralelo, como 
escalabilidade, balanceamento de carga, comunicação e coordenação entre os 
processadores e técnicas de programação paralela.
No capítulo, o autor apresenta uma visão abrangente do processamento paralelo, 
fornecendo tanto os fundamentos teóricos quanto as aplicações práticas dessa 
tecnologia. Ele apresenta os desafios e as oportunidades associados ao 
processamento paralelo, oferecendo uma compreensão abrangente das técnicas e 
arquiteturas envolvidas.
Em resumo, o capítulo 17 do livro "Arquitetura e Organização de Computadores" de 
William Stallings fornece uma introdução sólida e abrangente ao processamento 
paralelo, abordando desde os conceitos básicos até as aplicações práticas dessa 
tecnologia, além de discutir as considerações de projeto e programação relevantes 
para sua implementação eficiente.
Pesquise a biografia de Michael Flynn.
Michael Flynn é um ex-militar e ex-funcionário do governo dos Estados Unidos. Ele 
nasceu em 1958 em Rhode Island, EUA. Flynn estudou na Universidade de Rhode 
Island e se formou em 1981 com um bacharelado em gerenciamento de ciência 
política.
Após a formatura, Flynn ingressou no Exército dos Estados Unidos e serviu como 
oficial de inteligência por mais de 33 anos. Durante sua carreira militar, ele ocupou 
várias posições de liderança, incluindo diretor de inteligência do Comando de 
Operações Especiais dos EUA, diretor da Agência de Inteligência de Defesa e 
comandante da Agência de Inteligência do Exército.
Flynn ganhou destaque em sua carreira como especialista em contraterrorismo e 
inteligência. Ele foi enviado em missões para locais como Haiti, Iraque e 
Afeganistão, e recebeu várias condecorações militares, incluindo a Estrela de 
Bronze, a Estrela de Serviço Distinto e a Medalha do Mérito de Defesa.
Após se aposentar do Exército em 2014, Flynn entrou na política e tornou-se 
conselheiro de segurança nacional do presidente Donald Trump em janeiro de 2017. 
No entanto, sua posição foi efêmera, e ele renunciou após apenas 24 dias, devido a 
controvérsias sobre suas interações com diplomatas russos e declarações 
enganosas ao FBI.
T5 - M1/M2/M3 40
Flynn se envolveu em investigações sobre a interferência russa nas eleições 
presidenciais de 2016 e se declarou culpado de fazer declarações falsas ao FBI em 
relação a essas investigações. No entanto, posteriormente, ele retirou seu acordo 
de culpabilidade e alegou ser inocente.
Ao longo de sua carreira e após sua saída do governo, Flynn se tornou uma figura 
polarizadora e controversa na política dos Estados Unidos. Ele continua sendo uma 
figura de destaque nos debates sobre segurança nacional, contraterrorismo e 
política externa.

Mais conteúdos dessa disciplina