Pipeline 1
Supondo que o modelo de processador visto anteriormente leva 5 ciclos de clock, por exemplo, para realizar todas as etapas de execução de instrução (1 ciclo em cada etapa): busca de instrução, decodificação de instrução, busca de operandos, execução de instrução e armazenamento de resultado, então teremos a seguinte situação na execução de n instruções:
c1
c2
B
D
B
E
A
B
D
B
E
A
B
D
B
E
A
I I O I R I I O I R I I O I R
c3
c4
c5
c6
c7
I1
c8
c9
c1
0
c1
1
c1
2
I2
c1
3
c1
4
c1
5
c5 n 4
B
D
B
E
A
I I O I R
I3
c5 n 3
...
c5 n 2
c5 n 1
c5 n In
ou assim
c1
c2
c3
c4
c5
c6
I
B
D
B
E
A
1 I I O I R
c7
c8
c9
c1
0
c1
1
c1
2
c1
3
c1
4
c1
5
c5 n 4
c5 n 3
c5 n 2
c5 n 1
c5 n I 2
B
D
B
E
A I I O I R
I 3
B
D
B
E
A I I O I R
. .
.
I n
B
D
B
E
A
I I O I R
Facilmente deduzimos o tempo de execução do programa de n instruções como k.n ciclos de clock dividido pela frequência do processador, onde k é a quantidade de etapas por instrução. Por exemplo:
para executar um programa de 1000 operações em um processador de 1GHz, onde cada instrução leva 5 etapas para execução, teremos: 5.1000 T exec = 1000000000
= 5.10−6 segundos = 5 μs Uma abordagem para diminuir o tempo de execução do programa sobrepor as etapas (unidades) ociosas para processar outras instruções. Para que isso ocorra, estas unidades devem ser independentes entre si no tratamento das instruções, então deve haver um buffer de interface entre uma etapa e outra, como mostra a figura abaixo:
Esse é o modelo chamado