Melhorando o desempenho com pipeline - PowerPoint PPT Presentation

About This Presentation
Title:

Melhorando o desempenho com pipeline

Description:

Melhorando o desempenho com pipeline Prof. Andr Luis M. Silva e/msn:andreLuis.ms_at_gmail.com * Hardware para descartar instru es. inserido um novo somador para ... – PowerPoint PPT presentation

Number of Views:108
Avg rating:3.0/5.0
Slides: 52
Provided by: and131
Category:

less

Transcript and Presenter's Notes

Title: Melhorando o desempenho com pipeline


1
Melhorando o desempenho com pipeline
  • Prof. André Luis M. Silva
  • e/msnandreLuis.ms_at_gmail.com

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
lw 200 ps 100 ps 200 ps 200 ps 100 ps 800 ps
sw 200 ps 100 ps 200 ps 200 ps 700 ps
form R 200 ps 100 ps 200 ps 100 ps 600 ps
branch 200 ps 100 ps 200 ps 500 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.
Projeto com pipeline
Escritas ao banco de registradores também leva
metade do tempo do ciclo de clock e é sempre
realizada na primeira metade.
10
Pipeline
  • Observem que

Quantidade de instruções Arquitetura sem pipeline Arquitetura com pipeline
1 800 ps 900 ps
2 1600 ps 1100 ps
3 2400 ps 1300 ps
4

1.000.000 800.000.000 ps. 200.000.700 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
Como fica o caminho de dados?
O que precisamos adicionar para realmente dividir
o caminho de dados em estágios?
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
Na execução desta instrução teremos algum
problema?
O risco de dados correspondem às dependências que
voltam no tempo
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 nop nop and 12, 2, 5 or 13,
6, 2 add 14, 2, 2 sw 15, 100(2)
sub 2, 1, 3 and 12, 2, 5 or 13, 6, 2 add
14, 2, 2 sw 15, 100(2)
Qual o problema desta opção?
26
  • Outra solução é utilizando Forwarding
  • Use resultados temporários, não espere que eles
    sejam escritos.
  • Dado é repassado de MEM/WB para operando 2 da ALU
  • 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)
Comparação
Unidade de detecção de riscos
Fios relativo a rs e rt da instrução que antecede
lw
Fio relativo a rt de lw
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
  • e/msnandreLuis.ms_at_gmail.com

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.
EX.Flush
IF.Flush
Zera a memória EX/MEM provocando um flush na
instrução que está em execução
ID.Flush
Zera a memória ID/EX provocando um flush na
instrução anterior a atual que foi decodificada
Zera a memória IF/ID provocando um flush na
instrução anterior a atual que foi buscada
Após flush das instruções anteriores, a memória
de instrução carrega o valor 0x80000180 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.
Dois estensores de sinal
Duas ALUS
Banco de Registradores apresenta saídas e
entradas duplicadas
Memória de instruções apresenta duas saídas.
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 desvio Instrução de transferência de dados Ciclo de Clock
Loop nop lw t0, 0(s1) 1
addi s1, s1, -4 nop 2
addu t0, t0, s2 nop 3
bne s1, zero, Loop sw 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
Realiza a busca e decodificações de instruções,
delegando a instrução para sua respectiva unidade
funcional
Busca e decodificação de instruções
Buffers que armazenam operandos e a operação.
Aguarda disponibilidade da unidade funcional
Estação de Reserva
Estação de Reserva
Estação de Reserva
Estação de Reserva
Executam a operação desejada. Resultado é
armazenado na estação de reserva ou na unidade de
commit. Execução fora de ordem
Ponto Flutuante
Inteiro
Load/Store
Inteiro
Unidade de Commit
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
Write a Comment
User Comments (0)
About PowerShow.com