ScholarGate
Assistente

Pipelining e Hazards

Pipelining sobrepõe a execução de instruções consecutivas dividindo o processamento de instruções em estágios, aumentando o throughput; hazards são as situações — conflitos de recursos, dependências de dados e desvios — que impedem a próxima instrução de prosseguir no ciclo seguinte.

Encontrar tema com PaperMindEm breveFind papers & topics
Tools & resources
Baixar slides
Learn & explore
VídeoEm breve

Definition

Pipelining é uma técnica que sobrepõe a execução de múltiplas instruções particionando seu processamento em estágios sequenciais, e um hazard é qualquer condição que força um estágio a paralisar porque não pode prosseguir corretamente no próximo ciclo de clock.

Scope

Este tópico aborda o pipeline de instruções clássico e as três classes de hazards que o limitam: hazards estruturais (conflitos de recursos), hazards de dados (dependências entre instruções) e hazards de controle (desvios). Inclui os remédios padrão — encaminhamento/bypass, paralisação e tratamento de desvios. Exclui emissão paralela avançada (paralelismo em nível de instrução), previsão de direção de desvio em profundidade (previsão de desvio) e reordenação dinâmica (execução fora de ordem).

Core questions

  • Como a divisão da execução de instruções em estágios aumenta o throughput sem reduzir a latência?
  • O que são hazards estruturais, de dados e de controle, e o que causa cada um?
  • Como o encaminhamento resolve muitos hazards de dados sem paralisar?
  • Qual é o custo dos desvios em um pipeline e como ele é mitigado?

Key concepts

  • estágios do pipeline (busca, decodificação, execução, memória, writeback)
  • throughput vs latência
  • hazards estruturais
  • hazards de dados
  • hazards de controle
  • encaminhamento e bypass
  • paralisações e bolhas do pipeline
  • penalidade de desvio

Key theories

Throughput e hazards do pipeline
Um pipeline de k estágios idealmente completa uma instrução por ciclo após o preenchimento, mas hazards estruturais, de dados e de controle introduzem paralisações que reduzem o throughput abaixo do ideal; o design do pipeline concentra-se em minimizar essas paralisações.

Mechanisms

O processamento de instruções é dividido em estágios para que, enquanto uma instrução está sendo executada, outras estejam sendo buscadas e decodificadas. Um hazard estrutural surge quando duas instruções precisam do mesmo recurso; um hazard de dados quando uma instrução precisa de um resultado ainda não produzido; um hazard de controle quando a próxima instrução depende de um desvio não resolvido. O encaminhamento direciona os resultados diretamente entre os estágios, as paralisações inserem bolhas quando o encaminhamento é insuficiente, e o tratamento de desvios reduz as penalidades de hazard de controle.

Clinical relevance

Pipelining é a técnica de desempenho fundamental em praticamente todos os processadores, e a compreensão dos hazards explica por que a ordenação das instruções e o comportamento dos desvios afetam a velocidade. O escalonamento de instruções do compilador e a consciência do programador sobre dependências e padrões de desvio podem melhorar materialmente o desempenho em hardware pipelined.

History

Pipelining apareceu em máquinas de alto desempenho iniciais, como o IBM Stretch e o CDC 6600, no início dos anos 1960. O pipeline simples de cinco estágios tornou-se um modelo canônico de ensino e design com os processadores RISC dos anos 1980, e a classificação sistemática dos hazards e seus remédios foi codificada nos textos de Hennessy-Patterson.

Key figures

  • John L. Hennessy
  • David A. Patterson
  • Seymour Cray

Related topics

Seminal works

  • hennessy2019
  • patterson2020

Frequently asked questions

O pipelining faz com que uma única instrução seja executada mais rapidamente?
Não. O pipelining não reduz o tempo para completar uma instrução (latência); ele aumenta o número de instruções concluídas por unidade de tempo (throughput) ao sobrepor sua execução, assim como uma linha de montagem aumenta a produção sem acelerar nenhum item individual.
O que é encaminhamento?
O encaminhamento, ou bypass, direciona um resultado recém-calculado diretamente do estágio que o produziu para um estágio posterior que precisa dele, em vez de esperar que ele seja gravado de volta no arquivo de registradores. Isso resolve muitos hazards de dados sem paralisar o pipeline.

Methods for this concept

Related concepts