Computação |
Embora existam variações dependendo da arquitetura, um pipeline clássico de 5 estágios (como o do MIPS) é descrito da seguinte forma:
I) IF – Instruction Fetch (Busca de Instrução): A CPU busca a próxima instrução na memória, utilizando o contador de programa (PC).
II) ID – Instruction Decode / Register Fetch (Decodificação e Leitura de Registradores): A instrução é decodificada e os operandos necessários são lidos dos registradores.
III) EX – Execute / Address Calculation (Execução ou Cálculo de Endereço): A ALU executa a operação aritmética/lógica ou calcula endereços de memória.
IV) MEM – Memory Access (Acesso à Memória): Caso a instrução envolva leitura ou escrita de memória, essa operação é realizada aqui.
V) WB – Write Back (Escrita de Resultado): O resultado é escrito de volta no registrador de destino.
Hazards (Riscos de Pipeline)
Embora o pipeline aumente o desempenho, ele introduz conflitos chamados de hazards, que impedem o fluxo ideal de instruções:
Hazards de Dados (Data Hazards): Ocorrem quando uma instrução depende do resultado de uma instrução anterior ainda em execução no pipeline.
Hazards de Controle (Control Hazards): Resultam de instruções de desvio (branches), que alteram o fluxo de execução.
Até que o destino do desvio seja conhecido, a CPU pode buscar instruções incorretas.
Técnicas de mitigação incluem branch prediction e speculative execution.
Hazards Estruturais (Structural Hazards): Acontecem quando duas instruções competem pelo mesmo recurso de hardware, como a memória ou a ALU.