A tubulação de instrução é uma técnica utilizada no projeto de microprocessadores, microcontroladores e CPUs modernos para aumentar sua produção de instruções (o número de instruções que podem ser executadas em uma unidade de tempo).
A idéia principal é dividir (denominado "split") o processamento de uma instrução CPU, conforme definido pelo microcódigo de instrução, em uma série de etapas independentes de microoperações (também chamadas de "microinstruções", "microop" ou "µop"), com armazenamento no final de cada etapa. Isto permite que a lógica de controle das CPUs trate as instruções na taxa de processamento da etapa mais lenta, que é muito mais rápida do que o tempo necessário para processar a instrução como uma única etapa.
O termo gasoduto se refere ao fato de que cada etapa está carregando uma única microinstrução (como uma gota de água), e cada etapa está ligada a outra etapa (analogia; semelhante aos tubos de água).
A maioria das CPUs modernas é movida por um relógio. A CPU consiste internamente de lógica e memória (flip flops). Quando o sinal do relógio chega, os chinelos de dedo armazenam seu novo valor, então a lógica requer um período de tempo para decodificar os novos valores dos chinelos de dedo. Então chega o próximo pulso de relógio e os chinelos de dedo armazenam outros valores, e assim por diante. Ao quebrar a lógica em peças menores e inserir os flops entre as peças da lógica, o tempo requerido pela lógica (para decodificar valores até gerar saídas válidas dependendo destes valores) é reduzido. Desta forma, o período do relógio pode ser reduzido.
Por exemplo, a tubulação RISC é quebrada em cinco estágios com um conjunto de flops entre cada estágio, como se segue:
- Instruções de busca
- Instruções de decodificação e registro fetch
- Executar
- Acesso à memória
- Registrar escrever de volta
Os processadores com tubulação consistem internamente de estágios (módulos) que podem trabalhar de forma semi-independente em microinstruções separadas. Cada estágio é ligado por flops para o próximo estágio (como uma "cadeia") de modo que a saída do estágio seja uma entrada para outro estágio até que o trabalho de processamento de instruções seja feito. Tal organização dos módulos internos do processador reduz o tempo total de processamento das instruções.
Uma arquitetura semipipeline não é tão eficiente porque alguns módulos de CPU estão ociosos enquanto outro módulo está ativo durante o ciclo de instrução. O encanamento não remove completamente o tempo ocioso em uma CPU encanada, mas fazer com que os módulos de CPU trabalhem em paralelo aumenta o rendimento da instrução.
Diz-se que uma tubulação de instruções é totalmente encanada se ela puder aceitar uma nova instrução a cada ciclo do relógio. Uma tubulação que não está totalmente encanada tem ciclos de espera que atrasam o progresso da tubulação.



