Sie sind auf Seite 1von 64

Pipeline

2013.1

Atraso de pior caso para o computador de ciclo nico


Observe os tempos de setup dos registradores (flip-flops) O tempo total para execuo de uma instruo neste computador simples de ciclo nico de 9.8ns, resultando em um clock mximo de 102MHz.

Datapath com pipeline (tpico)


Valores mximos: Ler dois operandos: 0.8ns (0.6ns + 0.2ns) Executar uma oper. na unidade funcional: 0.8ns Escrever o resultado de volta ao banco de registradores: 0.8ns Total: 2.4ns = 416.7MHz (2.8ns)

Anlise dos atrasos


Trs conjuntos de registradores quebram o atraso em trs partes O banco de registradores corresponde ao primeiro conjunto (Por isso est hachurada apenas a parte de cima). A parte de baixo corresponde a lgica combinacional que seleciona os dois registradores lidos O segundo conjunto formado pelos dois registradores que armazenam A e a sada do MUX B O terceiro armazena as entradas para o MUX D

PIPELINE = ENCANAMENTO
Melhor analogia linha de produo Exemplo: lavadora automtica de carros, com esteiras e estaes em que os passos so realizados
1-Lavagem Lava com gua quente e sabo 2-Enxague Lava com gua quente pura 3-Secagem Sopra ar sobre a superfcie

Lavagem com e sem pipeline


Sem pipeline todos os processos em uma nica estao Com pipeline um passo por estao, um carro por estao Latncia - tempo para executar uma instruo (tempo para lavar completamente um carro) No importa quantos carros esto, o tempo de latncia sempre o mesmo Que latncia maior, com ou sem pipeline??

Comparao
Frequncia mxima de execuo de lavagens:
Para o caso de estao nica (sem pipeline) o inverso do tempo de latncia No caso com mltiplas estaes a frequncia trs vezes o inverso do tempo de latncia Esta frequncia denominada throughput (taxa mdia)

Datapath com pipeline


OF: Operand Fetch, busca de operando o estgio 1 EX: Execution, execuo, estgio 2 WB: Write Back, escreve de volta, estgio 3

Diferenas
Os carros se movem de forma contnua e os dados movem-se sincronamente com o clock O tempo de cada estgio, logo, igual ao perodo do clock e o mesmo para todos os estgio.

Os registradores so chamados de plataformas de pipeline

Atraso mximo
O maior atraso seria de 1.0 ns, correspondendo ao estgio 3 0.2ns o atraso da plataforma, o atraso da seleo pelo MUX D e 0.6 de atraso para escrever de volta nos registradores Frequncia mxima = 1 GHz = 2.4 vezes Porque a melhoria no foi de 3x ?? O clock governado pelo maior atraso, e no pelo atraso mdio.

Diagrama mais detalhado


O banco de registradores mostrado duas vezes (em OF e WB)

Custo
A lavadora de carros com pipeline ocupa trs vezes mais espao e ainda precisa mover os carros entre as estaes Comparado com trs estaes completas?? O aumento no custo no datapath foi basicamente as plataformas de pipeline

Execuo de Microoperaes em pipeline


Devemos ser capazes de ter trs microoperaes em algum estgio de completude na datapath com pipeline em um dado momento Clock 1: uOP1 em OF Clock 2: uOP1 em EX e uOP2 em OF Clock 3: uOP1 em WB, uOP2 em EX e uOP3 em OF Mdia at agora: 1 + 2/3 + 1/3 = 2.0 uOPs em trs clocks Padro de execuo de pipeline para analisar melhor um pipeline

Padro de execuo de pipeline

Sete operaes em nove clocks. 9 x 1ns = 9ns versus 7 x 2.4 = 16.8ns => 1.9 vezes mais rpido

Velocidade
No comeo o pipeline est em preenchimento No final est esvaziando O pipeline s atinge velocidade mxima quando est sendo utilizado completamente Como manter o pipeline sempre cheio? Uma unidade de controle especial que lida com os chamados pipeline hazards.

Controle com pipeline


Unidade de controle para o datapath com pipeline Seria o equivalente a um estgio em que as operaes na lavagem de carro so executadas com uma folha de pedido, produzidas por um atendente, que permite que as operaes em cada estao varie As folhas de pedido, equivalente as instrues, acompanha o carro enquanto ele se move pela fila

Controle com pipeline


Acrescentou a busca de instrues, estgio IF, que agora o estgio 1, do pipeline combinado Decodificador de instrues e leitura do banco de registradores agora estgio 2 Unidade funcional e leitura da memria esto no estgio 3 Escrita no banco de registradores no estgio 4 Registradores adicionais para passar as instrues decodificadas

Instrues
1 LDI R1, 1 2 LDI R2, 2 3 LDI R3, 3 4 LDI R4, 4 5 LDI R5, 5 6 LDI R6, 6 7 LDI R7, 7

Pipeline incluindo estgio de busca de instrues instrues

RISC
Reduced Instruction Set Computer Computador com conjunto de instrus reduzido Arquitetura de conjunto de instrues
Acesso de memria via carga e armazenamento (load/store) Poucos modos de endereamento (~4) Formato de instrues com comprimento nico Instrues que requerem apenas operaes elementares

Fazendo um RISC
Baseado no computador simples estudado O datapath de ciclo-nico convertido para o datapath com pipeline Modificamos o banco de registradores e a unidade funcional (ula + shifter) devido ao comprimento maior da palavra Deslocamento com mltiplas posies Unidade de controle com pipeline com suporte para palavras e instrues de 32 bits Tratamento de desvios em um ambiente com pipeline Tratamento de Data Hazards and Control Hazards

Arquitetura do Conjunto de Instrues (ISA)


32 registradores de 32 bits R0 sempre retorna 0 (e no escrito) Porque tantos registradores
ISA load/store Load/Store usam (em cpus reais) mais de um ciclo

Um contador de programa No h registrador especial para operaes com pilha, que so realizadas via instrues e registradores normais

Registradores

Formato de instrues da CPU RISC

Formato das instrues


Arquitetura de 3 endereos: 2 de fonte (SA e SB) e 1 de destino (DR), todos com 5 bits OPCODE de 7 bits, possibilitando 128 operaes O segundo e terceiro formatos permitem uma constante de 15 bits, um valor imediato ou um deslocamento de endereo (relativo ao PC) A instruo de JUMP utiliza o endereo guardado no registrador fonte SA

Instrues RISC parte 1

Instrues RISC parte 2

Conjunto de Instrues
As operaes realizadas so elementares e podem ser descritas por uma nica sentena de transferncia de registradores Apenas Load e Store lidam com a memria de dados Mais instrues com endereamento imediato IM significa extenso de sinal Os bits de estado (flags) no so armazenados. As instrues de desvio testam o contedo dos registradores. A instruo SLT (set if less than) atualiza o valor de um registrador com 0 ou 1. Se o valor de R[SA] for menor que R[SB], R[DR] = 1. 0 caso contrrio.

Conjunto de instrues (cont.)


A nova instruo JML (jump and link, salta e conecta) prov um mecanismo de implementar rotinas O valor do PC aps a atualizao armazenado no registrador R[DR] e a soma do PC com deslocamento extendido com sinal colocado de volta no PC O retorno da rotina pode utilizar a instruo Jump Register com DR como sendo o registrador fonte Cada subrotina encadeada precisa utilizar um registrador diferente. Como implementar um pilha??

Modos de endereamento
4 modos de endereamento:
Registrador Indireto via registrador instrues com 3 operandos load/store

Imediato
Relativo

formato imediato
desvio e salto, endereo p/ memria de instrues

O modo indicado no opcode (e no em um campo separado) Outros modos de endereamento feito com conjutno de instrues RISC

Organiza o do Datapath

Diferenas entre o datapath com pipeline e o processador RISC


Banco de registradores
Original: 16 registradores de 16 bits, idnticos RISC: 32 registradores de 32 bits, R0 = constante 0 Campos de 5 bits para endereamento (SA, SB e DR)

Deslocamento de apenas 1 bit por um deslocador tipo barril (barrel shifter) que permite deslocamento de mltiplas posies

Deslocador de barril
SH = IR[4:0]

Direita = p posies a direita Esquerda = 64 p posies a direita

Implementando com muxes


Como implementar em SystemVerilog? E como fazer rotaes Alguns muxes no so usados porque o valor a ser substitudo zero Este deslocador forma junto com a ULA a unidade funcional As funes executadas pela unidade funcional so as mesmas de anteriormente, os deslocamento passaram se chamar deslocamentos lgicos A unidade funcional possui uma nova entrada de 5 bits que o valor do deslocamento

Outras mudanas no datapath


Uma nova unidade de constante que permite realizar preenchimento com zero (CS=0) e extenso de sinal (CS=1) O Mux A fornece um caminho para o PC atualizado, (PC

Outras mudanas no datapath


Uma nova unidade de constante que permite realizar preenchimento com zero (CS=0) e extenso de sinal (CS=1) O Mux A fornece um caminho para o PC atualizado, (PC-1), para o banco de registradores, para realizar a operao JML Entrada adicional no MUX D para realizar a operao SLT (set if less than). Fornece 31 zeros seguido de 1,se o valor de R[SA] < R[SB] e 32 zeros se no.

Banco de registradores
O banco de registradores no mais uma plataforma pipeline para escrita de valores no final do estgio de escrita de volta (WB, write back) Pode-se utilizar latches no lugar de flip-flops e escrito mais cedo do que a borda positiva do clock. Lgica especial permite a escrita na primeira metade do ciclo e lido na outra metade. possvel ler os valores escritos no mesmo ciclo. Reduz o custo (rea) do banco de registradores e diminui a complexidade de circuito que lida com hazards de dados

Controle
Acrscimo de SH ao IR Bit CS para o decodificador de instrues MD expandido para 2 bits Outros sinais para permitir a nova lgica de controle para o PC Mux C seleciona 3 fontes diferentes para o prximo valor do PC, selecionado por BS
PC +1 PC atualizado + offset extendido com sinal (BrA) R[AA]

Prximo PC

Registrador PC
Dois registradores de pipeline PC-1 e PC-2 PC -2 somado com a constante (somador dedicado) MUX C (est no estgio EX

Decodificador de instrues
Circuito combinacional 4 bits do opcode formam a funo FS AA, BA e DA vm diretamente dos campos AS, SB e DR Projeto do decodificador de instrues segue os mesmos princpios de uma CPU sem pipeline, apenas tomar cuidado com a temporizao.

Palavras de controle das instrues

Palavras de controle das instrues

Data Hazards
Outro problema alm do preenchimento e esvaziamento do pipeline Hazards so problemas de temporizao devido ao fato da execuo de uma instruo ocorrer vrios ciclos depois da sua busca Se uma instruo posterior utilizar o resultado desta operao antes deste estar disponvel, utilizar um resultado antigo, o que resultar em erro.

Exemplo
1 MOVA R1, R5 2 ADD R2, R1, R6 3 ADD R3, R1, R2

Dois Data Hazards


A instruo MOVA coloca R5 em R1, na primeira metade de WB, no ciclo 4 O primeiro ADD l R1 na segunda metade de DOF, no ciclo 3 O segundo ADD usa o valor errado de R1 O resultado colocado em R2 na primeira metade de WB no ciclo 5 O segundo ADD l R1 e R2 na segunda metade de DOF, no ciclo 4 R1 OK, mas R2 s escrito no ciclo 5

Soluo via software


O compilador gera cdigo que s utiliza os valores quando estes esto disponveis Necessrio informao precisa de como o pipeline funciona A soluo por software acrescenta operaes NOP para atrasar as leituras. Custo: o programa maior e mais lento Operaes teis, que no provoquem data hazards podem ser inseridas no lugar dos NOPs

Soluo por software

Soluo de stall por hardware


O hardware acrescenta os NOPs automaticamente Quando um operando encontrado no estgio DOF que ainda no foi escrito, a execuo associada e o estgio de escrita de volta so atrasados ao parar (stall) o fluxo do pipeline em IF e DOF por um ciclo de clock. Quando uma operao deixa de ser realizada, diz-se que o pipeline contm uma bolha.

Soluo por Hardware - Stall

Data Hazard Stall

Modificaes no Pipeline
Hardware adicional mostrado sombreado em azul claro Ocorre um data-hazard de leitura de registrador se:
H um registrador de destino no estgio de execuo que vai ser escrito no prximo ciclo e que deveria ser lido no estgio atual DOF como um dos dois operandos

Equaes booleanas
HA MADOF ( DAEX AADOF ) RWEX ( DAEX )i
i 0 4 4

HB MBDOF ( DAEX BADOF ) RWEX ( DAEX )i


i 0

DHS HA HB

Condies
MA(DOF) = 0 operando A um registrador AA(DOF) = DA(EX) um registrador sendo lido e que pode ser escrito no prximo ciclo RW = 1 realmente vai ser escrito no WB DA 00000 R0 um registrador virtual e pode ser escrito O mesmo para B

O sinal DHS
O sinal DHS usado invertido Inicia a bolha, evitando mudanas no registrador de instrues IR e o PC Portas AND foram RW e MW para 0, no ocorrendo escritas nos registradores nem memria Fora BS para zero (incrementa PC), evitando leitura de registradores (no salto com registrador) ou desvios (nos flags) As portas AND tambm foram DA para zero, fazendo a escrita no registrador R0, provocando uma condio que no provoca stall PC, PC-1 PC-2 e IR so substitudos por registradores com habilitao de carga

Passagem a frente dos Dados


DATA FORWARDING No h perda de desempenho Quando um data hazard detectado, o resultado est disponvel em algum outro lugar do pipeline?? A informao necessria para o resultado est disponvel na plataforma de pipeline que fornece as entradas para o MUX D Soluo: Faz uma cpia do MUX D, MUX D, para um barramento D.

Data Forwarding

Como fica a execuo


O data hazard detectado no ciclo 3 O valor que iria para o registrador R1 no prximo ciclo, passado a frente vindo do estgio EX da primeira instruo no ciclo 3 O valor correto entra na plataforma DOF/EX na borda do prximo clock e o ADD executado normalmente O data hazard para R2 detectado no ciclo 4 e o valor correto passado a frente.

Diagrama de execuo com data forwarding

Anlise
No h aumento de ciclos de clock Mesmo throughput que sem data-hazard Pode acrescentar atraso combinacional devido ao caminho maior Perodo de clock pode ser mais longo Penaliza todos os estgios

Hazard de controle
Ocorrem devido aos desvios Exemplo:
1 BZ 2 MOVA 3 MOVA 4 MOVA 20 MOVA R1, 18 R2, R3 R1, R2 R4, R2 R5, R6

Devido ao pipeline, 2 e 3 so executadas independemente de haver o desvio (R1=0)

Execuo atrasada

Insero de NOPs

Predio de desvios
Prxima aula

Das könnte Ihnen auch gefallen