Capítulo 02 - Pipeline Arquitetura de Computadores Aula 01 28/08/2012 Bruno Iran Ferreira Maciel Mestrando em Ciências da Computação – Cin/UFPE Revisão da aula passada Memória Cache Partição de memória Paginação e Segmentação Aula de hoje Hoje vamos ver Pipeline Implementação de pipeline Problemas com o uso de pipeline Pipeline Pipeline É uma técnica para aumento de desempenho de arquiteturas de processadores. Pipeline Algumas verdades Aumenta o número de instruções executadas simultaneamente e a taxa de instruções iniciadas e terminadas por unidade de tempo. Pipeline não reduz o tempo gasto para completar cada instrução individualmente. Pipeline Algumas verdades Aumenta o número de instruções executadas simultaneamente e o tempo do ciclo do relógio do processador deve ser igual ou maior que o tempo de execução do estágio mais lento do "pipeline". Deve-se procurar dividir a execução da instrução em estágios com o mesmo tempo. O pipeline deve ser mantido sempre "cheio" para que o desempenho máximo seja alcançado. Pipeline Algumas verdades De um modo gera, com o uso do pipeline, cada instrução ainda leva o mesmo tempo para ser executada. Algumas instruções contudo podem ter o seu tempo de execução aumentado, pois atravessam estágios em que não realizam nenhuma operação útil. Implementação de Pipeline Pipeline Exemplo Pipeline Exemplo Pipeline Exemplo Pipeline Exemplo Pipeline Exemplo *Throughput (ou taxa de transferência) é a quantidade de dados transferidos de um lugar a outro. Pipeline Throughput (ou taxa de transferência) é a quantidade de dados transferidos de um lugar a outro. Pipeline O tempo usado pelo processamento de X instruções em um pipeline com N estágios e ciclo de máquina igual a t é dado por: T = [ N + (X-1)] * t Se X >> N (Caso comum), T é aproximadamente X *t Pipeline O tempo usado pelo processamento de 10001 instruções em um pipeline com 6 estágios e ciclo de máquina igual a 1000000 é dado por: T = [6 + (10001-1)] * 1000000 = ~ 10006*106 (com pipeline) T = (6*1000000) * 10001 =~ 60006*106 (sem pipeline) Pipeline Pipeline Pipeline CPU 2,6ns 1,4ns 2,5ns 3ns 1,5ns Pipeline Exemplo 1: Um computador é construído usando a arquitetura de 5 estágios. Os atrasos de tempo das unidades individuais são dados por 1,8ns 1,2ns 3,5ns 4ns 1,5ns a)Qual a frequência do clock f1 necessária pelo método de uma única instrução por período de clock (sem pipeline)? b)Suponha que o clock seja utilizado em cada estágio simultaneamente (com pipeline). Qual seria a freqüência de clock f2 neste caso? Pipeline a) T = 1,8 + 1,2 + 3,5 + 4 + 1,5 = 12ns f=1/T f = 1 / (12 * 10-9) = 0,08333 * 109 = 83,33 * 106 = 83,33 MHz b) T = 4ns (parte mais lenta do pipeline) f=1/T f = 1 / (4 * 10-9) = 0,25 * 109 = 250 * 106 = 250 MHz 1Gb = 109 1MHz = 106 1ns = 10-9 Pipeline Exemplo 2: Considere um sistema que possua 65.000 instruções, uma frequência de 200 MHz e uma arquitetura da pipeline de 8 estágios. Calcule o tempo necessário para executar uma instrução; Calcule o tempo necessário para executar todo o programa sem utilizar a técnica de pipeline; Calcule o tempo necessário para executar todo o programa utilizando a técnica de pipeline; Pipeline a) f=1/T T1instr = T * NumEstag b) TsemPIPE = T * NumEstag * NumInstr c) TcomPIPE = T ( NumInstr + NumEstag - 1) Problemas com Pipeline Pipeline Pipeline Perguntas ? Exercício 1) Um computador é construído usando a arquitetura de 5 estágios. Os atrasos de tempo das unidades individuais são dados por 2,8ns 3,2ns 1,5ns 1,8ns 0,6ns a) Qual a freqüência do clock f1 necessária pelo método de uma única instrução por período de clock (sem pipeline)? b) Suponha que o clock seja utilizado em cada estágio simultaneamente (com pipeline). Qual seria a freqüência de clock f2 neste caso? 2) Considere um sistema que possua 90.000 instruções, uma frequência de 900 MHz e uma arquitetura da pipeline de 6 estágios. a) Calcule o tempo necessário para executar uma instrução; b) Calcule o tempo necessário para executar todo o programa sem utilizar a técnica de pipeline; c) Calcule o tempo necessário para executar todo o programa utilizando a técnica de pipeline;