Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Prévia do material em texto

ARQUITETURAS AVANÇADAS DE 
MICROPROCESSADORES
UCM-FENG
ARQUITETURAS AVANÇADAS DE 
MICROPROCESSADORES
Arquiteturas avançadas de microprocessadores são projectos de processadores que 
incorporam técnicas e recursos avançados para melhorar o desempenho e a eficiência do 
processamento de dados. Entre essas técnicas avançadas, destacam-se o pipelining, a 
superscalaridade e a predição de ramificação.
O pipelining é uma técnica que permite que várias instruções sejam executadas em paralelo, 
dividindo o ciclo de busca, decodificação, execução e armazenamento em estágios 
independentes. Cada estágio executa uma parte diferente da instrução, permitindo que 
múltiplas instruções sejam processadas simultaneamente. Isso aumenta o throughput do 
processador, já que várias instruções podem estar em diferentes estágios de execução ao 
mesmo tempo.
.
ARQUITETURAS AVANÇADAS DE 
MICROPROCESSADORES
A superscalaridade é uma técnica que permite a execução de múltiplas instruções por ciclo de 
clock. Em uma arquitetura superscalar, o processador possui múltiplas unidades de execução, 
como unidades de adição, multiplicação e divisão, que podem operar independentemente. O 
processador é capaz de detectar instruções que podem ser executadas em paralelo e enviá-las 
para as unidades de execução apropriadas. Isso permite uma maior taxa de execução de 
instruções e maior desempenho geral.
A predição de ramificação é uma técnica utilizada para mitigar o impacto negativo das 
instruções de desvio condicional, como os comandos "if" e "while", que podem causar um desvio 
no fluxo normal de execução do programa. Os processadores modernos empregam algoritmos 
de predição de ramificação para tentar prever se uma instrução de desvio será tomada ou não, 
de forma a antecipar a próxima instrução a ser executada. Isso ajuda a evitar atrasos causados 
por desvios de ramificação, permitindo que o processador mantenha um alto nível de utilização 
de recursos.
Essas técnicas avançadas de microprocessadores são apenas algumas das várias estratégias 
usadas para melhorar o desempenho dos processadores. Elas permitem que os processadores 
executem instruções mais rapidamente e de forma mais eficiente, maximizando a utilização dos 
recursos disponíveis e melhorando a capacidade de processamento geral
PARALELISMO EM NÍVEL DE INSTRUÇÕES EM 
MICROPROCESSADORES
O paralelismo em nível de instruções (ILP - Instruction-Level Parallelism) e os 
processadores superescalares são conceitos relacionados que visam melhorar o 
desempenho dos processadores por meio da execução simultânea de múltiplas 
instruções.
O paralelismo em nível de instruções refere-se à capacidade de executar várias 
instruções em paralelo, aproveitando as dependências de dados e recursos entre 
elas. Em um processador que suporta ILP, as instruções são analisadas para identificar 
as dependências entre elas e determinar quais instruções podem ser executadas 
independentemente. Essas instruções independentes são então enviadas para 
unidades de execução separadas, onde são processadas simultaneamente. O 
objectivo é maximizar a utilização dos recursos do processador e reduzir o tempo 
total de execução do programa.
PARALELISMO EM NÍVEL DE INSTRUÇÕES E 
PROCESSADORES SUPERESCALARES
Os processadores superescalares são uma implementação específica do paralelismo 
em nível de instruções. Eles possuem múltiplas unidades funcionais, como unidades de 
adição, multiplicação e divisão, que são capazes de executar várias instruções 
simultaneamente. O processador superescalar é capaz de buscar, decodificar e 
emitir várias instruções em um único ciclo de clock, enviando-as para as unidades de 
execução apropriadas. Essa abordagem permite que múltiplas instruções sejam 
processadas em paralelo, desde que não haja dependências entre elas. A 
capacidade de execução simultânea de múltiplas instruções é o que diferencia os 
processadores superescalares de outros tipos de arquiteturas.
PARALELISMO EM NÍVEL DE INSTRUÇÕES E 
PROCESSADORES SUPERESCALARES
O objectivo do paralelismo em nível de instruções e dos processadores
superescalares é aumentar o desempenho do processador, executando mais
instruções em um determinado período de tempo. No entanto, a eficiência do
paralelismo em nível de instruções depende da capacidade do compilador em
identificar instruções independentes e da disponibilidade de recursos adequados no
processador.
Além disso, a presença de dependências de dados entre as instruções pode limitar o
grau de paralelismo que pode ser explorado. Portanto, a eficácia do paralelismo em
nível de instruções e dos processadores superescalares pode variar dependendo do
programa em execução e das características do processador.
A POLÍTICA DE EMISSÃO DE INSTRUÇÕES EM 
MICROPROCESSADOR
A política de emissão de instruções, também conhecida como política de escalonamento, 
refere-se às regras e estratégias usadas por um processador para determinar quais 
instruções devem ser buscadas, decodificadas e emitidas para execução. Essas políticas são 
importantes para optimizar o desempenho do processador, maximizando a utilização dos 
recursos disponíveis.
Existem diferentes abordagens para a política de emissão de instruções, e elas variam de 
acordo com a arquitetura do processador. Algumas das políticas comuns incluem:
Emissão em ordem (in-order): Nessa política, as instruções são executadas na ordem em que 
foram emitidas pelo programa. Isso implica que todas as dependências de dados devem ser 
resolvidas antes que uma instrução possa ser emitida para execução. Embora essa política seja 
relativamente simples de implementar, ela pode levar a subutilização dos recursos do 
processador quando instruções independentes estão disponíveis para execução.
A POLÍTICA DE EMISSÃO DE INSTRUÇÕES EM 
MICROPROCESSADOR
Emissão fora de ordem (out-of-order): Nessa política, o processador é capaz de reordenar as 
instruções para maximizar a utilização dos recursos. Instruções independentes podem ser 
emitidas e executadas antes de instruções anteriores que estão aguardando a resolução de 
dependências. Isso permite que o processador aproveite melhor o paralelismo disponível no 
código do programa. No entanto, a reordenação das instruções deve ser feita com cuidado 
para garantir a corretude do programa.
Emissão especulativa: Nessa política, o processador pode emitir instruções especulativas com 
base em previsões sobre o comportamento do programa. As instruções especulativas são 
executadas antes de se ter certeza sobre sua validade, o que pode levar a um desfazimento 
(rollback) caso as previsões estejam incorretas. A emissão especulativa é comumente usada em 
técnicas avançadas de predição de ramificação para mitigar os atrasos causados por desvios 
condicionais.
A escolha da política de emissão de instruções depende das características do processador, do 
código do programa e dos objectivos de desempenho desejados. Cada política tem suas 
vantagens e desvantagens, e o projeto de um processador pode envolver uma combinação de 
várias políticas para otimizar o desempenho geral.
O PARALELISMO DE MÁQUINA
O paralelismo de máquina refere-se à capacidade de um sistema de computação 
executar múltiplas instruções ou tarefas simultaneamente, aproveitando o uso 
eficiente dos recursos disponíveis. Esse paralelismo pode ser alcançado de várias 
maneiras, dependendo da arquitetura do sistema. Algumas formas comuns de 
paralelismo de máquina incluem:
Paralelismo de instruções: Também conhecido como paralelismo a nível de instruções 
(ILP - Instruction-Level Parallelism), refere-se à execução simultânea de múltiplas 
instruções em um pipeline ou em unidades de execução paralelas. Isso é alcançado 
por meio do uso de técnicas como pipelining, superscalaridade e emissão 
especulativa, conforme mencionado anteriormente.
O PARALELISMO DE MÁQUINA
Paralelismo de dados: Refere-se à execução simultânea de operações independentes 
em diferentes conjuntos de dados. Isso pode ser alcançado pormeio de 
processadores vetoriais, onde uma única instrução é aplicada a vários elementos de 
dados em paralelo, ou por meio de processadores SIMD (Single Instruction, Multiple
Data), onde várias unidades de processamento executam a mesma instrução em 
diferentes conjuntos de dados.
Paralelismo de thread: Envolve a execução simultânea de múltiplas threads ou fluxos 
de execução independentes. Isso pode ser alcançado por meio de processadores 
multinúcleo ou sistemas multiprocessados, onde cada núcleo ou processador executa 
um conjunto diferente de instruções e dados.
.
O PARALELISMO DE MÁQUINA
Paralelismo de tarefa: Refere-se à execução simultânea de tarefas independentes 
em um sistema distribuído ou em um conjunto de processadores. Isso geralmente 
envolve a divisão de um problema em várias tarefas menores e a alocação dessas 
tarefas para diferentes processadores ou nós de computação.
O paralelismo de máquina é uma técnica essencial para melhorar o desempenho e a 
capacidade de processamento de sistemas computacionais. Ele permite a execução 
eficiente de tarefas complexas e o processamento simultâneo de grandes volumes de 
dados. No entanto, aproveitar o paralelismo de máquina requer algoritmos e 
programas adequados que possam ser divididos e executados de forma paralela, 
além de uma arquitetura de sistema que suporte o paralelismo desejado
O PARALELISMO DE MÁQUINA
O paralelismo de máquina pode ser implementado em diferentes níveis, desde o 
hardware até o software.
No nível de hardware:
Processadores multi-core: Um único chip contém múltiplos núcleos de processamento, 
cada um capaz de executar instruções independentemente.
Processadores multi-threaded: Um único núcleo de processamento pode executar 
múltiplas threads simultaneamente, alternando entre elas rapidamente.
Processadores vectoriais: Possuem unidades de processamento especializadas para 
realizar operações em vectores de dados.
O PARALELISMO DE MÁQUINA
O paralelismo de máquina oferece diversos benefícios, como:
Aumento de desempenho: Múltiplas tarefas podem ser realizadas simultaneamente, reduzindo o tempo total de execução.
Melhor utilização de recursos: Os recursos do sistema são utilizados de forma mais eficiente, evitando ociosidade.
Escalabilidade: O sistema pode ser facilmente expandido adicionando mais processadores ou núcleos, aumentando sua 
capacidade de processamento.
No entanto, o paralelismo de máquina também apresenta desafios, como:
Complexidade de programação: O desenvolvimento de programas paralelos é mais complexo do que o desenvolvimento de 
programas sequenciais.
Sincronização: É necessário coordenar a execução de múltiplas tarefas para garantir a corretude do programa.
Comunicação: As tarefas paralelas precisam se comunicar entre si para trocar dados, o que pode gerar overhead
A PREVISÃO DE DESVIO NO MICROPROCESSSDOR
A previsão de desvio, também conhecida como previsão de ramificação (branch
prediction), é uma técnica utilizada pelos processadores para tentar antecipar a 
direção de desvios condicionais em programas de computador. Desvios condicionais 
são instruções que podem alterar o fluxo de execução do programa, como instruções 
de desvio condicional (por exemplo, "if" ou "switch") que podem resultar em um salto 
para uma parte diferente do código, dependendo de uma condição específica.
A previsão de desvio é importante porque desvios condicionais podem criar 
gargalos no desempenho do processador. Sem uma previsão precisa, o processador 
pode precisar esperar até que a direção do desvio seja determinada antes de 
buscar as instruções corretas, o que pode resultar em ciclos de clock desperdiçados e 
atrasos na execução do programa.
A PREVISÃO DE DESVIO NO MICROPROCESSSDOR
Existem várias técnicas de previsão de desvio que podem ser implementadas, e algumas das 
mais comuns são:
Previsão estática: Nessa técnica, a direção do desvio é prevista com base em padrões 
estáticos do código. Por exemplo, se a maioria dos desvios em um programa segue uma 
mesma direção, a previsão estática assumiria que os desvios subsequentes seguirão a mesma 
direção. Essa técnica é simples, mas não leva em consideração o comportamento real do 
programa.
Previsão baseada em histórico: Nessa técnica, o processador mantém um histórico dos 
resultados anteriores de desvios condicionais. Com base nesse histórico, o processador tenta 
prever a direção do desvio actual. Por exemplo, se um determinado desvio condicional foi 
tomado (taken) nas últimas vezes em que ocorreu, a previsão seria de que ele será tomado 
novamente. Essa técnica leva em consideração o comportamento passado do programa, mas 
pode falhar quando há mudanças repentinas no padrão de desvios.
A PREVISÃO DE DESVIO NO MICROPROCESSSDOR
Previsão baseada em correlação: Nessa técnica mais avançada, o processador analisa 
correlações entre desvios condicionais e outras informações do programa para fazer a 
previsão. Por exemplo, o processador pode analisar a relação entre a posição de uma 
instrução de desvio no código e o resultado do desvio anterior para fazer uma previsão mais 
precisa. Essa técnica é mais complexa, mas pode melhorar a precisão da previsão.
É importante ressaltar que a previsão de desvio não é infalível e pode incorrer em erros de 
previsão. Quando uma previsão de desvio falha, o processador precisa desfazer (rollback) as 
instruções especulativas emitidas e retomar a execução correta do programa. Essa 
penalidade de desfazimento pode resultar em atrasos no desempenho do processador.
As técnicas de previsão de desvio são continuamente aprimoradas e adaptadas para lidar 
com diferentes padrões de desvio e características dos programas. O objetivo é maximizar a 
precisão da previsão, minimizando assim os atrasos causados por desvios condicionais no 
processador.
A EXECUÇÃO SUPERESCALAR
A execução superescalar é uma técnica utilizada em processadores modernos para 
melhorar o desempenho através da execução simultânea de múltiplas instruções em 
paralelo. Essa técnica permite que o processador execute várias instruções 
independentes em um único ciclo de clock, explorando o paralelismo de nível de 
instrução (ILP).
Em um processador superescalar, existem múltiplas unidades de execução 
funcionando em paralelo, permitindo que várias instruções sejam buscadas, 
decodificadas e executadas simultaneamente. Essas unidades de execução podem 
incluir unidades aritméticas e lógicas (ALUs), unidades de ponto flutuante, unidades 
de acesso à memória, entre outras.
ORGANIZAÇÃO SUPERESCALAR GERAL
ACELERAÇÕES REPORTADAS DAS MÁQUINAS DO TIPO 
SUPERESCALAR
A EXECUÇÃO SUPERESCALAR
A execução superescalar envolve as seguintes etapas principais:
Busca de instruções: O processador busca várias instruções em paralelo da memória 
ou do cache de instruções, aproveitando o paralelismo de nível de instrução.
Decodificação: As instruções são decodificadas para determinar suas operações e 
operandos.
Emissão: As instruções decodificadas são emitidas para as unidades de execução. O 
processador pode emitir múltiplas instruções em um único ciclo de clock, desde que 
não haja dependências entre elas.
Execução: As instruções são executadas em paralelo pelas unidades adequadas. Isso 
pode incluir operações aritméticas, lógicas, de ponto flutuante, acesso à memória, 
entre outras.
A EXECUÇÃO SUPERESCALAR
Conclusão: As instruções concluídas têm seus resultados armazenados nos registradores 
ou na memória, prontos para serem utilizados por instruções subsequentes.
A execução superescalar é capaz de aumentar significativamente o desempenho do 
processador, permitindo a execução simultânea de várias instruções independentes. No 
entanto, existem desafios associados a essa técnica, como:
Dependências de dados: Se houver dependências de dados entre as instruções, a 
execução paralela pode ser impedida. O processador precisa garantir que todas as 
dependências sejam resolvidas corretamente.
A EXECUÇÃO SUPERESCALAR
Conflitosde recursos: Caso duas instruções precisem acessar o mesmo recurso (por 
exemplo, a mesma unidade de memória), pode ocorrer um conflito, exigindo 
mecanismos de controle para evitar problemas.
Predição de desvio: A previsão de desvio é especialmente importante em execução 
superescalar, pois várias instruções estão sendo buscadas e executadas em paralelo. 
Se a previsão de desvio falhar, pode ser necessário descartar instruções 
especulativas e retomar a execução correta.
Os projectistas de processadores implementam várias técnicas e mecanismos para 
lidar com esses desafios e optimizar a execução superescalar, visando obter um 
desempenho máximo através da exploração do paralelismo disponível nas 
aplicações.
LIMITAÇÕES DA EXECUÇÃO SUPERESCALAR
A execução superescalar, apesar de oferecer benefícios significativos em termos de 
desempenho, também possui algumas limitações. Aqui estão algumas delas:
Dependências de dados: A execução superescalar pode ser limitada por 
dependências de dados entre as instruções. Se uma instrução depende dos 
resultados de uma instrução anterior, é necessário garantir que a instrução 
dependente espere até que os dados estejam disponíveis. Isso pode resultar em 
gargalos de desempenho, pois algumas unidades de execução podem ficar ociosas 
aguardando a disponibilidade dos dados.
Conflitos de recursos: Quando várias instruções estão sendo executadas em paralelo, 
pode haver conflitos de recursos, como várias instruções tentando acessar a mesma 
unidade funcional ou registrador ao mesmo tempo. Mecanismos de controle, como 
escalonamento de recursos, precisam ser implementados para evitar conflitos e 
garantir o correto compartilhamento dos recursos entre as instruções.
ILUSTRAÇÃO CONCEITUAL DE PROCESSAMENTO 
SUPERESCALAR
LIMITAÇÕES DA EXECUÇÃO SUPERESCALAR
Predição de desvio: A execução superescalar depende fortemente da previsão de desvio 
para buscar e executar instruções especulativas. Se a previsão de desvio falhar, instruções 
especulativas podem ser buscadas e executadas desnecessariamente, resultando em 
desperdício de recursos e diminuição do desempenho. Além disso, a recuperação de erros de 
previsão de desvio também pode introduzir atrasos na execução.
Complexidade do hardware: A implementação da execução superescalar requer hardware 
complexo, com múltiplas unidades de execução, mecanismos de escalonamento, buffers e 
circuitos de controle adicionais. Isso resulta em um aumento no consumo de energia e no custo 
do processador.
Diminuição do ganho de desempenho com instruções dependentes: Se um programa contém 
um grande número de instruções dependentes, em que cada instrução depende dos resultados 
anteriores, o potencial de paralelismo da execução superescalar pode ser limitado. Nesses 
casos, o desempenho obtido pela execução superescalar pode ser semelhante ao de uma 
execução escalar tradicional.
POLÍTICAS DE EMISSÃO E CONCLUSÃO DE INSTRUÇÕES 
SUPERESCALARES-(A) EMISSÃO EM-ORDEM E 
CONCLUSÃO EM-ORDEM
(B) EMISSÃO EM-ORDEM E CONCLUSÃO FORA-
DE-ORDEM
(C) EMISSÃO FORA-DE-ORDEM E CONCLUSÃO 
FORA-DE-ORDEM
POLÍTICAS DE EMISSÃO E CONCLUSÃO DE 
INSTRUÇÕES SUPERESCALARES-
O exemplo assume as seguintes restrições em um fragmento de código de seis 
instruções:
I1 requer dois ciclos para executar.
I3 e I4 competem pela mesma unidade funcional.
I5 depende do valor produzido por I4.
I5 e I6 competem pela mesma unidade funcional.
A RENOMEAÇÃO DE REGISTADORES
A renomeação de registadores é uma técnica utilizada em processadores superescalares para melhorar o desempenho e 
permitir a execução de instruções em paralelo de forma mais eficiente. Essa técnica busca mitigar o problema das 
dependências de dados entre as instruções.
Quando um processador executa instruções em paralelo, pode haver situações em que uma instrução depende do resultado 
de uma instrução anterior. Essas dependências de dados podem criar gargalos de desempenho, pois as instruções 
subsequentes precisam esperar pelos resultados das instruções anteriores antes de poderem ser executadas.
A renomeação de registradores resolve esse problema através da criação de várias cópias físicas dos registradores 
arquiteturais (aqueles visíveis para o programador). Essas cópias físicas são chamadas de registradores renomeados ou 
registradores de destino.
Quando uma instrução é emitida para execução, os operandos são buscados nos registradores renomeados em vez dos 
registradores arquiteturais. Isso permite que várias instruções que dependem dos mesmos registradores arquiteturais sejam 
executadas em paralelo, pois cada instrução tem seus próprios registradores renomeados.
A RENOMEAÇÃO DE REGISTADORES
O processo de renomeação de registradores envolve as seguintes etapas:
Emissão e decodificação: As instruções são emitidas pelo escalonador de instruções e 
decodificadas para determinar suas operações e operandos.
Alocação de registradores renomeados: Os registradores renomeados são alocados 
para as instruções. Se houver dependências de dados entre as instruções, 
registradores renomeados diferentes serão atribuídos para evitar conflitos.
A RENOMEAÇÃO DE REGISTADORES
Busca e escrita de operandos: Os operandos necessários para a execução das instruções são 
buscados nos registadores renomeados ou na memória. Os resultados são escritos nos 
registradores renomeados.
Commit: Quando as instruções são concluídas, os resultados são transferidos dos registadores 
renomeados para os registradores arquiteturais. Esse processo é chamado de commit e 
garante a corretude da execução.
A renomeação de registadores permite que o processador execute instruções em paralelo de 
forma mais eficiente, reduzindo os gargalos causados por dependências de dados. Essa 
técnica é amplamente utilizada em processadores modernos e contribui significativamente 
para o aumento do desempenho e da capacidade de processamento.
PIPELINE DE MICROPROCESSADOR
Pipeline é uma técnica de design de processadores que visa melhorar o desempenho ao 
dividir o ciclo de execução de uma instrução em várias etapas menores. Cada etapa do 
pipeline executa uma parte específica da instrução, permitindo que múltiplas instruções sejam 
processadas simultaneamente em diferentes estágios do pipeline.
O pipeline de um processador pode ser dividido em estágios, como busca de instrução, 
decodificação, busca de operandos, execução e escrita de resultados. Cada estágio é 
responsável por uma tarefa específica e as instruções passam sequencialmente por esses 
estágios.
A ideia por trás do pipeline é que, enquanto uma instrução está em um estágio, a próxima 
instrução pode entrar no estágio anterior. Isso permite que múltiplas instruções estejam em 
diferentes estágios do pipeline ao mesmo tempo, aumentando a taxa de execução das 
instruções e melhorando o desempenho.
PIPELINE DE MICROPROCESSADOR
O tempo entre as execuções em um pipeline é determinado pela soma dos tempos de cada estágio do 
pipeline, juntamente com o tempo necessário para a propagação de sinais e possíveis atrasos devido a 
dependências de dados. A fórmula geral para calcular o tempo de execução em um pipeline é conhecida 
como a Lei de Amdahl.
A Lei de Amdahl é dada pela seguinte fórmula:
Tempo de Execução = Tempo de Execução Não-Pipelined / (Taxa de Aceleração do Pipeline + Overhead
do Pipeline)
O tempo de execução não-pipelined refere-se ao tempo necessário para executar as mesmas instruções 
sem a utilização de um pipeline. A taxa de aceleração do pipeline é a medida de quantas vezes o pipeline 
é mais rápido em relação à execução não-pipelined. O overhead do pipeline representa o tempo adicional 
necessário devido aos estágios do pipeline, como latência de busca, decodificação, execução, etc.
Para calcular o tempo entre as execuções em um pipeline específico, você precisa conhecer os tempos de 
cada estágio do pipeline, a taxa de aceleração do pipeline e o overhead do pipeline. Essas informações 
podem ser obtidas através de medições,simulações ou especificações do processador.
É importante observar que a fórmula da Lei de Amdahl é uma simplificação e não leva em consideração 
outros fatores, como dependências de dados, desvios condicionais e outros eventos que podem afetar o 
desempenho real do pipeline. Portanto, a fórmula fornece apenas uma estimativa aproximada do tempo 
entre as execuções em um pipeline.
PIPELINE DE MICROPROCESSADOR
No entanto, o pipeline pode enfrentar alguns desafios, como dependências de dados 
entre as instruções. Quando uma instrução depende do resultado de uma instrução 
anterior, é necessário garantir a correta ordem de execução das instruções para 
evitar resultados incorretos. Dependências de dados podem causar atrasos no 
pipeline, pois as instruções subsequentes devem esperar pelos resultados das 
instruções anteriores.
Além disso, o pipeline também pode enfrentar outros problemas, como desvios 
condicionais, onde a próxima instrução a ser executada depende de uma condição. 
Desvios condicionais podem resultar em instruções buscadas e decodificadas 
desnecessariamente, o que pode causar atrasos e reduzir a eficiência do pipeline.
PIPELINE DE MICROPROCESSADOR
Em relação ao ponto flutuante, o pipeline de ponto flutuante é um tipo específico de 
pipeline que é projetado para executar operações aritméticas em números de ponto 
flutuante. As operações de ponto flutuante, como adição, subtração, multiplicação e 
divisão, são executadas em unidades de ponto flutuante dedicadas.
O pipeline de ponto flutuante divide o processo de execução das operações em 
várias etapas, permitindo que múltiplas operações de ponto flutuante sejam 
processadas simultaneamente. Isso é especialmente importante em aplicações que 
exigem um alto desempenho de cálculos matemáticos, como simulações científicas, 
processamento de imagem ou gráficos 3D.
PIPELINE DE MICROPROCESSADOR
Assim como o pipeline convencional, o pipeline de ponto flutuante pode enfrentar 
desafios, como dependências de dados e desvios condicionais, que precisam ser 
gerenciados para garantir a correta ordem de execução das operações e evitar 
resultados incorretos.
Em resumo, tanto o pipeline geral quanto o pipeline de ponto flutuante são técnicas 
de design de processadores que visam melhorar o desempenho ao dividir o ciclo de 
execução de instruções em etapas menores e permitir a execução paralela de 
múltiplas instruções.
UM PROCESSADOR SUPERESCALAR COM PIPELINE 
DUPLO
PIPELINE DE MICROPROCESSADOR
Actualmente, a grande maioria dos sistemas de
computação é fabricado em torno de
processadores que buscam maior velocidade na
realização de suas actividades.
25
Um dos processos mais usados é o que conhecemos naindústria como linha de 
montagem ("pipeline"), no qual a UCP se divide em várias partes funcionais distintas
(estágios), cada uma correspondendo a uma determinada actividade.
PIPELINE DE MICROPROCESSADOR
Várias instruções são realizadas de forma simultânea,
embora em estágios diferentes.
Exemplo
Lavanderia
Colocar uma carga de roupa na lavadora. (L) (30)
Quando terminar de lavar, colocar na secadora. (S)(40)
Quando terminar de secar, dobrá-las. (D)(20)
90 minutos depois, começar de novo a lavar 
PIPELINE DE MICROPROCESSADOR
Exemplo 2: Ciclo de instrução:
Considere um pipeline com 6 estágios de mesma duração:
busca de instrução (BI);
decodificaçãodeinstrução(DI);
cálculo de operandos (CO);
busca de operandos (BO);
execução de instrução (EI);
escrita de operando (EO).
MULTITHREADING E CHIPS MULTIPROCESSADORES
Multithreading e chips multiprocessadores são conceitos relacionados ao processamento paralelo, 
nos quais múltiplas tarefas ou processadores trabalham simultaneamente para realizar 
computação de forma mais eficiente. Vamos explorar cada um desses conceitos separadamente:
Multithreading:
Multithreading refere-se à capacidade de um sistema executar múltiplas threads ou fluxos de 
execução de forma concorrente. Uma thread é uma sequência de instruções que pode ser 
executada independentemente das outras threads em um programa. Com o multithreading, várias 
threads podem ser executadas ao mesmo tempo, compartilhando recursos do sistema, como a CPU.
A medida mais importante de desempenho para um processador é a taxa em que ele executa as 
instruções.Isso pode ser expresso como:
Taxa MIPS = f * IPC
onde f é a frequência de clock do processador, em MHz, e IPC (instruções por ciclo) é o número 
médio de instruções executadas por ciclo
MULTITHREADING E CHIPS MULTIPROCESSADORES
Existem diferentes abordagens de multithreading, incluindo:
Multithreading a nível de software: Nessa abordagem, o sistema operacional ou a 
aplicação divide o trabalho em várias threads que são executadas concorrentemente 
em uma única CPU. Cada thread é agendada pelo sistema operacional para 
executar por um determinado tempo fatiado entre as várias threads.
Multithreading a nível de hardware: Nessa abordagem, o processador possui suporte 
embutido para a execução de várias threads simultaneamente. Isso pode ser 
alcançado com o uso de múltiplos conjuntos de registradores e unidades de 
execução, permitindo que várias threads sejam executadas em paralelo em um único 
núcleo de processamento.
MULTITHREADING E CHIPS MULTIPROCESSADORES
O multithreading oferece benefícios, como melhor utilização dos recursos da CPU, 
maior capacidade de resposta em sistemas multitarefa e maior potencial de 
escalabilidade em aplicações paralelizáveis.
Chips multiprocessadores:
Chips multiprocessadores, também conhecidos como processadores multi-core, são 
projetados com dois ou mais núcleos independentes em um único chip. Cada núcleo é 
capaz de executar instruções de forma independente e possui seus próprios recursos, 
como registradores, caches e unidades de execução.
Com os chips multiprocessadores, é possível ter múltiplos processadores trabalhando 
em paralelo em um único chip. Cada processador pode executar tarefas 
independentes simultaneamente, aumentando significativamente a capacidade de 
processamento em relação a um único núcleo.
MULTITHREADING E CHIPS MULTIPROCESSADORES
Os chips multiprocessadores oferecem vantagens como:
Paralelismo de tarefas: Com múltiplos núcleos, diferentes tarefas podem ser executadas simultaneamente em cada núcleo, 
melhorando a eficiência e o desempenho geral do sistema.
Escalabilidade: Adicionar mais núcleos em um chip multiprocessador é uma maneira escalável de aumentar a capacidade de 
processamento sem a necessidade de aumentar a frequência do clock ou a complexidade do design.
Maior capacidade de resposta: Em sistemas multitarefa, cada núcleo pode ser dedicado a uma tarefa específica, permitindo 
uma melhor capacidade de resposta do sistema, especialmente em ambientes onde várias tarefas estão em execução ao 
mesmo tempo.
No entanto, é importante observar que nem todas as aplicações se beneficiam totalmente dos chips multiprocessadores. O 
desempenho real depende da natureza das tarefas executadas e do grau de paralelismo que essas tarefas podem 
explorar. Além disso, a comunicação e a sincronização entre os núcleos podem introduzir sobrecarga e latência adicionais.
Em resumo, multithreading e chips multiprocessadores são abordagens para alcançar o processamento paralelo e melhorar o 
desempenho do sistema. O multithreading permite a execução simultânea de várias threads em uma CPU, enquanto os chips 
multiprocessadores possuem múltiplos núcleos independentes que podem executar tarefas simultaneamente em um único chip.
TRABALHO SEMESTRAL
1-Arquiteturas de processadores para computação de alto desempenho (HPC)-POS-
LABORAL
2-Optimização de desempenho em arquiteturas multicore-LABORAL

Mais conteúdos dessa disciplina