A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Melhorando o desempenho com pipeline Prof. André Luis M. Silva

Apresentações semelhantes


Apresentação em tema: "Melhorando o desempenho com pipeline Prof. André Luis M. Silva"— Transcrição da apresentação:

1 Melhorando o desempenho com pipeline Prof. André Luis M. Silva

2 Agenda Introdução Pipeline Caminho de dados Controle Problemas no projeto de pipeline Forwarding Introdução de Stalls Descartando instruções.

3 Introdução Em uma linha de produção de carros costumam dividir o trabalho de fabricação em etapas. – Estas etapas visam possibilitar a realização de operações em paralelo. – Diminui o tempo para montagem de vários carros.

4 Introdução Lavando roupas – Etapas: lavar, secar, passar e guardar

5 Introdução Lavando roupas – Etapas: lavar, secar, passar e guardar

6 Pipeline Técnica de implementação em que várias instruções são sobrepostas na execução. Sob condições ideais, o ganho de velocidade com a técnica de pipeline é igual ao número de estágios do pipeline.

7 Pipeline Etapas de uma instrução MIPS: – Buscar instrução da memória – Ler registradores enquanto a instrução é decodificada. – Executar a operação ou calcular um endereço. – Acessar um operando na memória de dados. – Escrever o resultado em um registrador.

8 Pipeline Vamos fazer de conta que: Classe de instrução Busca de instrução Leitura de registradores Operação da ALU Acesso a dados Escrita de registradores Tempo Total lw200 ps100 ps200 ps 100 ps800 ps sw200 ps100 ps200 ps 700 ps form – R200 ps100 ps200 ps100 ps600 ps branch200 ps100 ps200 ps500 ps

9 Pipeline Projeto Ciclo Único Em nosso estudo, padronizamos que a leitura ao banco de registradores leva metade do tempo do ciclo de clock e é sempre realizada na segunda metade. Escritas ao banco de registradores também leva metade do tempo do ciclo de clock e é sempre realizada na primeira metade. Projeto com pipeline

10 Pipeline Observem que : Quantidade de instruções Arquitetura sem pipelineArquitetura com pipeline 1800 ps900 ps ps1100 ps ps1300 ps 4 … ps ps.

11 Pipeline A introdução de pipeline pode ser facilitada caso o conjunto de instruções de suporte a algumas características: – Todas as instruções possuem mesmo tamanho. – Apenas alguns formatos de instruções. – Operandos de memória aparecem apenas em loads e stores.

12 Pipeline Dificuldades na implementação de pipeline – E se: Tivermos apenas uma memória? – Risco estrutural Necessidade de nos preocuparmos com instruções ramificadas (decisões)? – Risco de controle Uma instrução depende de uma instrução anterior? – Risco de dados – Construiremos um pipeline simples e veremos esses problemas.

13 O que precisamos adicionar para realmente dividir o caminho de dados em estágios? Como fica o caminho de dados?

14 Registradores. São adicionados quatro registradores IF/ID, ID/EX, EX/MEM, MEM/WB Este projeto apresenta alguma falha? Que instruções podemos executar para manifestar o problema?

15 add $s1, $s2, $s4 beq $t1, $t2, offset #O que acontece? … Teremos o endereço $s1 em IF/ID quando precisarmos armazenar o resultado da soma?

16 Caminho de dados corrigido O endereço do registrador de escrita é passado para os demais registradores No estágio de escrita, o mesmo é repassado para o banco de registradores

17 Representando Pipelines Auxilia a responder questões do tipo: Quantos ciclos é necessário para execução deste código? Qual ALU está sendo usada no ciclo 5?

18 E como fica a Unidade de Controle?

19 Controle do pipeline Lembrem-se, temos 5 estágios: – Busca da instrução e incremento do PC – Decodificação da instrução / Busca do registrador – Execução – Estágio da memória – Escrita adiada Cada um destes estágios possui elementos que precisam ser configurados pela unidade de controle.

20 Transferir os sinais de controle exatamente como os dados.

21 Resolvendo problemas do Pipeline Como citado inicialmente, podemos ter três problemas principais no projeto de pipeline: – Risco estrutural Criando um novo projeto. – Risco de dados – Risco de controle

22 Risco de Dados Problemas com o início da próxima instrução antes do término da primeira. Seja o seguinte trecho de código: sub $2, $1, $3 and $12, $2, $5 or $13, $6, $2 add $14, $2, $2 sw $15, 100($2) O que acontece neste trecho?

23 Risco de Dados O risco de dados correspondem às dependências que voltam no tempo Na execução desta instrução teremos algum problema?

24 Risco de Dados Soluções de software – Fazer o compilador garantir a inexistência do risco de dados. – Isto é possível através da inserção de operações nop entre as instruções. – Uma instrução nop significa no operation, ou seja, não realiza nenhuma operação. – Ela apenas atrasa o início da instrução subseqüente.

25 Risco de Dados sub $2, $1, $3 and $12, $2, $5 or $13, $6, $2 add $14, $2, $2 sw $15, 100($2) sub $2, $1, $3 nop and $12, $2, $5 or $13, $6, $2 add $14, $2, $2 sw $15, 100($2) Qual o problema desta opção?

26 Dado é repassado de MEM/WB para operando 2 da ALU Outra solução é utilizando Forwarding Use resultados temporários, não espere que eles sejam escritos. Dado é repassado de EX/MEM para operando 1 da ALU

27 Forwarding Unidade de forwarding compara registradores Se o registrador rd da primeira instrução for igual a um dos operandos da instrução anterior, é realizado forwarding

28 Forwarding No entanto, forwarding nem sempre é possível – O que aconteceria se tivéssemos uma instrução de load seguida por uma outra instrução que lê do mesmo registrador? lw $2, 20($1) and $4, $2, $5 or $8, $2, $6 add $9, $4, $2 slt $1, $6, $7

29 Falha usando forwarding Momento que dispomos do dado é posterior ao momento que precisamos dele.

30 Podemos inserir stalls (parar) no pipeline mantendo uma instrução no mesmo estágio. Ao inserir stalls, conseguimos alinhar estes momentos

31 Unidade de detecção de riscos (hazard) Unidade de detecção de riscos Fios relativo a rs e rt da instrução que antecede lw Fio relativo a rt de lw Comparação Se houver dependência, o valor passado é 0.

32 Risco de Controle Seja a seguinte seqüência 40 beq $1,$3,28 44 and $12,$2,$5 48 or $13,$6,$2 52 add $14,$2,$2 … 72 lw $4,50($7) Conseguem ver algum problema? No pipeline, qual caminho devo optar?

33 Risco de Controle Optar por um dos caminhos E o que acontece se optarmos pelo caminho errado? Descartamos as instruções.

34 Hardware para descartar instruções. É inserido um novo somador para calcular o desvio durante a etapa de decodificação. Uma outra instrução é selecionada Se a escolha de desvio foi errada, é desencadeado um stall Zera IF/ID

35 Desvios Se o desvio for tomado, temos uma penalidade de um ciclo. Para nosso projeto simples, isso é razoável. Com pipelines mais profundos, a penalidade aumenta e a previsão de desvio estático diminui drasticamente o desempenho. – Solução: previsão de desvio dinâmico.

36 Desvios

37 Melhorando o desempenho com pipeline – aula 02 Prof. André Luis M. Silva

38 Agenda Tratamento de Exceções. Técnicas sofisticadas de previsão de desvio. Pipeling Avançado

39 Exceções Seja a seguinte instrução: – add $1, $2, $1 O que acontece com o pipeline caso esta instrução gere um overflow aritmético?

40 Tratamento de Exceções. IF.Flush ID.Flush EX.Flush Zera a memória IF/ID provocando um flush na instrução anterior a atual que foi buscada Zera a memória EX/MEM provocando um flush na instrução que está em execução Zera a memória ID/EX provocando um flush na instrução anterior a atual que foi decodificada Após flush das instruções anteriores, a memória de instrução carrega o valor 0x : o endereço da rotina de tratamento de exceção

41 Pipelining Avançado Faz uso de técnicas para prover o aumento do ILP (paralelismo em nível de instrução). Podemos adotar duas abordagens: – Aumento do número de estágios do pipeline. – Aumento do número de componentes internos do processador. Esta abordagem é conhecida como despacho múltiplo, pois permite o início de mais de uma instrução em cada estágio de pipeline.

42 Despacho múltiplo Despacho múltiplo estático – Maior parte das decisões de despacho, são tomadas pelo compilador. – Mais propenso a erros, e menos portável. Despacho múltiplo dinâmico – Maior parte das decisões de despacho, são tomadas pelo processador em tempo de execução. – Menos propenso a erro e mais portável.

43 Despacho Múltiplo Independente da técnica de despacho, é empregado o conceito de especulação. A especulação é uma técnica pela qual o compilador ou processador advinha o resultado de uma instrução com o objetivo de procurar por instruções independentes (que possam ser executadas em paralelo).

44 Despacho Múltiplo Estático Também conhecido como VLIW (palavra de instrução muito longa). Eles recebem este nome porque o pacote de instruções fornecidos pelo compilador em um dado ciclo, pode ser visto como uma única instrução grande. Utilizado na arquitetura IA-64.

45 Despacho Múltiplo Estático Ao invés de 32, são buscados 64 bits da memória de instruções O compilador gera código que pode ser colocado em paralelo. Caso não exista nenhum conjunto de duas instruções passíveis de ser colocadas em paralelo, é inserido uma instrução NOP.

46 Despacho Múltiplo Estático Alguns elementos do hardware são duplicados para permitir execução em paralelo. Memória de instruções apresenta duas saídas. Banco de Registradores apresenta saídas e entradas duplicadas Duas ALUS Dois estensores de sinal

47 Despacho Múltiplo Estático Como este loop seria escalonado em um pipeline com despacho duplo estático? Loop: lw $t0, 0($s1) addu $t0, $t0, $s2 sw $t0, 0($s1) addi $s1, $s1, -4 bne $s1, $zero, Loop

48 Despacho Múltiplo Estático Instrução da ALU ou desvioInstrução de transferência de dados Ciclo de Clock Loop:noplw $t0, 0($s1)1 addi $s1, $s1, -4nop2 addu $t0, $t0, $s2nop3 bne $s1, $zero, Loopsw $t0, 4($s1)4

49 Despacho Múltiplo Dinâmico Processadores com despacho múltiplo dinâmico também são conhecidos como processadores superescalares. Nestes processadores, instruções são despachadas em ordem e, em tempo de execução, o processador realiza especulação. O código escalonado é garantido pelo hardware.

50 Despacho Múltiplo Dinâmico Busca e decodificação de instruções Estação de Reserva Inteiro Ponto Flutuante Load/Store Unidade de Commit Inteiro Estação de Reserva Realiza a busca e decodificações de instruções, delegando a instrução para sua respectiva unidade funcional Buffers que armazenam operandos e a operação. Aguarda disponibilidade da unidade funcional Executam a operação desejada. Resultado é armazenado na estação de reserva ou na unidade de commit. Execução fora de ordem Unidade de commit reordena as ações e libera, quando julgar seguro, os resultados para a memória ou para os registradores.

51 Referências Hennessy e Patterson – Seções 6.1 a 6.10


Carregar ppt "Melhorando o desempenho com pipeline Prof. André Luis M. Silva"

Apresentações semelhantes


Anúncios Google