Questão de Arquitetura de Computadores — Pipeline — IF-MG 2024
Arquitetura de Computadores›Pipeline
Código
qg240037
Banca
IF-MG
Órgão
IF-MG
Ano
2024
Nível
Superior
Cargo
PROFESSOR EBTT - Ciência da Computação e Sistemas de Informação. - Ribeirão das Neves
No contexto de arquiteturas de computadores, a técnica de pipeline é frequentemente utilizada para aumentar o desempenho da CPU. No entanto, o uso dessa técnica envolve uma série de desafios relacionados ao controle do fluxo de dados e da execução de instruções.Considerando isso, qual das alternativas a seguir melhor descreve um dos principais problemas associados ao uso de pipeline e uma possível solução para esse problema?
AO data hazard ocorre quando há dependência de dados entre instruções no pipeline. Uma solução comum é a técnica de loop unrolling, que elimina a dependência entre as instruções ao duplicar a execução de laços de repetição, aumentando a eficiência.
BO structural hazard ocorre quando dois estágios do pipeline tentam acessar o mesmo recurso de hardware ao mesmo tempo. Uma solução é a implementação de register renaming, que permite o uso de registros virtuais para evitar o conflito.
CO control hazard ocorre em situações de desvio condicional, quando o fluxo de instruções depende do resultado de uma instrução anterior. Uma técnica eficaz para mitigar esse problema é o uso de branch prediction, que prevê o resultado do desvio antes de sua execução.
DO data hazard pode ser resolvido com o uso de branch prediction, que antecipa o comportamento das instruções de salto para evitar dependências de dados entre as instruções.
EO control hazard pode ser evitado completamente com o uso de loop unrolling, pois essa técnica elimina a necessidade de verificações de desvio e de controladores de fluxo de execução.
Revelar gabarito e comentário▾
GabaritoC — O control hazard ocorre em situações de desvio condicional, quando o fluxo de instruções depende do resultado de uma instrução anterior. Uma técnica eficaz para mitigar esse problema é o uso de branch prediction, que prevê o resultado do desvio antes de sua execução.
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
Pipeline e Hazards: Identificando o Problema e a Solução Corretos
Gabarito: letra C. A alternativa C descreve corretamente o control hazard (desvio condicional) e sua mitigação via branch prediction (predição de desvios). As demais alternativas confundem os tipos de hazard ou propõem soluções inadequadas.
A técnica de pipeline permite executar múltiplas instruções em paralelo, mas introduz três tipos clássicos de hazards: data hazard (dependência de dados), structural hazard (conflito por recurso) e control hazard (desvio no fluxo). A banca testa o conhecimento de cada um e de suas respectivas soluções.
Tipo de Hazard
Descrição do Problema
Solução Correta
Solução Incorreta (na alternativa)
Data Hazard
Dependência de dados entre instruções (RAW, WAR, WAW)
Forwarding (bypass) e/ou inserção de stalls
Loop unrolling (alternativa A) ou branch prediction (alternativa D)
Structural Hazard
Dois estágios do pipeline disputam o mesmo recurso de hardware
Duplicar o recurso ou inserir stalls
Register renaming (alternativa B)
Control Hazard
Desvio condicional altera o fluxo de instruções; próxima instrução depende do resultado do desvio
Branch prediction (predição de desvios)
Loop unrolling (alternativa E)
Alternativa C — ✅ Correta ⟵ GABARITO
O control hazard ocorre quando uma instrução de desvio condicional (branch) altera o fluxo de execução, pois a próxima instrução a ser buscada depende do resultado do desvio. A técnica mais comum para mitigá-lo é a branch prediction, que adivinha o resultado do desvio antes de seu cálculo efetivo, permitindo que o pipeline continue especulativamente. Essa é a descrição literal do problema e da solução convencional.
Alternativa A — ❌ Incorreta
O data hazard (ou hazard de dados) ocorre quando há dependência real de dados entre instruções (RAW, WAR, WAW). A técnica clássica de solução é o forwarding (ou bypass) e/ou a inserção de bolhas (stalls). O loop unrolling é uma otimização de compilador que expande laços para reduzir overhead de controle e aumentar o paralelismo, mas não elimina dependências de dados nem é uma solução primária para data hazards.
Alternativa B — ❌ Incorreta
O structural hazard (hazard estrutural) acontece quando dois estágios do pipeline disputam o mesmo recurso de hardware simultaneamente. A solução típica é duplicar o recurso ou inserir stalls. O register renaming é uma técnica usada para evitar name dependencies (WAR e WAW) em processadores superescalares com execução fora de ordem, não resolve conflitos estruturais.
Alternativa D — ❌ Incorreta
O data hazard não é resolvido por branch prediction. Esta última é uma técnica exclusiva para control hazards. A alternativa erra ao associar o problema de dados a uma solução de controle.
Alternativa E — ❌ Incorreta
O control hazardnão pode ser completamente evitado por loop unrolling. Embora o unrolling reduza a frequência de desvios (ao eliminar iterações de loop), ainda existem desvios condicionais no programa; além disso, a técnica não elimina a necessidade de predição ou de tratamento de desvios. A afirmação de "completamente evitado" é exagerada e incorreta.
NÃO CAIA NESSA!
Para memorizar os hazards e suas soluções, pense nas iniciais: Data → Dependência → Forwarding; Structural → Recurso → Stall ou Duplicação; Control → Desvio → Predição. Em provas, desconfie de alternativas que misturam o nome do hazard com a solução errada – essa é a pegadinha típica da banca.