Pipelines. João Canas Ferreira. Mar-Abr Contém figuras de: Computer Organization & Design, D. A Patterson e J. L. Hennessy, 2 a ed. (cap.

Documentos relacionados
SSC0611 Arquitetura de Computadores

SSC0510 Arquitetura de Computadores

Organização de Unidades de Processamento

SSC0611 Arquitetura de Computadores

Infraestrutura de Hardware. Implementação Pipeline de um Processador Simples

Pipelining. Luís Nogueira. Departamento Engenharia Informática Instituto Superior de Engenharia do Porto. Pipelining p.

Pipeline. Prof. Leonardo Barreto Campos 1

Introdução. Os mesmos princípios se aplicam a processadores. No MIPS as instruções são divididas normalmente em cinco etapas:

Arquitetura e Organização de Processadores. Aula 4. Pipelines

Capítulo 6 Hazards Morgan Kaufmann Publishers. Ch6c 1

Arquitetura de Computadores I

Execução concorrente de instruções

SSC0902 Organização e Arquitetura de Computadores

Organização de Computadores

MIPS Implementação. sw) or, slt. Vamos examinar uma implementação que inclui um subconjunto de instruções do MIPS

Resumão de Infra-estrutura de Hardware

Pipelining - analogia

shift register demux prefetch control inc ldpc + 1 MAR Pipelining

Sistemas de Microprocessadores DEP. DE ENG.ª ELECTROTÉCNICA E DE COMPUTADORES FACULDADE DE CIÊNCIAS E TECNOLOGIA UNIVERSIDADE DE COIMBRA.

Visão Geral de Pipelining

Encadeamento de instruções

Execução concorrente de instruções: Pipelines

Univ ersidade Feder al do Rio de Janei ro Informáti ca DCC/IM. Pipeline. Gabriel P. Silva. Gabriel P. Silva

Arquiteturas de Computadores

Instituto Superior Técnico Departamento de Engenharia Electrotécnica e de Computadores Arquitectura de Computadores. 2º sem.

ção de Computadores II

1. A pastilha do processador Intel possui uma memória cache única para dados e instruções. Esse processador tem capacidade de 8 Kbytes e é

Organização e Arquitetura de Computadores I

PARTE II - CONJUNTO DE INSTRUÇÕES ARQUITETURA DE COMPUTADORES ANTONIO RAMOS DE CARVALHO JÚNIOR

Infraestrutura de Hardware. Implementação Monociclo de um Processador Simples

Parte 7 Pipeline: Conceitos básicos, implementação e ganho de desempenho

Arquitetura e Organização de Processadores. Aulas 06 e 07. Superescalaridade

Universidade Federal do Rio de Janeiro Bacharelado de Ciência da Computação. Arquitetura de Computadores I. Pipeline

AULA DE REVISÃO 3 ILP

Exercícios resolvidos (aula de 4 de Maio) Resolução:

Aula 19: UCP: Construindo um Caminho de Dados (Parte III)

UCP: Construindo um Caminho de Dados (Parte III)

Capítulo 4. O Processador

Arquitetura de Computadores. Ivan Saraiva Silva

Trabalhos Práticos Arquitetura de Computadores I Prof. Fabian Vargas

Implementação de pipelines

Paralelismo ao Nível da Instrução

Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo, Pipeline

ARQUITECTURA DE COMPUTADORES

Arquitetura de Computadores I

Microcontroladores e Interfaces 3º Ano Eng. Electrónica Industrial

Conflitos. Aula de Março de

UCP: Construindo um Caminho de Dados (Parte I)

CAPÍTULO 4 CAMINHO DE DADOS E CONTROLE

ORGANIZAÇÃO DE COMPUTADORES

O Funcionamento do Processador

O Funcionamento do Processador

Microcontroladores e Interfaces

Melhorando o Desempenho com Pipelining

Arquiteturas de Computadores

ção de Computadores II

1. Considere a execução do seguinte troço de código num processador com ISA compatível

Organização de Sistemas de Computadores

Explorando o paralelismo entre instruções

Paralelismo ao Nível da Instrução

PIPELINE. Introdução ao Pipeline. PIPELINE Ciclo de Instruções. PIPELINE Ciclo de Instruções. PIPELINE - Exemplo. PIPELINE Considerações

SSC0114 Arquitetura de Computadores

Infraestrutura de Hardware. Implementação Multiciclo de um Processador Simples

1.0 val. (b) Determine o CPI do processador na execução do código indicado. Num.: Nome: Pág. 1. Arquitecturas Avançadas de Computadores (AAC)

Faculdade de Computação Arquitetura e Organização de Computadores 2 3 a Lista de Exercícios Prof. Cláudio C. Rodrigues Data de Entrega: 22/11/2018

µinstruções µoperações representadas em binário podem ser compactadas numa só µinstrução exemplo (as 3 últimas µinstruções anteriores):

Predição de Desvios e Processadores Superescalares Especulativos

Tiago Alves de Oliviera

Mestrado Integrado em Engenharia Informática e Computação. Arquitecturas Avançadas de Computadores Exame final

Aula 16: UCP: Conceitos Básicos e Componentes

Arquitetura e Organização de Computadores

Previsão de Desvios Branch Prediction

Arquiteturas de Computadores

4. Modelo de Programação do DLX Introdução

Processador: Conceitos Básicos e Componentes

Arquiteturas de Computadores

Esse programa inclui dependências de tipo: escrita-escrita, leitura-escrita e escrita-leitura. Identifique e mostre estas dependências.

Capítulo 6 Pipeline Morgan Kaufmann Publishers

Infra-estrutura de Hardware

SSC0611 Arquitetura de Computadores

Microprocessadores. Execução em Paralelo Pipelines

Questionário Arquitetura e Organização de Computadores

Memórias cache: uma introdução

lw, sw add, sub, and, or, slt beq, j

Arquitetura de Computadores I

Arquitetura e Organização de Processadores. Aula 08. Arquiteturas VLIW

Registradores na Arquitetura MIPS. 29/4/2016 MIPS - Instruction Set Architecture

Aula 15: Ciclo de Execução e Introdução ao Pipeline

Sistemas Processadores e Periféricos Aula 2 - Revisão

Introdução aos Computadores Introdução à Ciência de Computadores Outubro / 16

Controle em Processador Segmentado

de saltos Aula de Abril de

Infra-estrutura de Hardware

ORGANIZAÇÃO DE COMPUTADORES

Organização ou MicroArquitectura

processadores µprocessador µcontrolador DSP ASIP especialização crescente

Processadores Superescalares - Avançando na exploração de paralelismo entre instruções

Organização e Arquitetura de Computadores I

É um sinal elétrico periódico que é utilizado para cadenciar todas as operações realizadas pelo processador.

Transcrição:

Pipelines João Canas Ferreira Mar-Abr 2004 Contém figuras de: Computer Organization & Design, D. A Patterson e J. L. Hennessy, 2 a ed. (cap. 6) c JCF, 2004 ASPD (FEUP/LEEC) Pipelines 1/52

Conceitos básicos Preservar a concorrência Caminho de dados Exemplo de execução ciclo-a-ciclo Controlo da pipeline Conflitos de dados Forwarding Protelamento Efeitos de conflitos de controlo Mitigação de efeitos c JCF, 2004 ASPD (FEUP/LEEC) Pipelines 2/52

Conceitos básicos Preservar a concorrência Pipelining Trata-se de uma técnica de implementação em que múltiplas instruções estão em execução simultânea (concorrente). Não diminui o tempo de execução de uma instrução. Várias instruções estão simultaneamente em diferentes fases de processamento. O débito aumenta: uma instrução terminada por ciclo (idealmente). Cinco etapas clássicas : ler instrução de memória; descodificar instrução e ler registos; execução de operação ou cálculo de endereço; acesso a operando em memória; guardar resultado num registo. c JCF, 2004 ASPD (FEUP/LEEC) Pipelines 3/52

Conceitos básicos Preservar a concorrência Sem vs. com pipeline Tipo Leitura Registo ALU Acesso mem Escrita Reg. Total load 2 1 2 2 1. (lw) 8 store (sw) 2 1 2 2 7 R (add,...) 2 1 2 1. 6 salto (beq) 2 1 2. 5 tempos em ns Sem pipelining: 0 2 4 6 8 10 12 14 16 18 IF R ALU Mem R lw $1, 100($0) 8 ns IF R ALU Mem R 8 ns IF R lw $2, 200($0) lw $3, 300($0) Com pipelining: 0 2 4 6 8 10 12 14 16 18 IF R ALU Mem R 2 ns lw $1, 100($0) IF R ALU Mem R 2 ns IF R ALU Mem R lw $2, 200($0) lw $3, 300($0) c JCF, 2004 ASPD (FEUP/LEEC) Pipelines 4/52

Conceitos básicos Preservar a concorrência Conflitos Conflito estrutural: a infra-estrutura não suporta a combinação de (fases de) instruções que se pretende executar no mesmo ciclo. Exemplo: acesso a memória. Conflito de dados: uma (fase de) instrução depende dos resultados de outra. Exemplo: duas operações tipo R, em que a segunda usa os resultados da primeira. Solução: forwarding Conflito de controlo: execução de uma instrução depende de uma decisão ainda não tomada. Soluções: protelar, prever, delayed decision. c JCF, 2004 ASPD (FEUP/LEEC) Pipelines 5/52

Conceitos básicos Preservar a concorrência Protelamento causado por instruções de salto É necessário esperar para saber qual a próxima instrução a executar. c JCF, 2004 ASPD (FEUP/LEEC) Pipelines 6/52

Conceitos básicos Preservar a concorrência Delayed-branch A instrução que segue um salto condicional é sempre executada. c JCF, 2004 ASPD (FEUP/LEEC) Pipelines 7/52

Conceitos básicos Preservar a concorrência Representação de pipeline Cinzento indica os elementos usados na execução das instruções: Quando metade de um elemento está assinalada, significa que é usada na primeira (à esquerda) ou na segunda (à direita) metade do ciclo. c JCF, 2004 ASPD (FEUP/LEEC) Pipelines 8/52

Conceitos básicos Preservar a concorrência Forwarding Passagem directa de operandos entre andares da pipeline. c JCF, 2004 ASPD (FEUP/LEEC) Pipelines 9/52

Caminho de dados Exemplo de execução ciclo-a-ciclo Controlo da pipeline Caminho de dados básico c JCF, 2004 ASPD (FEUP/LEEC) Pipelines 10/52

Caminho de dados Exemplo de execução ciclo-a-ciclo Controlo da pipeline Funcionamento de caminho de dados básico com pipeline c JCF, 2004 ASPD (FEUP/LEEC) Pipelines 11/52

Caminho de dados Exemplo de execução ciclo-a-ciclo Controlo da pipeline Caminho de dados básico com pipeline c JCF, 2004 ASPD (FEUP/LEEC) Pipelines 12/52

Caminho de dados Exemplo de execução ciclo-a-ciclo Controlo da pipeline Ciclos 1 e 2: actividade c JCF, 2004 ASPD (FEUP/LEEC) Pipelines 13/52

Caminho de dados Exemplo de execução ciclo-a-ciclo Controlo da pipeline Ciclo 3: actividades c JCF, 2004 ASPD (FEUP/LEEC) Pipelines 14/52

Caminho de dados Exemplo de execução ciclo-a-ciclo Controlo da pipeline Ciclos 4 e 5: actividade c JCF, 2004 ASPD (FEUP/LEEC) Pipelines 15/52

Caminho de dados Exemplo de execução ciclo-a-ciclo Controlo da pipeline Tratamento correcto de load c JCF, 2004 ASPD (FEUP/LEEC) Pipelines 16/52

Caminho de dados Exemplo de execução ciclo-a-ciclo Controlo da pipeline Representação multi-ciclo c JCF, 2004 ASPD (FEUP/LEEC) Pipelines 17/52

Caminho de dados Exemplo de execução ciclo-a-ciclo Controlo da pipeline Ciclos 1 e 2 c JCF, 2004 ASPD (FEUP/LEEC) Pipelines 18/52

Caminho de dados Exemplo de execução ciclo-a-ciclo Controlo da pipeline Ciclos 3 e 4 c JCF, 2004 ASPD (FEUP/LEEC) Pipelines 19/52

Caminho de dados Exemplo de execução ciclo-a-ciclo Controlo da pipeline Ciclos 5 e 6 c JCF, 2004 ASPD (FEUP/LEEC) Pipelines 20/52

Caminho de dados Exemplo de execução ciclo-a-ciclo Controlo da pipeline Propagação de sinais de controlo c JCF, 2004 ASPD (FEUP/LEEC) Pipelines 21/52

Caminho de dados Exemplo de execução ciclo-a-ciclo Controlo da pipeline Caminho de dados com controlo c JCF, 2004 ASPD (FEUP/LEEC) Pipelines 22/52

Caminho de dados Exemplo de execução ciclo-a-ciclo Controlo da pipeline Caminho de dados com controlo: ciclos 1 e 2 c JCF, 2004 ASPD (FEUP/LEEC) Pipelines 23/52

Caminho de dados Exemplo de execução ciclo-a-ciclo Controlo da pipeline Caminho de dados com controlo: ciclos 3 e 4 c JCF, 2004 ASPD (FEUP/LEEC) Pipelines 24/52

Caminho de dados Exemplo de execução ciclo-a-ciclo Controlo da pipeline Caminho de dados com controlo: ciclos 5 e 6 c JCF, 2004 ASPD (FEUP/LEEC) Pipelines 25/52

Caminho de dados Exemplo de execução ciclo-a-ciclo Controlo da pipeline Caminho de dados com controlo: ciclos 7 e 8 c JCF, 2004 ASPD (FEUP/LEEC) Pipelines 26/52

Caminho de dados Exemplo de execução ciclo-a-ciclo Controlo da pipeline Caminho de dados com controlo: ciclo 9 c JCF, 2004 ASPD (FEUP/LEEC) Pipelines 27/52

Conflitos de dados Forwarding Protelamento Dependências de dados Dependência de dados: Uma instrução j depende de uma instrução i se se verificar alguma das seguintes condições: a instrução i produz um resultado que pode ser usado pela instrução j; a instrução j depende da instrução k, que por sua vez depende de i. Uma verdadeira dependência de dados implica fluxo de informação. Dependências de dados são propriedades de programas. Se a dependência provoca ou não um conflito (e o conflito um protelamento), depende das características da pipeline. c JCF, 2004 ASPD (FEUP/LEEC) Pipelines 28/52

Conflitos de dados Forwarding Protelamento Dependências de dados: exemplo sub $2, $1, $3 ; escrita em $2 and $12, $2, $5 ; 1 o operando depende de sub or $13, $6, $2 ;2 o operando depende de sub add $14, $2, $2 ; os 2 operandos dependem de sub sw $15, 100($2) ; base despende de sub Acessos simultâneos para leitura e escrita ao mesmo registo: o valor lido já é o novo valor do registo (válido para a pipeline usada nos exemplos). A escrita é efctuada na primeira metade do ciclo, a leitura na segunda. c JCF, 2004 ASPD (FEUP/LEEC) Pipelines 29/52

Conflitos de dados Forwarding Protelamento Dependências de dados: exemplo (cont.) c JCF, 2004 ASPD (FEUP/LEEC) Pipelines 30/52

Conflitos de dados Forwarding Protelamento Dependências de dados: proibição O problema dos conflitos causados por dependência de dados pode ser evitado proibindo o compilador de gerar sequências de instruções que causem conflitos. sub $2, $1, $3 nop nop and $12, $2, $5 or $13, $6, $2 add $14, $2, $2 sw $15, 100($2) Voilà... Não assegura a compatibilidade binária. (Porquê?) c JCF, 2004 ASPD (FEUP/LEEC) Pipelines 31/52

Conflitos de dados Forwarding Protelamento Análise dos conflitos Para a pipeline de 5 andares que temos vindo a estudar, existem as seguintes situações de conflito: 1a. EX/MEM.RegRD = ID/EX.RegRS 1b. EX/MEM.RegRD = ID/EX.RegRT 2a. MEM/WB.RegRD = ID/EX.RegRS 2b. MEM/WB.RegRD = ID/EX.RegRT Para o fragmento de código das transparências anteriores: sub-and: tipo 1a: EX/MEM.RegRD=ID/EX.RegRS=$2; sub-or: tipo 2b: MEM/WB.RegRD=ID/EX.RegRT=$2; sub-add: não existem conflitos; sub-sw:não existem conflitos. c JCF, 2004 ASPD (FEUP/LEEC) Pipelines 32/52

Conflitos de dados Forwarding Protelamento Atalhos Caso as dependências sejam apenas para o futuro : implementar atalhos entre origem e destino (forwarding). c JCF, 2004 ASPD (FEUP/LEEC) Pipelines 33/52

Conflitos de dados Forwarding Protelamento Controlo dos multiplexadores de forwarding A implementação dos atalhos para instruções do tipo R pode ser feita com dois multiplexadores 3:1 (de 32 bits). ForwardA ForwardB 00 ID/EX 00 ID/EX 01 EX/MEM 01 MEM/WB 10 MEM/WB 10 EX/MEM EX/MEM.RegWrite & EX/MEM.RegRD!=0 & EX/MEM.RegRD=ID/EX.RegRS => ForwardA=10 EX/MEM.RegWrite & EX/MEM.RegRD!=0 & EX/MEM.RegRD=ID/EX.RegRT => ForwardB=10 MEM/WB.RegWrite & MEM.RegRD!=0 & EX/MEM.RegRD!= ID/EX.RegRS & MEM/WB.RegRD=ID/EX.RegRS => ForwardA=01 MEM/WB.RegWrite & MEM.RegRD!=0 & EX/MEM.RegRD!= ID/EX.RegRS & MEM/WB.RegRD=ID/EX.RegRT => ForwardB=10 c JCF, 2004 ASPD (FEUP/LEEC) Pipelines 34/52

Conflitos de dados Forwarding Protelamento Caminho de dados com atalhos Versão simplificada do caminho de dados com atalhos para operações do tipo R: c JCF, 2004 ASPD (FEUP/LEEC) Pipelines 35/52

Conflitos de dados Forwarding Protelamento Atalhos não resolvem todos os problemas Problema: Usar um registo após load. c JCF, 2004 ASPD (FEUP/LEEC) Pipelines 36/52

Conflitos de dados Forwarding Protelamento Detecção de confitos Solução: Protelar o processamento da instrução dependente. necessidade de uma unidade de detecção de conflitos; a detecção pode ser feita no andar ID (neste caso); quando uma instrução é protelada neste andar, a instrução em IF também deve ser protelada: o PC e IF/ID não devem mudar. Condição de protelamento: ID/EX.MemRead & (ID.EXRegRT = IF/ID.RegRS ID.EX.RegRT=IF/ID.RegRT) c JCF, 2004 ASPD (FEUP/LEEC) Pipelines 37/52

Conflitos de dados Forwarding Protelamento Inserir bolhas Funcionamento real: c JCF, 2004 ASPD (FEUP/LEEC) Pipelines 38/52

Conflitos de dados Forwarding Protelamento Tratamento de conflitos: implementação Versão simplificada da pipeline: c JCF, 2004 ASPD (FEUP/LEEC) Pipelines 39/52

Conflitos de dados Forwarding Protelamento Protelamento: ciclos 2 e 3 c JCF, 2004 ASPD (FEUP/LEEC) Pipelines 40/52

Conflitos de dados Forwarding Protelamento Protelamento: ciclos 4 e 5 c JCF, 2004 ASPD (FEUP/LEEC) Pipelines 41/52

Conflitos de dados Forwarding Protelamento Protelamento: ciclos 6 e 7 c JCF, 2004 ASPD (FEUP/LEEC) Pipelines 42/52

Efeitos de conflitos de controlo Mitigação de efeitos Impacto de um conflito de controlo c JCF, 2004 ASPD (FEUP/LEEC) Pipelines 43/52

Efeitos de conflitos de controlo Mitigação de efeitos Saltos não tomados Assumir que o salto não é tomada e continuar com as instruções seguintes (textualmente). Se o salto é tomado, as instruções subsequentes já em tratamento devem ser anuladas. Anular uma instrução = valores de controlo a 0 (para a implementação usada). O destino do salto é determinadao no andar MEM: as intruções nos andares IF, ID e EX devem ser anuladas. c JCF, 2004 ASPD (FEUP/LEEC) Pipelines 44/52

Efeitos de conflitos de controlo Mitigação de efeitos Redução do tempo tratamento de saltos Reduzir o tempo de tratamento de saltos tem impacto directo sobre o desempenho da pipeline. Passar a determinação do próximo valor de PC para EX. Melhor: passar para o andar ID! Fácil: cálculo do endereço de salto (mudar somador de MEM para ID). Difícil: determinar se salto deve ser efectuado: unidade de comparação em ID (fazer OU bit-a-bit seguido de AND de todos os bits do resultado). Anular IF: basta pôr zeros no IR (nop=sll $0,$0,$0) c JCF, 2004 ASPD (FEUP/LEEC) Pipelines 45/52

Efeitos de conflitos de controlo Mitigação de efeitos Tratamento de saltos: implementação c JCF, 2004 ASPD (FEUP/LEEC) Pipelines 46/52

Efeitos de conflitos de controlo Mitigação de efeitos Tratamento de saltos: execução c JCF, 2004 ASPD (FEUP/LEEC) Pipelines 47/52

Efeitos de conflitos de controlo Mitigação de efeitos Previsão dinâmica de saltos Abordagem possível: Dado o endereço de uma instrução de salto (i.e. a sua posição em memória), verificar se o salto foi tomado na última execução; se foi, executar instruções a partir da posição de destino usada anteriormente. Implementação: tabela indexada pelos bits menos significativos contendo 1 bit a indicar se o salto foi tomado ou não. Se foi tomado, a execução pode continuar mal tenha sido calculado o endereço de destino. A tabela é acedida durante IF. Debilidade: o que acontece a um salto condicional no fim de um ciclo? c JCF, 2004 ASPD (FEUP/LEEC) Pipelines 48/52

Efeitos de conflitos de controlo Mitigação de efeitos Previsão dinâmica de saltos: esquema de 2 bits Para remediar a debilidade anterior, usam-se esquemas com 2 bits. c JCF, 2004 ASPD (FEUP/LEEC) Pipelines 49/52

Efeitos de conflitos de controlo Mitigação de efeitos Previsão dinâmica de saltos: benchmarks Resultados empíricos para tabela de 4096 posições (esquema de 2 bits) comparados com tabela infinita. c JCF, 2004 ASPD (FEUP/LEEC) Pipelines 50/52

Efeitos de conflitos de controlo Mitigação de efeitos Delay slots O conflito de controlo passa de hazard feature. A instrução textualmente a seguir a uma instrução de salto condicional é sempre executada. Para o nossa implementação (com uma penalidade de um ciclo), a situação fica resolvida. O trabalho de previsão é passado para o compilador. Tem vindo a perder popularidade: um delay slot não ajuda muito o desempenho das arquitecturas com muitos andares de pipeline. c JCF, 2004 ASPD (FEUP/LEEC) Pipelines 51/52

Efeitos de conflitos de controlo Mitigação de efeitos Delay slots: exemplo c JCF, 2004 ASPD (FEUP/LEEC) Pipelines 52/52