Pipelining - analogia



Documentos relacionados
Organização e Arquitetura de Computadores I

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

Capítulo 6 Hazards Morgan Kaufmann Publishers. Ch6c 1

Visão Geral de Pipelining

ARQUITECTURA DE COMPUTADORES

DataPath II Tomando o controle!

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

Paralelismo a Nível de Instrução

Caminho dos Dados e Atrasos

Exemplo: CC1 CC2 CC3 CC4 CC5 CC6 CC7 CC8 CC9 ADD $s0, $t0, $t1 IF ID EX MEM WB SUB $t2, $s0, $t3 IF Stall Stall ID EX MEM WB

Conflitos. Aula de Março de

Universidade Federal de Campina Grande Unidade Acadêmica de Sistemas e Computação Curso de Bacharelado em Ciência da Computação.

Arquitecturas Alternativas. Pipelining Super-escalar VLIW IA-64

Arquitetura de Computadores I

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

Organização e Arquitetura de Computadores I

Arquitetura e Organização de Computadores 2

AULA DE REVISÃO 3 ILP

Capítulo 6 Pipeline Morgan Kaufmann Publishers

Infraestrutura de Hardware. Revisão Pipeline, Superescalar e Multicores

Pipeline. Prof. Leonardo Barreto Campos 1

Predição de Desvios e Processadores Superescalares Especulativos

Arquitectura de Computadores II. Revisão e implementação do datapath do MIPS

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

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

Um Caminho de Dados Pipeline Para a ISA MIPS: Aprendendo na Prática

Pipeline. Todos os estágios devem estar prontos ao mesmo tempo para prosseguir.

O Processador: Via de Dados e Controle

Índice. Tudo! (datapath de um ciclo)

Organização e Arquitetura de Computadores I

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

O Processador: Via de Dados e Controle (Parte C: microprogramação)

Organização ou MicroArquitectura

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.

Implementação de pipelines

Relembrando desempenho...

RISC simples. Aula de Março de

UNIVERSIDADE FEDERAL FLUMINENSE INSTITUTO DE COMPUTAÇÃO DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO

Arquitetura de Computadores I

ARQUITETURA DE COMPUTADORES

Modos de entrada/saída

Previsão de Desvios Branch Prediction

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

Arquitetura de processadores: RISC e CISC

Lab 9 Implementação do MIPS em VHDL e teste na FPGA

Capítulo MC10 Organização Básica de Processadores

Infraestrutura de Hardware. Melhorando Desempenho de Pipeline Processadores Superpipeline, Superescalares, VLIW

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

Capítulo 4. O Processador

Arquitetura de Computadores. Linguagem de Máquina

Arquiteturas de Computadores

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

ArchC. Wesley Nunes Gonçalves

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

Tópicos Avançados em Sistemas Computacionais: Infraestrutura de Hardware Aula 10

Organização e Arquitetura de Computadores I

SSC510 Arquitetura de Computadores. 2ª aula

Aula 14: Instruções e Seus Tipos

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

SSC0902 Organização e Arquitetura de Computadores

Arquitetura de Computadores. Ivan Saraiva Silva

CAPÍTULO 4 CAMINHO DE DADOS E CONTROLE

Universidade Federal do Rio de Janeiro Pós-Graduação em Informática IM-NCE/UFRJ. Pipeline. Gabriel P. Silva. Microarquitetura de Alto Desempenho

Arquitectura de Computadores II

Conjunto de Instruções e Arquitectura p.1

Prof. Frank Sill Torres DELT Escola de Engenharia UFMG

1. Verificar se a Microsoft.NET Framework 2.0 está instalada. Se não estiver, efectuar o download a partir do link e instalar:

Microcontroladores e Interfaces

Introdução à Organização de Computadores. Sistemas da Computação Prof. Rossano Pablo Pinto, Msc. rossano at gmail com 2 semestre 2007

Sistemas Operacionais Aula 2

Paralelismo ao Nível da Instrução

ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM

Organização de Computadores

Conjunto de instruções do CPU. Arquitectura de um computador. Definição das instruções (1) Definição das instruções (2)

Execução concorrente de instruções

Arquiteturas que Exploram Paralismos: VLIW e Superscalar. Ch9 1

Sequenciamento dinâmico

Unidade 4* - Aulas 1/2: Pipelines, Hazards e Forwarding

Arquitectura de Computadores II. Exercícios sobre pipelining

Transcrição:

PIPELINE

Pipelining - analogia

Pipelining OBJECTIVO: Aumentar o desempenho pelo aumento do fluxo de instruções Program execution Time order (in instructions) lw $1, 100($0) Instruction fetch ALU Data access lw $2, 200($0) 800 ps lw $3, 300($0) Program execution Time order (in instructions) lw $1, 100($0) lw $2, 200($0) lw $3, 300($0) Instruction fetch 200 ps 200 400 600 800 1000 1200 1400 1600 1800 O aumento ideal do desempenho é igual ao numero de estados do pipeline. É possível? Instruction fetch ALU 800 ps Data access 200 400 600 800 1000 1200 1400 Instruction fetch 200 ps ALU Instruction fetch Data access ALU Data access ALU Data access 200 ps 200 ps 200 ps 200 ps 200 ps Instruction fetch 800 ps

Implementação de Pipelining É simplificado por: Todas as instruções tem o mesmo tamanho simplifica a descodificação Poucos formatos de instruções simplifica o datapath Acesso a memória apenas existem em LOADS e STORES É Limitado por Conflitos estruturais: Quando temos apenas uma memória Conflitos de dados: Dependência entre as instruções Conflitos de controlo: Tomada ou não de saltos relativos

Datapath de ciclo unico IF: Instruction fetch ID: Instruction decode/ register file read EX: Execute/ address calculation MEM: Memory access WB: Write back 4 Add Shift left 2 ADD Add result PC Address Instruction Instruction memory register 1 register 2 Write register Write data isters data 1 data 2 ALU Zero ALU result Address data Data Memory Write data 16 Sign 32 extend

Sobre a velocidade Quando se fala em velocidade estamos a falar de frequência, ou melhor tempo de propagação A velocidade é limitada pelo tempo máximo que um sinal demora a propagar-se de um elemento de estado para o próximo elemento de estado.

Pipelined Datapath IF/ID ID/EX EX/MEM MEM/WB Add 4 Shift left 2 Add Add result PC Address Instruction memory register 1 register 2 Write register Write data isters data 1 data 2 Zero ALU ALU result Address Data memory data Write data 16 Sign 32 extend

Instrução LOAD: estados IF & ID

Instrução LOAD: estado EXE

Instrução LOAD: estado MEM & WB

BUG em WB da instrução LOAD Qual a diferença da execução em pipeline do LOAD e do STORE Qual o problema que vê na execução da intrução LOAD em pipeline Será que é possível a escrita de resultados? Como resolver?

Datapath Corrigido IF/ID ID/EX EX/MEM MEM/WB Add 4 Shift left 2 Add Add result PC Address Instruction memory register 1 register 2 isters Write register Write data data 1 data 2 Zero ALU ALU result Address Data memory data Write data 16 Sign 32 extend

Representação gráfica de Pipelines Time (in clock cycles) Program execution order (in instructions) CC 1 CC 2 CC 3 CC 4 CC 5 CC 6 CC7 lw $1, 100($0) ALU lw $2, 200($0) ALU lw $3, 300($0) ALU Quantos ciclos demora a execução deste código? O que faz a ALU no ciclo 4?

Controlo do Pipeline PCSrc IF/ID ID/EX EX/MEM MEM/WB Add 4 Shift left 2 Add Add result Branch Write PC Address Instruction memory register 1 register 2 Write register Write data isters data 1 data 2 ALUSrc Zero Add ALU result MemWrite Address data Data memory Memto Instruction (15Ð0) 16 Sign 32 6 extend ALU control Write data Mem Instruction (20Ð16) ALUOp Instruction (15Ð11) Dst

Controlo do Pipeline Existem 5 estados. O que é necessário controlar em cada estado? Busca da Instrução e incremento do PC (comum a todas as instruções) Descodificação da instrução / leitura de registos (comum a todas as instruções) Execução/Cálculo de endereço (dependente da instruções) Estado de memória Escrita de resultados

Controlo do Pipeline Sinais de controlo de acordo com os dados da instrução Execution/Address Calculation stage control lines Write-back stage control lines Memory access stage control lines ALU ALU ALU Branc Mem Mem Instruction Dst Op1 Op0 Src h Write write R-format 1 1 0 0 0 0 0 1 0 lw 0 0 0 1 0 1 0 1 1 sw X 0 0 1 0 0 1 0 X beq X 0 1 0 1 0 0 0 X Mem to WB Instruction Control M WB EX M WB IF/ID ID/EX EX/MEM MEM/WB

Datapath com sinais de controlo PCSrc ID/EX WB EX/MEM Control M WB MEM/WB IF/ID EX M WB Add 4 Shift left 2 Add Add result ALUSrc Branch PC Address Instruction memory register 1 register 2 Write register Write data isters data 1 data 2 Zero ALU ALU result Address Data memory data Instruction [15 0] 16 Sign 32 6 extend ALU control Write data Mem Instruction [20 16] ALUOp Instruction [15 11] Dst

Dependências entre instruções sub $2, $1, $3 and $12, $2, $5 or $3, $6, $2 add $4, $2, $2 lw $4, 100($2) Existem vários tipos de dependências entre instruções Dados Anti-dependência Saída As dependências anti e de saída só existem em execução de instruções fora da ordem do programa

Dependências de dados sub $2, $1, $3 and $12, $2, $5 or $3, $6, $2 add $4, $2, $2 lw $4, 100($2) Quando a execução de uma instrução está dependente do resultado de uma Instrução prévia no pipeline

Anti-Dependência sub $2, $1, $3 and $12, $2, $5 or $3, $6, $2 add $4, $2, $2 lw $4, 100($2) Quando a escrita no registo do resultado da execução de uma instrução acontece antes da leitura desse registo numa instrução prévia no pipeline

Dependência de saída sub $2, $1, $3 and $12, $2, $5 or $3, $6, $2 add $4, $2, $2 lw $4, 100($2) Quando a execução de uma instrução está dependente do resultado de uma Instrução prévia no pipeline

Dependências As dependências podem dar origem aos conflitos Dependência de dados RAW Anti - Dependência WAR Dependência de saída WAW

Conflito de dados (RAW) (antes de sub, reg $2 tem o valor 10, depois tem o valor -20) Time (in clock cycles) Value of CC 1 CC 2 CC 3 CC 4 CC 5 CC 6 CC 7 CC 8 CC 9 register $2: 10 10 10 10 10/ 20 20 20 20 20 Program execution order (in instructions) sub $2, $1, $3 and $12, $2, $5 or $13, $6, $2 add $14, $2, $2 sw $15, 100($2)

Solução de software O compilador resolver esta situação pela inserção de NOPs Onde devem os NOPs serem inseridos? sub $2, $1, $3 and $12, $2, $5 or $13, $6, $2 add $14, $2, $2 sw $15, 100($2) As dependências de dados são um problema e tem de ser resolvido!

Solução de Hardware: Forwarding Forwarding aos registos de ficheiros para permitir leitura/escrita no mesmo ciclo ALU forwarding Time (in clock cycles) CC 1 CC 2 CC 3 CC 4 CC 5 CC 6 CC 7 CC 8 CC 9 Value of register $2: 10 10 10 10 10/ 20 20 20 20 20 Value of EX/MEM: X X X 20 X X X X X Value of MEM/WB: X X X X 20 X X X X Program execution order (in instructions) sub $2, $1, $3 and $12, $2, $5 or $13, $6, $2 add $14,$2, $2 sw $15, 100($2) what if this $2 was $13?

SEM FORWARDING COM FORWARDING

Forwarding Objectivo 1. Identificcar as condições de dependência, (i.e., Rd I_anterior =? Rs I_present or Rt I_presente ) 2. Se condição é verdadeira, seleccionar a entrada MUX para a ALU, outros casos selcciona a entrada MUX normal

Forward nem sempre resolve A Instrução LOAD também pode causar conflito? Quando uma instrução lê um registo a seguir a uma instrução LOAD que escreve nesse mesmo registo É preciso um detector de conflitos para inserir um bloqueio na instrução LOAD lw $2, 20($2) and $4, $2, $5 or $8, $2, $6 add $9, $4, $2

LOAD Time (in clock cycles) CC 1 CC 2 CC 3 CC 4 CC 5 CC 6 CC 7 CC 8 CC 9 Program execution order (in instructions) lw $2, 20($1) and $4, $2, $5 or $8, $2, $6 add $9, $4, $2 slt $1, $6, $7

Stalling Estados de bloqueio Podemos bloquear o pipeline(1 estado) mantendo o instrução no mesmo estado. Time (in clock cycles) CC 1 CC 2 CC 3 CC 4 CC 5 CC 6 CC 7 CC 8 CC 9 CC 10 Program execution order (in instructions) lw $2, 20($1) bubble and becomes nop add $4, $2, $5 or $8, $2, $6 add $9, $4, $2

Detecção de conflitos e Forwarding Hazard detection unit ID/EX.Mem ID/EX IF/ID Control WB EX/MEM M u M WB x 0 EX M MEM/WB WB PC Instruction memory isters M u x M u x ALU Data memory M u x IF/ID.isterRs IF/ID.isterRt IF/ID.isterRt IF/ID.isterRd ID/EX.isterRt Rt Rd Rs Rt M u x Forwarding unit

Conflitos de saltos Se a decisão do salto se tomar a seguir a EXE, quando se decide o salto já estão três instruções no pipeline! Time (in clock cycles) CC 1 CC 2 CC 3 CC 4 CC 5 CC 6 CC 7 CC 8 CC 9 Program execution order (in instructions) 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)

Conflitos de saltos Predição de salto não tomado Necessário adicionar hardware para flushing do pipeline das três instruções que já estão no pipeline (isto no caso de o salto ser efectuado) - a detecção de salto se está a fazer a seguir ao EXE em simultâneo no MEM. Neste caso uma predição errada resulta neste caso numa penalidade de 3 ciclos Se mudarmos a decisão de salto para o estado ID, em quanto fica a penalidade de salto errado?

SALTOS Se o salto não for efectuado temos uma penalidade de 1 ciclo É uma penalidade aceitável (?!) para um pipeline de 5 estados Com o aumento da profundidade dos pipelines, as penalidades aumentam e a predição estática diminui dramaticamente o desempenho do pipeline Solução é a utilização de predição dinâmica: que tem a ver com características locais e globais do programa

Delayed Branch Outra técnica que permite aumentar o desempenho nos saltos. Neste caso a instrução a seguir à instrução de salto é sempre executada independente da decisão. O Compilador é que toma a decisão sobre que instrução deve colocar a seguir à instrução de salto. Que hipóteses existem?

Predição de saltos Tenta adivinhar se o salto se toma ou não? Predição estática fixa por exemplo considera sempre que o salto não se toma Predição dinâmica Técnicas sofisticadas: Técnicas que envolvem características locais e características globais do programa É uma área de desenvolvimento e de investigação Processadores modernos têm uma taxa de predição correcta superior a 95%

Predição dinâmica de 2 bits Taken Predict taken Not taken Taken Predict taken Taken Not taken Predict not taken Not taken Taken Predict not taken Not taken

Técnicas sofisticadas: Técnicas que envolvem características locais e características globais do programa É uma área de desenvolvimento e de investigação Processadores modernos têm uma taxa de predição correcta de 95%

Melhorar desempenho Evitar os estados de bloqueio i. e. pelo reordenamento das instruções: Execução de instruções fora da ordem do programa Hardware escolhe que instruções pode executar Instruções são executadas fora de ordem em que os problemas de dependência estão resolvidos Especulação (pode ser necessário efectuar nova edição e execução se a predição estiver errada) Explorar o ILP instruction-level parallelism

Melhorar Desempenho - Pipelines Avançados Aumentar a profundidade do pipeline Iniciar mais do que uma instrução de uma só vez (emissão múltipla) Loop unrolling (melhor agendadmento das instruções) Superscalar processors DEC Alpha 21264: 9 estados de pipeline, `rmissão de 6 instruções Todos os processadores modernos são de edição múltipla de instruções e superescalares (várias unidades funcionais) VLIW: very long instruction word, multioperação por instrução