Para a família PIC, cada ciclo de instrução dura quatro
pulsos de clock. Os
microcontroladores PIC fazem uso do pipeline
para aumentar a velocidade de execução das instruções. Pipeline é uma técnica utilizada pelos processadores mais modernos
e consiste em dividir a execução das instruções em partes e cada uma destas
partes pode ser executada em paralelo em um formato semelhante a uma linha de
montagem de carros. No caso dos microcontroladores PIC pode-se visualizar a
execução das instruções como sendo dividida em dois estágios: busca (fetch)
e executa (execute), onde cada estágio gasta 4 ciclos de clock.
O pipeline permite
que quase todas as instruções possam ser executadas em um ciclo de máquina, com
exceção das que alteram o contador de programa, como chamadas de rotinas e seus
retornos. Nestes casos, o pipeline
sofre uma penalidade de um ciclo de clock
devendo descartar (flush, na figura 8) a instrução que já
havia sido buscada para então carregar a instrução no endereço correto,
consumindo, portanto, dois ciclos de instrução (SOUZA, 2000, pg 6).
A figura 1 (MATIC, 2000, pg 18) mostra o fluxo das
instruções no pipeline em um pequeno
trecho de um programa escrito em assembly.
Figura 1: Pipeline de um trecho de código
No ciclo 0, o código da instrução MOVLW 55h é buscado da
memória (desconsiderando a instrução que é executada neste ciclo). No ciclo 1,
a instrução MOVLW 55h é executada e a instrução MOVWF PORTB é buscada da
memória. No ciclo 2 a instrução MOVWF PORTB é executada e é buscada da memória
a instrução CALL SUB_1. A chamada da sub-rotina SUB_1 e a leitura da instrução
BSF PORTA, BIT3 são feitas no ciclo 3. Como a instrução BSF PORTA, BIT3 não é a
que será executada no momento e sim a primeira instrução da sub-rotina SUB_1,
deve ser feita outra busca de instrução. Esta situação mostra porque as instruções
de chamada de sub-rotina consomem dois ciclos de máquina, já que a instrução
BSF PORTA, BIT3 terá que ser lida novamente ao término da sub-rotina. O ciclo 4
é usado somente para ler a primeira instrução da sub-rotina e nenhuma instrução
é executada. A primeira instrução da sub-rotina é então executada no ciclo 5.
Fonte:
Duarte, Rafael Lindemann. SISTEMA INTELIGENTE DE MONITORAMENTO E CONTROLE DE IRRIGAÇÃO. São José: UNIVALI, 2006. (TCC Ciência da Computação)