Buscar

Pipeline.pdf464745065

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 4 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

PIPILINE - LINHA DE MONTAGEM 
 
 
A arquitetura proposta por Jon Von Neumann define um processador 
que executa UMA INSTRUÇÕES COMPLETA DE CADA VEZ . Deste 
modo, SOMENTE após o termino da instrução corrente é possível iniciar uma 
nova instrução caracterizando o funcionamento seqüencial . Este processador 
usa um ÚNICO registrador para armazenar a Instrução a ser executada ( RI ) 
e é auxiliado pelo registrador PC que automaticamente controla e armazena o 
endereço da próxima instrução que será executada . Isto enquadra-se nas 
definições das máquinas do tipo SISD - Single Instruction Single Date - ou 
seja , computação com uma única instrução sobre um único dado . 
 
 
 O funcionamento desta máquina pode ser resumido como sendo uma 
seqüência de Ciclos de Buscas de instruções e Ciclos de Execução : 
 
 
 
 
 
 
 
 
 
 
onde : 
T1 - Tempo de busca da instrução 
T2 - Tempo de Execução 
T = T1 + T2 - Tempo de execução de uma instrução 
 
O tempo gasto para executar por exemplo três instruções é simplesmente 
a soma os tempos de TA + TB + TC caracterizando o funcionamento puramente 
seqüencial . 
 
Um pouco de História : 
 
 No o início do século XX a industria automobilística produzia carros de 
modo seqüencial : 
Primeiro os chassis gastando um tempo T1 , depois o motor gastando um 
tempo T2 , depois os eixos e rodas gastando um tempo T3 , depois a carroceria 
Ciclo de 
Busca 
Ciclo de 
Execução 
T 1 T 2 
Ciclo de 
Busca 
Ciclo de 
Execução 
T 1 T 2 
Ciclo de 
Busca 
Ciclo de 
Execução 
T 1 T 2 
T A T B T C 
gastando um tempo T4 e etc. Deste modo, o tempo gasto para fabricar um 
carro seria a soma de todos esses tempos : 
 
 
 T = + + + + . . . + 
 
 
 Henry Ford , cria uma nova metodologia de fabricação. Baseado na 
observação do processo de fabricação é possível identificar quais estágios são 
independentes no tempo dos outros estágios . Assim, Henry Ford propõe a 
criação de uma linha de montagem onde uma parte da montagem poderia 
iniciar sem que a outra estivesse concluída , sobrepondo estágios e 
consequentemente reduzindo o tempo de fabricação . Para produzir um carro 
com este método será gasto um tempo T X menor que T porém , como as etapas 
são independentes no tempo continuarão a produzir novos carros : 
 
 
 
 Ao final de um turno de N horas 
 serão produzidos X carros , 
 resultando em: 
 Carros / Horas = X carros 
 N horas 
 
. . . + 
 T X 
 
 
 
Procedendo da mesma forma : 
 
 
Detalhando o Ciclo de Busca e o Ciclo de Execução conforme o 
fluxograma de funcionamento destas arquiteturas , podemos observar que 
existem vária fases intermediárias que não criam conflitos com as fases 
seguintes . Como exemplo, será criado cinco unidades para reproduzir um 
ciclo completo de máquina assim , teremos : 
 
 
 T 1 T 2 T 3 T 4 T N 
 T 1 
 T 2 
 T 3 
 T 4 
 T N 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Vantagens da PIPELINE 
 
Supondo que cada unidade desta máquina gaste 1 ns ( nano 10 
-9
 ) para executar PARTE da instrução , 
 
podemos calcular quanto tempo leva para uma instrução atravessar a pipeline : 
 
T = 5 estágios x 1 ns = 5 ns o que corresponde a 200 MIPS . 
 
Porém , observando melhor veremos que após a primeira instrução ser executada a segunda instrução 
leva apenas um ciclo de clock para ser executada resultando em : 
 
 T = 1 ns o que corresponde a 1000 MIPS ou 1GIPS que muito mais rápido . 
 
 
A LATÊNCIA é o quanto tempo leva para uma instrução para ser executada . 
Unidade de 
Busca de 
Instrução 
Unidade 
decodificação 
de Instruções 
Unidade de 
Busca de 
Operando 
Unidade de 
Execução de 
Instruções 
Unidade de 
Escrita na 
Memória 
Unidade de 
Busca de 
Instrução 
Instrução 
 1 
Instrução 
 1 
Instrução 
 2 
Instrução 
 2 
Instrução 
 3 
Instrução 
 3 
Instrução 
 4 
Instrução 
 4 
Instrução 
 5 
Instrução 
 5 
1 
2 
3 
4 
5 
6 
9 
7 
8 
Sentido da EXECUÇÃO 
Instrução 
 1 
Instrução 
 2 
Instrução 
 3 
Instrução 
 4 
Instrução 
 5 
Instrução 
 1 
Instrução 
 2 
Instrução 
 3 
Instrução 
 4 
Instrução 
 5 
Instrução 
 1 
Instrução 
 2 
Instrução 
 3 
Instrução 
 4 
Instrução 
 5 
TEMPO 
Saída 
O grande problema com a PIPELINE é manter o fluxo de instrução sem falhas . 
 
 Para manter o fluxo de instruções constante é necessário buscar novas instrução o mais rápido 
possível e mante-las disponíveis ( geralmente na memória CACHE ) . Porém , quando são executadas 
instruções de desvio condicional ( JZ , JNZ ... if ( ? ) ) o endereço da próxima instrução só será 
conhecido após o término da execução da atual . Isto impede o início de uma nova busca de instrução 
causando a parada PIPELINE . 
 As instruções de desvio podem ser classificadas como : 
 Incondicionais 98 
 Condicionais 
 Loop - caso especial da condicional . 
 
 Estudos mostram que cerca de 30% das instruções são de desvio , causando paradas na pipeline . 
 
 T1 T2 T3 T4 T5 T6 T7 T8 T9 T10 T11 T12 
 
Busca de instrução 1 2 3 4 5 6 7 8 
 
Decodificação da Ins . 1 2 3 4 5 6 7 
 
Cálculo do endereço 1 2 3 4 5 6 
 
Busca do operando 1 2 3 4 5 
 
Execução 1 2 3 4 
 
 
Formas de melhorar o desempenho: 
 
 Predizer de que maneira cada desvio seria realizado, buscando a próxima instrução e eliminando 
a falha na pipiline. 
 
- Previsão ESTÁTICA - No momento da compilação o compilador faz uma suposição a 
respeito de cada instrução de desvio que ele gera . 
 
Exemplo : Loop repetitivo de 10 vezes . 
 
R: A maior probabilidade é que o desvio retorne para o começo do loop. 
 
Exemplo : Uma rotina de teste chamando o Sistema Operacional em busca de um código de erro . 
 
R : O mais provável é que não ocorra o erro e não desvie . 
 
Uma forma mais elaborada é que o projetista da máquina crie dois códigos de operação "opcode" para 
cada tipo de desvio . O compilador então usará um código para o caso de maior probabilidade de desvio 
e um segundo código para ocaso de menor probabilidade. 
O compilador também pode ajudar , reescrevendo de maneira otimizada as instruções do programa de 
modo que o nível de lógica digital possa executar instruções mais rápidas . 
 
Exemplo : Loop Enquanto ( I < 11 ) faça trocar por Enquanto ( I = 10 ) faça 
 . . . . . . . . . . 
 fim enquanto fim enquanto 
Porque : V V 
 11 - I = 0 I = 0 
 F 
aqui o é conhecido

Outros materiais