Bom, vejo os colegas aqui de fórum falando de pipeline, que quanto mais pipelines melhor e etc, mas creio que a maioria não sabe o que realmente é a técnica de pipeline, para que ele serve e como ele funciona.
Meu objetivo aqui é tentar explicar de forma simples, tentando contextualizar o pessoal à uma abordagem mais científica do assunto, e por fim até explicar porque a cache L1 divide-se em cache de
dados e cache de instruções.
Primeiro, uma analogia sobre o funcionamento da técnica de pipeline com uma lavanderia de roupas.
Digamos que para lavar as roupas, a lavanderia passa por quatro etapas, conforme a figura.
De acordo com a figura, as etapas para lavar roupas, representados na linha A, são: lavar, secar, dobrar e guardar.
Podemos observar pela figura que enquanto estamos lavando uma remessa de roupas(representado em A) , não estamos secando nada, nem dobrando, nem guardando. Depois enquanto secamos as
roupas, não estamos lavando, nem dobrando, nem guardando e assim por diante.
A técnica de pipeline faz com que possamos usar todos os recursos disponíveis da melhorar maneira possível, ou seja, evitar ao máximo que recursos livres fiquem ociosos.
Conforme a figura abaixo podemos ver como ficaria a lavanderia com a técnica de pipeline.
Podemos ver que na segunda meia hora, após lavar as roupas de A, em que este entra no processo de secagem, a lavadora fica livre e então B pode usar a máquina de lavar ao mesmo tempo em que a
roupa de A está secando. Na terceira meia hora temos A dobrando, B secando e entra uma nova remessa(C) lavando as roupas.
Na figura abaixo um comparativo da lavanderia com e sem o uso da técnica de pipeline.
Percebe-se que sem a técnica de pipeline as roupas levariam 8 horas para serem lavadas, enquanto com a técnica elas levariam apenas 3 horas e meia.
Agora tentarei passar o que foi dito nessa analogia para mostrar como a técnica de pipeline funciona em um processador. Nesse caso usarei como objeto de estudo o processador MIPS S2000.Mais
informações: http://en.wikipedia.org/wiki/MIPS_architecture .
O MIPS, assim como outros processadores, executam instruções lógico aritméticas. Cada instrução seria a mesma coisa que lavar uma remessa de roupas da lavanderia. Uma instrução no MIPS divide-se em 5 etapas:
• IF - Busca a instrução de memória
• ID - Decodificação/ leitura de registradores
• EX – Execução: operação / cálculo de endereços
• ME – Acesso à operando em memória
• WB – Escrita do resultado em registrador
Abaixo uma figura que mostra as etapas para a execução de cada instrução com pipeline.
Usando nossa analogia , podemos comparar cada estagio da execução da instrução a uma etapa para a lavação de roupas da lavanderia,como se IF fosse lavar, ID fosse secar e assim por diante.
Na figura abaixo temos uma ilustração da execução de 3 instruções do tipo “Lw”(load word, que é buscar um dado da memória) com e sem o uso da técnica de pipeline.
Notem que sem pipeline esse conjunto de instruções levariam 800 Pico segundos para serem executados, enquanto que com o uso da técnica de pipeline elas levariam somente 200 Pico segundos.
Para finalizar vou explicar porque os processadores possuem a cache L1 divida em cache de instruções e cache de dados.
Podemos notar, na penúltima figura, que no quarto ciclo as instruções IF e ME estão sendo executadas ao mesmo tempo. Logicamente seria impossível buscarmos em uma mesma unidade de memória dois dados
ao mesmo tempo.
É aí que entra o fato de termos duas porções de cache L1, uma de instruções (para IF) e outra para dados (para ME). Sem isso teríamos um fenômenos chamado “hazard”, que é como se fosse uma parada na
execução das instruções subsequentes até que a execução dessa instrução termine.
Existem ainda muitos outros cenários em que um “hazard” inevitavelmente podem acontecer, mas não é minha intenção falar sobre eles porque seria um aprofundamento muito grande.
Espero ter ajudado e qualquer dúvida podem perguntar!
Figuras do esquema da lavanderia retiradas do livro:
Computer Organization and Design, 4th Edition
The Hardware/Software Interface
By David A. Patterson and John L. Hennessy
Demais figuras esquemáticas retiradas de:
www.inf.ufsc.br/~santos
Meu objetivo aqui é tentar explicar de forma simples, tentando contextualizar o pessoal à uma abordagem mais científica do assunto, e por fim até explicar porque a cache L1 divide-se em cache de
dados e cache de instruções.
Primeiro, uma analogia sobre o funcionamento da técnica de pipeline com uma lavanderia de roupas.
Digamos que para lavar as roupas, a lavanderia passa por quatro etapas, conforme a figura.
De acordo com a figura, as etapas para lavar roupas, representados na linha A, são: lavar, secar, dobrar e guardar.
Podemos observar pela figura que enquanto estamos lavando uma remessa de roupas(representado em A) , não estamos secando nada, nem dobrando, nem guardando. Depois enquanto secamos as
roupas, não estamos lavando, nem dobrando, nem guardando e assim por diante.
A técnica de pipeline faz com que possamos usar todos os recursos disponíveis da melhorar maneira possível, ou seja, evitar ao máximo que recursos livres fiquem ociosos.
Conforme a figura abaixo podemos ver como ficaria a lavanderia com a técnica de pipeline.
Podemos ver que na segunda meia hora, após lavar as roupas de A, em que este entra no processo de secagem, a lavadora fica livre e então B pode usar a máquina de lavar ao mesmo tempo em que a
roupa de A está secando. Na terceira meia hora temos A dobrando, B secando e entra uma nova remessa(C) lavando as roupas.
Na figura abaixo um comparativo da lavanderia com e sem o uso da técnica de pipeline.
Percebe-se que sem a técnica de pipeline as roupas levariam 8 horas para serem lavadas, enquanto com a técnica elas levariam apenas 3 horas e meia.
Agora tentarei passar o que foi dito nessa analogia para mostrar como a técnica de pipeline funciona em um processador. Nesse caso usarei como objeto de estudo o processador MIPS S2000.Mais
informações: http://en.wikipedia.org/wiki/MIPS_architecture .
O MIPS, assim como outros processadores, executam instruções lógico aritméticas. Cada instrução seria a mesma coisa que lavar uma remessa de roupas da lavanderia. Uma instrução no MIPS divide-se em 5 etapas:
• IF - Busca a instrução de memória
• ID - Decodificação/ leitura de registradores
• EX – Execução: operação / cálculo de endereços
• ME – Acesso à operando em memória
• WB – Escrita do resultado em registrador
Abaixo uma figura que mostra as etapas para a execução de cada instrução com pipeline.
Usando nossa analogia , podemos comparar cada estagio da execução da instrução a uma etapa para a lavação de roupas da lavanderia,como se IF fosse lavar, ID fosse secar e assim por diante.
Na figura abaixo temos uma ilustração da execução de 3 instruções do tipo “Lw”(load word, que é buscar um dado da memória) com e sem o uso da técnica de pipeline.
Notem que sem pipeline esse conjunto de instruções levariam 800 Pico segundos para serem executados, enquanto que com o uso da técnica de pipeline elas levariam somente 200 Pico segundos.
Para finalizar vou explicar porque os processadores possuem a cache L1 divida em cache de instruções e cache de dados.
Podemos notar, na penúltima figura, que no quarto ciclo as instruções IF e ME estão sendo executadas ao mesmo tempo. Logicamente seria impossível buscarmos em uma mesma unidade de memória dois dados
ao mesmo tempo.
É aí que entra o fato de termos duas porções de cache L1, uma de instruções (para IF) e outra para dados (para ME). Sem isso teríamos um fenômenos chamado “hazard”, que é como se fosse uma parada na
execução das instruções subsequentes até que a execução dessa instrução termine.
Existem ainda muitos outros cenários em que um “hazard” inevitavelmente podem acontecer, mas não é minha intenção falar sobre eles porque seria um aprofundamento muito grande.
Espero ter ajudado e qualquer dúvida podem perguntar!
Figuras do esquema da lavanderia retiradas do livro:
Computer Organization and Design, 4th Edition
The Hardware/Software Interface
By David A. Patterson and John L. Hennessy
Demais figuras esquemáticas retiradas de:
www.inf.ufsc.br/~santos