Universidade de Brasília. Pipelining. ção o e Arquitetura de Computadores. Organizaçã

Documentos relacionados
Capítulo 6 Hazards Morgan Kaufmann Publishers. Ch6c 1

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

O Porcessador: Via de Dados e Controle (Parte B: multiciclo) 1998 Morgan Kaufmann Publishers Ch5B 1

Capítulo 6 Pipeline Morgan Kaufmann Publishers

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

Infra-estrutura de Hardware

UNIOESTE Universidade Estadual do Oeste do Paraná Departamento de Engenharias e Ciências Exatas Campus de Foz do Iguaçu. Pipeline Conflitos

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

Pipelining - analogia

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

Arquiteturas de Computadores

SSC0611 Arquitetura de Computadores

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

O Processador: Via de Dados e Controle

DataPath II Tomando o controle!

Infra-estrutura de Hardware

Pipeline. Prof. Leonardo Barreto Campos 1

Organização ou MicroArquitectura

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

Arquiteturas de Computadores

Resumão de Infra-estrutura de Hardware

15/3/2010. Aula 2. Engenharia de Sistemas Embarcados. Introdução. Prof. Abel Guilhermino Tópico: Projeto de Sistemas Embarcados

Arquitetura de Computadores I

Explorando o paralelismo entre instruções

Relembrando desempenho...

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

Relembrando desempenho...

SSC0114 Arquitetura de Computadores

ção de Computadores II

Execução concorrente de instruções

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

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

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

SSC0611 Arquitetura de Computadores

3. Considere o seguinte código executado no processador pipeline da figura abaixo.

SSC0902 Organização e Arquitetura de Computadores

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

SSC0611 Arquitetura de Computadores

Infraestrutura de Hardware. Instruindo um Computador

Sistemas Digitais Palavra de Controle (Control Word)

Arquitetura e Organização de Computadores

Arquitetura de Computadores I. Prof. Ricardo Santos (Cap 2)

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

Organização de Unidades de Processamento

Microprocessadores. Execução em Paralelo Pipelines

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

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 é

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

SSC0510 Arquitetura de Computadores

Arquiteturas de Computadores

Arquiteturas de Computadores

Organização de Computadores

Introdução I. Organização e Arquitetura de Computadores. Sequência 15 Parte Operativa do MIPS - I. Introdução II.

Arquiteturas de Computadores

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

Organização e Arquitetura de Computadores I

O Funcionamento do Processador

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

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

AULA DE REVISÃO 3 ILP

Unidade Central de Processamento UCP (CPU)

Organização e Arquitetura de Computadores I

SSC0112 Organização de Computadores Digitais I

Organização de Computadores μarquitetura. Na Aula Anterior... Introdução. Nesta Aula. MIPS-Monociclo. Formas de Organização 17/10/2016

Visão Geral de Pipelining

CAPÍTULO 4 CAMINHO DE DADOS E CONTROLE

Caminho dos Dados e Atrasos

Capítulo 4. O Processador

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

Infra-estrutura de Hardware

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

Arquitetura e Organização de Processadores. Aula 3. Processador MIPS Bloco operacional

ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I

ção de Computadores II

Resumo das aulas anteriores

Controle em Processador Segmentado

Data Path / Control Path Controle do MIPS

Arquitetura de Computadores. Prof. Alexandro Baldassin. 1o semestre/2018

Microcontroladores e Interfaces

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

Sistemas de Computação. Instruções de Linguagem de Máquina

O Funcionamento do Processador

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

Predição de Desvios e Processadores Superescalares Especulativos

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.

shift register demux prefetch control inc ldpc + 1 MAR Pipelining

Desenho do Processador

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

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

PROCESSADORES SUPERESCALARES FELIPE G. TORRES

Arquitectura de Computadores (ACom)

Faculdade de Computação Arquitetura e Organização de Computadores 2 Prof. Cláudio C. Rodrigues

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

Previsão de Desvios Branch Prediction

Organização de computadores. Aula 05

Projeto de Processadores Programáveis

Organização de Computadores 1

Pipeline. Ciclos de Operação da CPU Estágios do Pipeline Previsão de Desvio. Estrutura da CPU. Em cada ciclo, a CPU deve:

CPU Implementação. Multiciclo. Prof. Carlos Bazilio

Transcrição:

Uiversidade de Brasília Pipeliig Orgaizaçã ção o e Arquitetura de Computadores

Objetivo Apresetar a utilização de uma técica para aumeto de desempeho de arquiteturas de processadores: Pipelie : O que facilita o pipelie: Todas istruções têm o mesmo comprimeto. Poucos formatos de istruções. Operados em memória só aparecem em loads e stores.

Objetivo Pipelie : O que complica (hazards): Propriedades estruturais: memória úica, p.ex.. Cotrole de flo: istruções de desvio. Depedêcias (de dados): uma istrução depede do resultado de outra aterior.

otagem de uma Bicicleta tempo 1 2 3 4 5 uma pessoa leva 5 uidades de tempo para motar uma bicicleta

Liha de otagem (pipelie) tempo/ espaço 1 2 3 4 5

Liha de otagem (pipelie) tempo/ espaço 1 2 3 4 5

Liha de otagem (pipelie) A latêcia do pipelie é o tempo que uma bicicleta leva para ser motada Neste exemplo, a latêcia é 5 uidades de tempo A taxa de produção (ou vazão) do pipelie é de uma bicicleta por uidade de tempo O pipelie só começa a produzir essa taxa uma vez que liha esteja cheia Primeira bicicleta produzida em 5 UT Após a primeira, o pipe produz uma bicicleta por UT

Balaceameto do Pipelie Supoha que a operação otagem da Roda Trazeira requeira duas uidades de tempo Uma uidade para motar a correia Uma uidade para motar a roda O que ocorre com a latêcia do pipelie? O que ocorre com a vazão? Como otimizar o pipelie este caso?

Balaceameto do Pipelie O pipelie ão fucioa se as tarefas ão requerem o mesmo tempo Se uma tarefa leva 2 UT, todas tem que trabalhar este período Latêcia do pipelie seria 10 UT Vazão seria uma bicicleta / 2 UT Dividido a tarefa em duas subtarefas de 1 UT cada, teríamos: Latêcia de 6 UT Vazão de 1 Bici / UT

Pipeliig em Hardware Pipeliig é uma técica de projeto ode o hardware processa mais de uma istrução de cada vez sem esperar que uma istrução termie ates de começar a próxima.

Pipeliig Numa máquia sem pipelie os quatro estágios básicos de uma istrução compreedem: busca decodificação execução atualização

Pipeliig Os mesmos estágios existem uma máquia com pipelie, porém são executados em paralelo: assim que um estágio termia, passa o resultado para o próximo e começa a trabalhar a próxima istrução.

Pipeliig Num projeto de pipelie RISC típico, cada istrução toma um ciclo de clock para cada estágio de modo que o processador pode aceitar uma ova istrução a cada ciclo de clock.

Pipeliig O pipelie ão alivia o tempo de latêcia das istruções. Cada istrução cotiua ecessitado da mesma quatidade de tempo para ser termiada. O pipelie melhora o throughput global.

Exemplo: arquitetura IPS Cotém somete: istruções de referêcia à memória: lw,sw istruções aritméticas/lógicas: add,sub,ad,or,slt istruções de cotrole de flo: beq,j Nome Campos Cometários Tamaho 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits Todas istruções têm 32 bits Formato R op rs rt rd shamt fuct Istruções aritméticas Formato I op rs rt address/immed iate Trasferêcia, desvios, imediato Formato J op target address Jump

IPS Uiciclo Dados istros istro # PC Edereço Istrução PC emória de istruções istro # istro # ALU Edereços emória de dados Dados

Busca de Istruções Add 4 PC Edereço Istrução PC emória de istruções

Istruções do Tipo-R 3 Operação da UAL 1 Istrução 2 data1 Zero Write ALU istros WriteData data2 result Write

Istruções load e store Istrução 1 2 Write istros WriteData Write data1 data2 Extesão Extesão de de sial 16 sial 32 3 Operação da UAL Zero ALU result Edereços Write Data emwrite emória de dados data em

Istruções de desvio PC + 4 Shift Shift left left 2 2 Add edereço de desvio Istrução 1 2 Write data1 3 Operação da UAL Zero brach cotrol logic ALU istros WriteData data2 Write Extesão Extesão de de sial 16 sial 32

Jutado as partes Add Add U U X X 4 Shift Shift left 2 left 2 PCSrc PC PC Edereço Istrução emória de istruções 1 2 Write istros WriteData Write data1 data2 U U X X ALUSrc 3 Operação da UAL Zero ALU Edereços Write Data emwrite emória de dados data emto U U X X Extesão Extesão de sial 16 de sial 32 em

Icluido cotrole 4 Add em emto Shift left Shift 2 left 2 Add U U X X [31-26] Cotrole Cotrole Brach emwrite ALUSrc PCSrc ALUOp Write PC PC Edereço Istrução emória de istruções [31-0] [25-21] [20-16] [15-11] [15-0] U U X X Dst [5-0] 1 2 Write WriteData data1 istros data2 Extesão de Extesão sial 16 de sial 32 Zero ALU U X U X ALU cotrol ALU cotrol Edereços Write Data emória de dados data U U X X

IPS: Projetado para Pipelie Todas istruções de mesmo comprimeto. Busca o primeiro estágio, execução o segudo. No 80x86 istruções de 1 a 17 bytes. Poucos formatos de istruções, com o campo do registro de origem a mesma posição em todas istruções. O segudo estágio pode ler o registro ao mesmo tempo que decodifica a istrução.

IPS: Projetado para Pipelie Operados a memória só aparecem as istruções load e store. O estágio de execução pode ser utilizado para calcular um edereço de memória, para ser acessado o próximo estágio. Operados alihados a memória. Facilita trasferêcia de dados que ocupam mais de um edereço.

Pipelie a arquitetura IPS As istruções do processador IPS ecessitam cico etapas: 1. Busca istrução a memória 2. Lê registros e decodifica istrução 3. Executa operação ou calcula edereço 4. Acessa operado a memória (de dados) 5. Escreve o resultado um registro Pode ser utilizado um pipelie de cico estágios

Tempo de execução das Istruções Classe de istrução Busca de Leitura Operação Acesso a Escrita Tempo istrução registro da ULA dado registro total Load word (lw) 2 s 1 s 2 s 2 s 1 s 8 s Store word (sw) 2 s 1 s 2 s 2 s 7 s R-format (add, sub, ad, or, slt) 2 s 1 s 2 s 1 s 6 s Brach (beq) 2 s 1 s 2 s 5 s Jump (j) 2 s 2 s 24% loads 12% stores 44% tipo R 18% braches 2% jumps Ciclo médio = 8x24% + 7x12% + 6x44% + 5x18% + 2x2% = 6.3 s Desempeho = 8/6.3 = 1.27

Execução sem pipelie Tempo 2 4 6 8 10 12 14 16 18 8 s lw $1, 100($0) Busca de istrução UAL Acesso a dados 8 s lw $2, 200($0) Busca de istrução UAL Acesso a dados 8 s lw $3, 300($0). Busca de istrução

Execução com pipelie elhora o desempeho com o aumeto do throughput de istruções. Tempo 2 4 6 8 10 12 14 lw $1, 100($0) Busca de istrução UAL Acesso a dados lw $2, 200($0) Busca de istrução UAL Acesso a dados lw $3, 300($0). Busca de istrução 2 s 2 s 2 s UAL Acesso a dados 2 s 2 s 2 s 2 s

Cotrole do pipelie Temos 5 estágios. O que deve ser cotrolado em cada estágio? IF: Istructio Fetch e PC Icremet ID: Istructio Decode / ister Fetch EX: Executio E: emory Stage WB: Write Back

Idéia básica. Flo de dados IF: Istructio Fetch ID: Istructio decode / register file read 0 EX: Execute / Address Calculatio E: emory Access WB: Write Back 1 Add 4 Shift left 2 Add Add result PC Address Istructio memory Istructio register 1 data 1 register 2 isters data 2 Write register Write data 0 1 Zero ALU ALU result Address Write data Data memory data 1 0 16 Sig exted 32

Flo de dados e registros pipelie 0 u x 1 IF/ID ID/EX EX/E E/WB Add 4 Shift left 2 Add result Add PC Address Istructio memory Istructio register 1 data 1 register 2 isters data 2 Write register Write data 0 1 Zero ALU ALU result Address Write data Data memory data 1 0 16 Sig exted 32

Busca de istrução 0 u x 1 IF/ID ID/EX EX/E E/WB Add 4 Add Add result Shift left 2 PC Address Istructio memory Istructio register 1 data 1 register 2 isters data 2 Write register Write data 0 u x 1 Zero ALU ALU result Address Write data Data memory data 1 u x 0 16 Sig exted 32

Decodificação/leitura de registros 0 1 IF/ID ID/EX EX/E E/WB Add 4 Shift left 2 Add result Add PC Address Istructio memory Istructio register 1 data 1 register 2 isters data 2 Write register Write data 0 1 Zero ALU ALU result Address Write data Data memory data 1 0 16 Sig exted 32

Execução/cálculo de edereço 0 1 IF/ID ID/EX EX/E E/WB Add 4 Shift left 2 Add result Add PC Address Istructio memory Istructio register 1 data 1 register 2 isters data 2 Write register Write data 0 1 Zero ALU ALU result Address Write data Data memory data 1 0 16 Sig exted 32

Acesso à memória 0 1 IF/ID ID/EX EX/E E/WB Add 4 Shift left 2 Add result Add PC Address Istructio memory Istructio register 1 data 1 register 2 isters data 2 Write register Write data 0 1 Zero ALU ALU result Address Write data Data memory data 1 0 16 Sig exted 32

Write back 0 1 IF/ID ID/EX EX/E E/WB Add 4 Shift left 2 Add result Add PC Address Istructio memory Istructio register 1 data 1 register 2 isters data 2 Write register Write data 0 1 Zero ALU ALU result Address Write data Data memory data 1 0 16 Sig exted 32

Cotrole do Pipelie PCSrc 0 u x 1 IF/ID ID/EX EX/E E/WB Add 4 Write Shift left 2 Add Add result Brach PC Address Istructio memory Istructio register 1 data 1 register 2 isters Write data 2 register Write data Istructio [15 0] 16 Sig 32 exted ALUSrc 0 6 1 ALU cotrol Zero ALU ALU result Address Write data emwrite Data memory em data emto 1 u x 0 Istructio [20 16] Istructio [15 11] 0 u x 1 ALUOp Dst

Cotrole do pipelie Os registradores do pipelie ão ecessitam siais de cotrole, pois são carregados a cada ciclo de clock Como deveria ser feito o cotrole uma fábrica de automóveis? uma cetral imagiária dizedo a cada um o que deve ser feito? deveríamos utilizar uma máquia de estados fiitos?

Cotrole do Pipelie Siais de cotrole são trasmitidos da mesma forma que os dados Executio/Address Calculatio stage cotrol lies emory access stage cotrol lies Write-back stage cotrol lies Istructio Dst ALU Op1 ALU Op0 ALU Src Brach em em Write write em to 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 WB Istructio Cotrol WB EX WB IF/ID ID/EX EX/E E/WB

Flo de dados com cotrole P C S rc 0 ID /E X u x 1 C o trol W B E X / E W B E /W B IF /ID E X W B A d d P C 4 A d d r e s s I s tru c tio m e m or y I structio R e ad re g is ter 1 R e ad re g is ter 2 R eg iste rs W rite re gister W rite d a ta R e gw rite R ea d d ata 1 R ea d d ata 2 S h ift le ft 2 0 u x 1 A dd A d d re su lt A L U A L U S r c Z e ro A L U resu lt Bra ch A dd re s s W rite d a ta e mw rit e D a ta m e m o r y R e a d d ata e m to R e g 1 u x 0 I structio [1 5 0 ] 16 3 2 S ig exte d 6 A LU co trol e m R e ad I structio [2 0 1 6] I stru ctio [1 5 1 1] 0 u x 1 R e g D s t A L U O p

Simplificado add $s0, $t0, $t1 I ULA D IF ID EX E WB

Execução com pipelie CC1 CC2 CC3 CC4 CC5 CC6 CC7 lw $1, 100($0) I ULA D lw $2, 200($0) I ULA D lw $3, 300($0) I ULA D

Desempeho. O que pode dar errado. Um processador com pipelie pode pausar por várias razões, icluido atrasos a leitura da memória, cojuto de istruções mal projetado, depedêcia etre istruções,...

Depedêcia de Dados (Hazards). sub $2, $1, $3 ad $12, $2, $5 or $13, $6, $2 add $14, $2, $2 sw $15, 100($2). Depedêcia de dados: Istruções que seguem sub utilizam o registrador $2, cujo valor é produzido pela istrução sub

Depedêcia de Dados CC1 CC2 CC3 CC4 CC5 CC6 CC7 CC8 CC9 Valor do registro $2 10 10 10 10 10/-20-20 -20-20 -20 sub $2, $1, $3 I UL A D ad $12, $2, $5 I UL A D or $13, $6, $2 I UL A D add $14, $2, $2 I UL A D sw $15, 100($2) I UL A D

Solução por Software O compilador pode detectar a ocorrêcia de hazard de dados e itroduzir NOPs (o operatio) ou reescaloar as istruções sub $2, $1, $3 op op op ad $12, $2, $5 or $13, $6, $2 add $14, $2, $2 sw $15, 100($2)

Escaloameto de Istruções. ld r2, I add r2, r2, #123 st r2, I ld r3, J sub r3, r3, #567 st r3, J.. ld r2, I ld r3, J add r2, r2, #123 sub r3, r3, #567 st r2, I st r3, J. Um rearrajo das istruções o programa, chamado escaloameto de istruções, pode resolver esta pedêcia.

Hardware: Cogelar o pipe (stall ou bolha) A uidade de cotrole do processador pode detectar a ocorrêcia de coflitos e cogelar execução de ovas istruções até que o coflito seja resolvido O cogelameto pode ser feito colocado-se em zero os siais de cotrole que acompaham os dados o pipelie Cotrol 0 u x WB EX

Itrodução de bolhas As bolhas iterrompem a execução dos estágios Tempo 2 4 6 8 10 14 sub $s0, $t1, $t2 I ULA D bolhas add $t2, $s0, $t3 I ULA D

Deteção de Coflitos Comparar ídices dos registradores a serem lidos e escritos, armazeados os registradores do pipelie: IF/ID.ister1 # registradores a serem IF/ID.ister2 # lidos ID/EX.Writeister EX/E.Writeister E/WB.Writeister Deve-se comparar igualmete se a istrução escreve em um registrador (Write = 1)

Uidade de Deteção de Hazard Hazard Detectio Uit WB Cotrol 0 UX EX WB WB PC Istructio emory isters Data emory U X U X

Deteção de Coflitos EX hazard: ID/EX.Write ad ((ID/EX.Dst = 0 ad ID/EX.WriteisterRt=IF/ID.ister1) or (ID/EX.Dst = 1 ad ID/EX.WriteisterRd=IF/ID.ister1) or (ID/EX.Dst = 0 ad ID/EX.WriteisterRt=IF/ID.ister2) or (ID/EX.Dst = 1 ad ID/EX.WriteisterRd=IF/ID.ister2)) E hazard: EX/E.Write ad ((EX/E.Writeister = IF/ID.ister1) or (EX/E.Writeister = IF/ID.ister2))

Itrodução de Bolhas As bolhas atrasam a execução das istruções seguites sub $2, $1, $3 I D ad $12, $2, $5 I D or $13, $6, $2 I D add $14, $2, $2 I D sw $15, 100($2) I D

Exemplo Cosidere a seguite sequêcia: sub $2, $1, $3 ad $4, $2, $5 or $8, $2, $6 add $9, $4, $2 slt $1, $6, $7 Quatos coflitos existem e quatas bolhas são geradas?

Terceiro Ciclo or $8, $2, $6 ad $4, $2, $5 sub $2, $1, $3 Hazard Detectio Uit 0 WB ID/EX.Write Cotrol 0 UX 0 0 EX WB WB PC Istructio emory isters Data emory U X 2 U X

Quito Ciclo Hazard Detectio Uit ad $4, $2, $5 bolha bolha sub $2, $1, $3 E/WB.Write 0 WB Cotrol 0 UX 0 0 EX WB WB PC Istructio emory isters Data emory U X U X 2

Stall Como toda a arquitetura permaece ociosa durate as pausas, tato os projetistas quato os programadores de sistemas RISC fazem um esforço cosciete para evitá-las

Data Hazard: Adiatameto de Dados (Forwardig) Tempo 2 4 6 8 10 add $s0, $t1, $t1 I ULA D sub $t2, $s0, $t3 I ULA D

Adiatameto de Dados. Tempo (em ciclos) Valor do registro $2: CC 1 10 CC 2 10 CC 3 10 CC 4 10 CC 5 10/ 20 CC 6 20 CC 7 20 CC 8 20 CC 9 20 Valor de EX/E: X X X 20 X X X X X Valor de E/WB: X X X X 20 X X X X sub $2, $1, $3 I D ad $12, $2, $5 I D or $13, $6, $2 I D add $14, $2, $2 I D sw $15, 100($2) I D

Forwardig: Cotrole ID/EX WB EX/E Cotrol WB E/WB IF/ID EX WB PC Istructio memory Istructio isters ALU Data memory IF/ID.isterRs IF/ID.isterRt IF/ID.isterRt IF/ID.isterRd Rs Rt Rt Rd EX/E.isterRd Forwardig uit E/WB.isterRd

Exemplo Cosidere a mesma sequêcia: sub $2, $1, $3 ad $4, $2, $5 or $8, $2, $6 add $9, $4, $2 slt $1, $6, $7 Como fica com adiatameto de dados?

Terceiro Ciclo or $8, $2, $6 ad $4, $2, $5 ID/EX sub $2, $1, $3 WB EX/E Cotrol WB E/WB IF/ID EX WB $1 PC Istructio memory Istructio isters $3 ALU Data memory IF/ID.isterRs IF/ID.isterRt IF/ID.isterRt IF/ID.isterRd 2 5 4 1 3 2 EX/E.isterRd Forwardig uit E/WB.isterRd

Quarto Ciclo add $9, $4, $2 or $8, $2, $6 ID/EX ad $4, $2, $5 sub $2, $1, $3 WB EX/E Cotrol WB E/WB IF/ID EX WB $2 PC Istructio memory Istructio isters $5 ALU $2 Data memory IF/ID.isterRs IF/ID.isterRt IF/ID.isterRt IF/ID.isterRd 2 6 8 2 5 4 2 EX/E.isterRd Forwardig uit E/WB.isterRd

Quito Ciclo slt $1, $6, $7 add $9, $4, $2 or $8, $2, $6 ad $4, $2, $5 sub $2, $1, $3 ID/EX WB EX/E Cotrol WB E/WB IF/ID EX WB $2 PC Istructio memory Istructio isters $6 ALU Data memory IF/ID.isterRs IF/ID.isterRt IF/ID.isterRt IF/ID.isterRd 4 2 9 2 6 8 4 EX/E.isterRd 2 Forwardig uit E/WB.isterRd

Sexto Ciclo slt $1, $6, $7 add $9, $4, $2 or $8, $2, $6 ad $4, $2, $5 ID/EX WB EX/E Cotrol WB E/WB IF/ID EX WB $4 PC Istructio memory Istructio isters $2 ALU Data memory IF/ID.isterRs IF/ID.isterRt IF/ID.isterRt IF/ID.isterRd 6 7 1 4 2 9 8 EX/E.isterRd 4 Forwardig uit E/WB.isterRd

Coflitos o Adiatameto Load word pode causar um atraso: Uma istrução teta ler um registro após um load que escreve o mesmo registro. É preciso uma uidade de detecção de hazard para atrasar a istrução pós load.

Coflitos o Adiatameto Tempo (ciclos) CC 1 CC 2 CC 3 CC 4 CC 5 CC 6 CC 7 CC 8 CC 9 CC 10 lw $2 20($1) I D ad $4, $2, $5 I D or $8, $2, $6 add $9, $4, $2 I I D bubble I D slt $1, $6, $7 I D

Hazard detectio uit Hazard detectio uit ID/EX.em ID/EX IF/IDWrite IF/ID Cotrol 0 WB EX EX/E WB E/WB WB PCWrite PC Istructio memory Istructio isters ALU Data memory IF/ID.isterRs IF/ID.isterRt IF/ID.isterRt IF/ID.isterRd Rt Rd EX/E.isterRd ID/EX.isterRt Rs Rt Forwardig uit E/WB.isterRd

Brach hazards Quado é decidido um desvio, outras istruções estão o pipelie. Tempo (em ciclos) CC 1 CC 2 CC 3 CC 4 CC 5 CC 6 CC 7 CC 8 CC 9 40 beq $1, $3, $7 I D 44 ad $12, $2, $5 I D 48 or $13, $6, $2 I D 52 add $14, $2, $2 I D 72 lw $4, 50($7) I D

Opção: Cogelar Pipe Uma opção é sempre cogelar o pipelie quado se ecotra uma istrução de salto codicioal, esperado o resultado da comparação add $4, $5, $6 Busca de istrução UAL Acesso a dados beq $1, $2, 40 Busca de istrução UAL Acesso a dados lw $3, 300($0). Busca de istrução 2 s 6 s 2 s Problema: piora o desempeho do pipelie UAL Acesso a dados 2 s 2 s 2 s 2 s

Previsão de Salto Uma melhor alterativa é fazer uma previsão de salto Caso a previsão esteja correta, ão há perda o pipelie Caso a previsão esteja icorreta, as istrução seguites ao salto devem ser descartadas (descarga do pipelie)

Técicas de Previsão de Desvio desvio uca será realizado desvio sempre será realizado desvio depedete do código da operação desvio depedete do histórico da istrução implemetado com o aílio de uma tabela de histórico de desvios armazea edereço da istrução, edereço do desvio e estado

Outras Técicas múltiplos flos ambas alterativas são executadas simultaeamete busca atecipada de istruções pré-carga das istruções o ed. de desvio memória de laço de repetição (loop buffer) armazea iteramete as istruções executadas mais recetemete atraso de desvio (delayed brach) permitir a execução de algumas istruções imediatamete após a istrução de desvio implica o reordeameto de istruções

Atraso de Desvio q Processador sempre executa istrução seguite q Compilador deve reordear as istruções ou iserir op Tempo 2 4 6 8 10 12 14 beq $1, $2, 40 Busca de istrução UAL Acesso a dados add $4, $5, $6 (Delayed brach slot ) lw $3, 300($0). Busca de istrução Busca de istrução 2 s 2 s 2 s UAL Acesso a dados UAL Acesso a dados 2 s 2 s 2 s 2 s

Descarga do Pipelie IF.Flush Hazard detectio uit ID/EX WB EX/E Cotrol 0 WB E/WB IF/ID EX WB 4 Shift left 2 PC Istructio memory isters = ALU Data memory Sig exted Forwardig uit

Acelerado máquias com pipelie q A velocidade máxima de uma máquia com pipelie é de uma istrução por ciclo de clock. CC1 CC2 CC3 CC4 CC5 CC6 CC7 CC8 CC9 CC10 CC11 CC12 IF ID EX E WB IF ID EX E WB IF ID EX E WB IF ID EX E WB IF ID EX E WB IF ID EX E WB IF ID EX E WB IF ID EX E WB

Acelerado máquias com pipelie q Duas técicas para iiciar múltiplas istruções por ciclo de clock: q arquiteturas superpipelie q arquiteturas superescalares.

Acelerado máquias com pipelie: o superpipelie q A arquitetura Superpipelie subdivide cada estágio do pipelie em subestágios e multiplica o clock iteramete. q Cada (sub)estágio cotiua executado uma istrução por clock. as como o clock itero é multiplicado, o pipelie pode aceitar duas ou mais istruções para cada clock extero.

Superpipelie CC1 CC2 CC3 CC4 CC5 CC6 CC7 CC8 IF ID EX E WB IF ID EX E WB IF ID EX E WB IF ID EX E WB IF ID EX E WB IF ID EX E WB IF ID EX E WB IF ID EX E WB

Acelerado máquias com pipelie: a superescalar q A arquitetura superescalar cotém múltiplas uidades de execução que são capazes de fazer a mesma coisa. q Isto permite ao processador executar várias istruções similares cocorretemete, pelo roteameto das istruções às uidades de execução dispoíveis.

Pipelie superescalar CC1 CC2 CC3 CC4 CC5 CC6 CC7 CC8 IF ID EX E WB IF ID EX E WB IF ID EX E WB IF ID EX E WB IF ID EX E WB IF ID EX E WB IF ID EX E WB IF ID EX E WB IF ID EX E WB

Superpipelie superescalar CC1 CC2 CC3 CC4 CC5 CC6 CC7 CC8 IF ID EX E WB IF ID EX E WB IF ID EX E WB IF ID EX E WB IF ID EX E WB IF ID EX E WB IF ID EX E WB IF ID EX E WB IF ID EX E WB

Execução diâmica: escaloameto. O hardware executa o escaloameto O hardware teta ecotrar istruções para executar É possível a execução de istruções for a de ordem Execução especulativa e predição diâmica de desvios. Todos processadores moderos são bastate complicados Compaq/DEC Alpha 21264: 9 estágios de pipelie, 6 istructio issue PowerPC e Petium: tabela de histórico de desvios O papel do compilador é muito importate. Este curso serve de base para avaçar o assuto. Overview of Itel s Petium Processors: http://www.itel.com

Referêcias Patterso, D. A., Heessy, J. L., (1998) Computer Orgaizatio ad Desig: The Hardware/Software Iterface. orga Kaufma. http:/www.mkp.com/cod2e.htm/

Leitura recomedada Taebaum, A.S., (1990) Orgaização estruturada de computadores. Cap 4. 4.5 {4.5.4}