next up previous
Next: Problema de instruções de Up: Máquinas RISC Previous: Endereçamento apenas por registrador

Uso de pipelining

A regra de ouro vai ser relaxada ligeiramente: ao invés de exigir a execução de uma instrução por ciclo, será exigido o início da execução de uma instrução em cada ciclo.

Vamos supor que a execução de uma instrução envolve 2 ou 3 etapas, cada etapa levando um ciclo. As etapas são:

  1. busca da instrução da memória

  2. execução

  3. no caso de LOAD e STORE, acesso a memória

As etapas são executadas por cicuitos separados de hardware, como em uma linha de montagem (``pipelining''). A Figura [*] mostra a idéia.

Figure: Load retardado

O hardware permite a execuçaõ simultânea das 3 etapas: busca, execução, e acesso a memória. Notem que as 3 etapas não se referem a uma mesma instrução. (O mesmo acontece com uma linha de montagem de automóveis: os vários estágios em executando simultânea tratam de vários carros.) Veja a figura do exemplo. No ciclo 1, a instrução 1 é buscada. No ciclo 2, a instrução 2 é buscada e a instrução 1 executada. No ciclo 3, a instrução 3 (marcada L para significar LOAD) é buscada e a instrução 2 executada. No ciclo 4, a instrução L é iniciada e, como envolve acesso à memória, deve levar mais um ciclo para ser completada. No ciclo 5, algo interessante acontece (marcado pelo círculo). A instrução 4 é executada, embora a instrução L não tenha sido completada ainda. Isso é possível desde que a instrução 4 não utilize o registrador que está sendo carregado pela instrução L.

É trabalho do compilador descobrir alguma instrução (a instrução 4 no exemplo) para poder preender o ``buraco'' deixado por instruções LOAD e STORE.


next up previous
Next: Problema de instruções de Up: Máquinas RISC Previous: Endereçamento apenas por registrador
Siang Wun Song
2001-09-19