Baixe o app para aproveitar ainda mais
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
Compartilhar