MIPS PIPELINE.

Slides:



Advertisements
Apresentações semelhantes
Arquitectura de Computadores 2004/05
Advertisements

Ch Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2004s2 Desempenho.
PIPELINE (continuação).
CPU: Controle e processamento
Arquitetura de Computadores
WebDesign Redes de Computadores Aula 05
WebDesign Redes de Computadores Aula 07
Introdução à Programação usando Processing Programação Gráfica 2D Animações Exercício Animações 14/10/09 Bruno C. de Paula 2º Semestre 2009 > PUCPR >
14/10/09 Uma animação possui: Início; Passo; Fim; 1.
Aula 06: Introdução ao Pipelining, Hazards Estruturais e Forwarding
Introdução Arquitectura com unidade de controlo uniciclo.
Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 2.
Software Básico Silvio Fernandes
Exemplo de arquitetura registrador-registrador- MIPS
MIPS MULTICICLO Fluxo de Dados e Controle
Processador Fluxo de Dados e Controle
AULA 06 - MIPS PIPELINE.
Arquitetura de Sistemas Operacionais
Processo de Pipelining (exemplo da lavanderia)
MC542 Organização de Computadores Teoria e Prática
Daniel M. Aquino, Marcelo C. Perez, Thais A. B. Fernandes
Arquiteturas Superescalares
Arquiteturas Diferentes
Pipeline.
CISC e RISC.
SSC114 Arquitetura de Computadores Pipeline - Predição de desvios
SSC144 Arquitetura de Computadores Introdução
SSC114 Arquitetura de Computadores Pipeline - Desempenho
Dados do Grupo. 1) Apresentação do Testbench Desenvolvido:
Rganização de Computadores Melhorias de Desempenho com Pipelines - Parte B - Capítulo 6 – Patterson & Hennessy Organização de Computadores Melhorias de.
Rganização de Computadores Melhorias de Desempenho com Pipelines Capítulo 6 – Patterson & Hennessy Organização de Computadores Melhorias de Desempenho.
Prof. Fábio M. Costa Instituto de Informática Universidade Federal de Goiás rganização de Computadores Organização do Processador Parte B Capítulo 5 –
Pipelining Ana Cristina Alves de Oliveira ufcg. edu
Implementando um Montador com LEX e YACC - 3
1998 Morgan Kaufmann Publishers Ch5B-1 O Processador: Via de Dados e Controle (Parte C: microprogramação)
Arquitetura de Computadores
Autor: Fernando de Mesentier Silva
Melhorando o desempenho com pipeline
Processadores – Aula 3 Professor: André Luis Meneses Silva
Provas de Concursos Anteriores
Processadores – Aula 3 Professor: André Luis Meneses Silva
Introdução à Programação
Prof. Felipe Ferreira de Oliveira
Funcionamento básico de um computador
1 António Arnaut Duarte. 2 Sumário: primeiros passos;primeiros passos formatar fundo;formatar fundo configurar apresentação;configurar apresentação animação.
Aula 3©Universidade do Algarve 1 Do alto-nível ao assembly Compiladores, Aula Nº 3 João M. P. Cardoso.
Classes de Arquiteturas Tipos de operação Codificação das operações
Pipeline O throughput de um pipeline é determinado pela freqüência com que uma instrução sai do pipeline. Todos os estágios devem estar prontos ao mesmo.
Coordenação Geral de Ensino da Faculdade
Arquitetura de computadores
Aula 17 1 Análise Sintáctica Compiladores, Aula Nº 17 João M. P. Cardoso.
EXERCÍCIOS PARA GUARDA-REDES
Arquitetura de computadores
1 2 Observa ilustração. Cria um texto. Observa ilustração.
Agenda - Aula 2 Introdução (Computador Digital) Processadores
Contextualização de Paralelismo em nível de instrução
Unidade Central De Processamento: Processador
Introdução a Algoritmos
Unidade Central De Processamento: Processador
GINÁSTICA LABORAL UM NOVO CAMINHO.
Conceitos Avançados de Arquitetura de Computadores Arquiteturas RISC Reduced Instruction Set Computer 6.
Conceitos Avançados de Arquitetura de Computadores Arquiteturas RISC Arquiteturas Superpipeline e Superescalares.
1  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s Prof. Paulo Cesar Centoducatte
Arquitetura de computadores
Organização de Computadores Implementação da UCP Construção do caminho de dados Controle Implementação monociclo.
 Evolução constante das linguagens de programação de alto nível (LAN) desde o Fortran (primeira LAN)  Surgimento de novos paradigmas como a OO, Orientação.
 Todo processador é constituído de circuitos capazes de realizar algumas operações primitivas:  Somar e subtrair  Mover um dado de um local de armazenamento.
TRABALHO AVALIATIVO ALUNO: FRANCISCO HELIÉSUS DE MEDEIROS MATÉRIA: ORGANIZAÇÃO DE COMPUTADORES.
Construção de Via de dados Trabalho Avaliativo do Primeiro Bimestre. Marcos André de Sena Silva.
Transcrição da apresentação:

MIPS PIPELINE

Multiciclo: as operações são divididas em vários estágios (S) MULTICICLO x PIPELINE Multiciclo: as operações são divididas em vários estágios (S) que funcionam sequencialmente. Latch Latch Latch S1 S2 Sn INATIVO no ciclo 2 ATIVO no ciclo 2 INATIVO no ciclo 2 Pipeline: vários estágios funcionam simultaneamente, para intruções diferentes. Latch Latch Latch Sn S1 S2 instrução k instrução k - 1 instrução k – (n -1)

Pipeline: é natural! A B C D Exemplo de Lavanderia Tem-se os volumes A, B, C e D de roupas para lavar, secar e passar A lavadora leva 30 minutos A secadora leva 40 minutos “Passadeira” leva 20 minutos A B C D

Lavanderia Sequencial 6 7 8 9 10 11 Meia noite Tempo 30 40 20 30 40 20 30 40 20 30 40 20 T a s k O r d e A B C D A lavanderia sequencial leva 6 horas para 4 volumes Se usarem o “pipeline”, quanto tempo levaria?

Lavanderia em Pipeline 6 7 8 9 10 11 Meia noite Tempo 30 40 20 o r d e m A B C D Lavanderia em Pipeline leva 3.5 horas

Lições sobre o Pipeline O Pipeline ajuda melhorar o throughput de um trabalho por completo A taxa do Pipeline é limitada pelo estágio mais lento Speedup ideal = Número de estágios Comprimentos desbalanceados dos estágios do pipeline reduzem o speedup O tempo para “preencher” o pipeline e o tempo para “limpar” o pipeline reduzem o speedup 6 7 8 9 Tempo o r d e m 30 40 20 A B C D

Pipelines em Computadores Executa bilhões de instruções, tal que o importante seja o throughout Speedup: para um programa de n instruções, num computador pipeline de k estágios, relativo a um computador multiciclo de k ciclos, considerando mesmo tempo de ciclo. Tempo do multiciclo = n . k .tempociclo Tempo do pipeline = (k + n-1).tempociclo Speedup = tempo do multiciclo/tempo do pipeline Para n grande, speedup ~ k

Pipeline no MIPS multiciclo pipeline

Implementação do Pipeline O que facilita: Todas as instruções com mesmo comprimento Somente poucos formatos de instruções Os operandos de memória aparecem somente em loads e stores O que difículta: conflitos estruturais: supor que temos somente uma memória conflitos de controle: preocupar com instruções de branch conflitos de dados: uma instrução depende de uma instrução prévia Manipulação de exceções Melhorar o desempenho com execução fora-de-ordem, etc.

Idéia Básica SOMADOR REGS. SOMADOR MEM. INSTR. ALU MEM. DADOS

Fluxo de dados com latch’s entre os estágios IF/ID ID/EX EX/MEM MEM/WB somador somador Regist. PC ALU Mem. Instr. Mem. dados

Pipelines representados graficamente

CONTROLE DO PIPELINE PCSrc Branch RegWrite Regs. Mem Read Mem ALUSrc toReg ALUSrc PC ALU Mem. Inst. Mem. dados Mem Write ALUOp RegDst

Controle do Pipeline O que necessita ser controlado em cada estágio? Busca de Instrução e Incremento do PC Decodificação da Instrução / Busca de Registradores Execução Estágio de Memória Write Back Cada estágio deve funcionar para uma determinada instrução, simultaneamente a outros estágios.

Controle do Pipeline Os sinais são repassados pelos estágios como os dados Controle do Pipeline MEM/WB IF/ID ID/EX EX/MEM

Fluxo de dados e controle PCSrc RegWrite Branch MemRead MemtoReg ALUOp MemWrite RegDst

Dependências de dados Pode ocorrer iniciando uma instrução antes de terminar a anterior dependências que “vão retroceder no tempo” são conflitos de dados

Solução por Antecipação – usar os resultados temporários, sem esperar que eles sejam escritos - Atuar no caminho do banco de registr. p/ substituir o valor de leit/escrita de registrador - Antecipação da ALU what if this $2 was $13?

Solução por Antecipação Unidade de antecipação

CIRCUITO DE ANTECIPAÇÃO (FORWARDING UNIT)

Nem sempre é possível solucionar por antecipação (Fazer o Load de uma palavra pode causar um conflito) - Se uma instrução tenta ler um registrador seguindo uma instrução de load word que escreve no mesmo registrador. Portanto, necessitamos que a unidade de detecção de conflitos paralize, em um ciclo, as instruções seguintes ao load word

Parada (Stall) manter instruções nos mesmos estágios

Unidade de detecção de conflitos A parada faz com que uma instrução que não escreve nada prossiga

Exemplo de inserção de parada sinais 0

Conflitos de Desvio (Branch) Quando é decidido pelo branch, outras instruções estão em pipeline! O pipeline equivale a previsão de “não ocorrer branch” Solução: hardware para desprezar as instruções posteriores caso haja branch

Controle para limpar as instruções posteriores além de antecipar o cálculo da condição IFFlush

Exemplo de beq e atualização do PC 44 40 endereço 72 lw $4, 50($7) Resulta em NOP

RESULTADO DO CONTROLE DE DESVIO Necessidade de limpar apenas uma instrução

Melhorando o desempenho Tentar evitar paradas! P.ex., reordenar essas instruções: lw $t0, 0($t1) lw $t2, 4($t1) sw $t2, 0($t1) sw $t0, 4($t1) Adicionar um “branch delay slot” permitindo que a próxima instrução seguida do branch seja sempre executada Confiar no compilador para preencher o slot com algo útil Processador Superescalar: iniciar mais que uma instrução no mesmo ciclo

MIPS superescalar

MIPS superescalar Tipo de instrução Estágios do pipeline R ou desvio IF ID EX MEM WB Load/store

pode ser escalonado para o MIPS superescalar da seguinte forma: EXEMPLO O código: loop: lw $t0, 0 ($s1) # t0 = elemento de array add $t0, $t0,$s2 # soma o elemento do array a um valor escalar em $s2 sw $t0, 0($s1) # armazena o resultado addi $s1, $s1, -4 # decrementa o ponteiro bne $s1, $zero, loop # desvia para loop se $s1 diferente de 0 pode ser escalonado para o MIPS superescalar da seguinte forma: R ou desvio Load/store Ciclo de clock loop: lw $t0, 0($s1) 1 addi $s1, $s1,-4 2 add $t0 , $t0, $s2 3 bne $s1, $zero, loop sw $t0, 4($s1) 4 5 instruções em 4 ciclos

Desdobramento de laço (loop unrolling) R ou desvio Load/store Ciclo de clock Observações loop: addi $s1, $s1, -16 lw $t0, 0 ($s1) 1 $s1 inicial lw $t1, 12($s1) 2 $s1 = $s1 - 16 add $t0, $t0, $s2 lw $t2, 8($s1) 3 add $t1, $t1, $s2 lw $t3, 4($s1) 4 add $t2, $t2, $s2 sw $t0, 16($s1) 5 16($s1) = add $t3, $t3, $s2 sw $t1, 12($s1) 6 sw $t2, 8($s1) 7 bne $s1, $zero, loop sw $t3, 4($s1) 8 14 instruções em 8 ciclos

Escalação Dinâmica O hardware realiza a “escalação” O hardware tenta encontrar instruções para executar É possível execução fora de ordem Execução especulativa e previsão dinâmica de desvio (branch) DEC Alpha 21264: tem 9 estágios pipeline, 6 instruções simultâneas PowerPC e Pentium: tabela de história de desvio É importante a tecnologia do compilador

Escalação Dinâmica Despacho em ordem Unidades funcionais Execução fora de ordem Escrita final do resultado em ordem

A microarquitetura do Pentium 4