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