MIPS Pipeline

Post on 19-Jun-2015

626 views 6 download

description

empty

Transcript of MIPS Pipeline

Arquitetura de Computadores “A”

Aula 7

Pipeline

1

Em relação a performance...• O que é vantajoso no processador Monociclo?

• CPI = 1

• O que é desvantajoso no processador Monociclo?• Frequência baixa (Regrada pela instrução mais lenta)

• O que se ganhou na implementação Multiciclo?• Aumento na Frequência (Regrada pelo passo mais lento)

• O que se perdeu na implementação Multiciclo?• CPI > 1

Como agregar as vantagens das duas implementações?

CPI baixo e Frequência alta

2

Shiftleft 2

PC

Memory

MemData

Writedata

Mux

0

1

RegistersWriteregister

Writedata

Readdata 1

Readdata 2

Readregister 1

Readregister 2

Mux

0

1

Mux

0

1

4

Instruction[15– 0]

Signextend

3216

Instruction[25– 21]

Instruction[20– 16]

Instruction[15– 0]

Instructionregister

1 Mux

0

3

2

Mux

ALUresult

ALUZero

Memorydata

register

Instruction[15– 11]

A

B

ALUOut

0

1

Address

No multiciclo..o que se pode melhorar?

• Hardware dividido para executar os 5 passos• Somente uma parte do hardware está sendo utilizada por

ciclo (sempre UMA instrução dentro do processador)• Solução?

3

Sumário• Princípios Básicos• MIPS Pipeline: Caminho de Dados• MIPS Pipeline: Controle• Outros exemplos• Exercícios

4

Sumário• Princípios Básicos• MIPS Pipeline: Caminho de Dados• MIPS Pipeline: Controle• Outros exemplos• Exercícios

5

• Analogia com o processo de lavagem de roupas• Dividido em 4 passos:

• Lavar• Secar• Dobrar• Guardar

• Assumindo que cada passo dure 30 minutos

• Cada processo dura 2 horas• Três processos duram 6 horas• Recursos ociosos na maior parte do tempo!

Multiciclo

• Eliminação da ociosidade dos recursos• Inicia-se um processo a cada passo• Um processo continua durando 2 horas• Três processos duram 3 horas e 30 minutos

Pipeline

Monociclo

Instructionfetch

Reg ALU Dataaccess

Reg

8 nsInstruction

fetchReg ALU Data

accessReg

8 nsInstruction

fetch

8 ns

Time

lw $1, 100($0)

lw $2, 200($0)

lw $3, 300($0)

2 4 6 8 10 12 14 16 18

...

Programexecutionorder(in instructions)

Assuma:• 2ns para acessos à memória e operação na ULA. • 1ns para acesso ao banco de registradores.

• Período do monociclo é 8 ns• CPI = 1• Tempo de execução de um load = 8ns• Tempo de execução de três loads = 24ns

Multiciclo

Instructionfetch

Reg ALU Dataaccess

Reg

Time

lw $1, 100($0)

lw $2, 200($0)

lw $3, 300($0)

2 4 6 8 10 12 14 16 18Programexecutionorder(in instructions)

Assuma:• 2ns para acessos à memória e operação na ULA. • 1ns para acesso ao banco de registradores.

• Período do multiciclo é 2 ns• CPI > 1• Tempo de execução de um load = 10ns• Tempo de execução de três loads = 30ns

2 nsInstruction

fetchReg ALU Data

accessReg

2 nsInstruction

fetch

2 ns.

Pipeline Assuma:

• 2ns para acessos à memória e operação na ULA. • 1ns para acesso ao banco de registradores.

• Período do pipeline é 2 ns• CPI ~= 1• Tempo de execução de um load = 10ns• Tempo de execução de três loads = 14ns

2 4 6 8 10 12 14

Instructionfetch

Reg ALUData

accessReg

Time

lw $1, 100($0)

lw $2, 200($0)

lw $3, 300($0)

2 nsInstruction

fetchReg ALU

Dataaccess

Reg

2 nsInstruction

fetchReg ALU

Dataaccess

Reg

2 ns 2 ns 2 ns 2 ns 2 ns

Programexecutionorder(in instructions)

Pipeline: preste atenção• Pipelining não reduz a latência de uma instrução, mas

aumenta o throughput (vazão) de todo workload • Executar bilhões de instruções, então throughput é o que

interessa; • Questões:

• O período do pipeline é limitado pelo estágio mais longo• Ganho em potencial = número de estágios• Períodos desbalanceados dos estágio reduzem o aumento de desempenho

em relação a frequência

• Há um tempo gasto para encher o pipeline e para esvaziá-lo• Múltiplas instruções estão no pipeline concomitantemente

• Uma em cada estágio do pipeline• Mas somente uma instrução pode terminar (write back) por ciclo

11

O MIPS facilita para o pipelining?• Todas instruções tem o mesmo comprimento

• Busca e decodificação são similares para todas instruções

• Poucos formatos de instruções• Simplifica a decodificação, que pode ser feita em um estágio

• Operandos de memória parecem apenas em loads/stores• Acessos à memória podem ser realizados em um estágio específico

12

Sumário• Princípios Básicos• MIPS Pipeline: Caminho de Dados• MIPS Pipeline: Controle• Outros exemplos• Exercícios

13

Caminho de dados• Vamos construir o bloco operativo• Primeiro, lembre-se dos cinco passos

• Busca de Instruções e incremento do PC (IF)• Decodificação da instrução e busca dos registradores (ID)• Execução e cálculo do Endereço (EX)• Acesso à Memória (MEM)• Gravação do resultado no banco de registradores (WB)

14

Caminho de dados• No monociclo

• Todos os passos feitos em apenas um ciclo• Hardware dedicado para cada passo

• No multiciclo• Passos são realizados em ciclos diferentes• Alguns componentes de hardware são compartilhados

• Memórias, somadores,etc.

• No pipeline• Devemos implementá-lo a partir do caminho de dados do

monociclo ou multiciclo?• Monociclo

• Temos instruções diferentes em cada passo que necessitam de HW dedicado

15

(IF)Instruction Fetch

(ID)Instruction Decode

(EX)Execute

(MEM)Memory

(WB)Write Back

5 516

RD1

RD2

RN1 RN2 WN

WDRegister File ALU

EXTND

16 32

RD

WD

DataMemory

ADDR

5

Instruction I32

MUX

<<2RD

InstructionMemory

ADDR

PC

4

ADD

ADD

MUX

32

Zero

Revisão dos “passos”

Pipeline• Como iremos isolar os resultados de cada instrução

em cada estágio do pipeline?• Precisamos de registradores extras para guardar os dados entre

os ciclos• Registradores do pipeline

17

5 516

RD1

RD2

RN1 RN2 WN

WDRegister File ALU

EXTND

16 32

RD

WD

DataMemory

ADDR

5

Instruction I32

MUX

<<2RD

InstructionMemory

ADDR

PC

4

ADD

ADD

MUX

32

Zero

IF/ID

Registradores do Pipeline

ID/EX EX/MEM MEM/WB

64 bits97 bits 64 bits

128 bits

Largos o suficiente para manter os dados

Bloco operativo com pipeline

Exemplo no Pipeline• Considere a seguinte sequência de instruções

lw $t0, 10($t1) sw $t3, 20($t4) add $t5, $t6, $t7 sub $t8, $t9, $t10

Diagrama de ciclo: Ciclo 1LW

5

RD1

RD2

RN1

RN2

WN

WD

RegisterFile

ALU

EXTND

16 32

RD

WD

DataMemory

ADDR

32

MUX

<<2

RD

InstructionMemory

ADDR

PC

4

ADD

ADD

MUX

5

5

5

IF/ID ID/EX EX/MEM MEM/WB

Zero

5

RD1

RD2

RN1

RN2

WN

WD

RegisterFile

ALU

EXTND

16 32

RD

WD

DataMemory

ADDR

32

MUX

<<2

RD

InstructionMemory

ADDR

PC

4

ADD

ADD

MUX

5

5

5

IF/ID ID/EX EX/MEM MEM/WB

Zero

LWSW

Diagrama de ciclo: Ciclo 2

5

RD1

RD2

RN1

RN2

WN

WD

RegisterFile

ALU

EXTND

16 32

RD

WD

DataMemory

ADDR

32

MUX

<<2

RD

InstructionMemory

ADDR

PC

4

ADD

ADD

MUX

5

5

5

IF/ID ID/EX EX/MEM MEM/WB

Zero

LWSWADD

Diagrama de ciclo: Ciclo 3

5

RD1

RD2

RN1

RN2

WN

WD

RegisterFile

ALU

EXTND

16 32

RD

WD

DataMemory

ADDR

32

MUX

<<2

RD

InstructionMemory

ADDR

PC

4

ADD

ADD

MUX

5

5

5

IF/ID ID/EX EX/MEM MEM/WB

Zero

LWSWADDSUB

Diagrama de ciclo: Ciclo 4

5

RD1

RD2

RN1

RN2

WN

WD

RegisterFile

ALU

EXTND

16 32

RD

WD

DataMemory

ADDR

32

MUX

<<2

RD

InstructionMemory

ADDR

PC

4

ADD

ADD

MUX

5

5

5

IF/ID ID/EX EX/MEM MEM/WB

Zero

LWSWADDSUB

Diagrama de ciclo: Ciclo 5

5

RD1

RD2

RN1

RN2

WN

WD

RegisterFile

ALU

EXTND

16 32

RD

WD

DataMemory

ADDR

32

MUX

<<2

RD

InstructionMemory

ADDR

PC

4

ADD

ADD

MUX

5

5

5

IF/ID ID/EX EX/MEM MEM/WB

Zero

SWADDSUB

Diagrama de ciclo: Ciclo 6

Diagrama de ciclo: Ciclo 7

5

RD1

RD2

RN1

RN2

WN

WD

RegisterFile

ALU

EXTND

16 32

RD

WD

DataMemory

ADDR

32

MUX

<<2

RD

InstructionMemory

ADDR

PC

4

ADD

ADD

MUX

5

5

5

IF/ID ID/EX EX/MEM MEM/WB

Zero

ADDSUB

Diagrama de ciclo: Ciclo 8

5

RD1

RD2

RN1

RN2

WN

WD

RegisterFile

ALU

EXTND

16 32

RD

WD

DataMemory

ADDR

32

MUX

<<2

RD

InstructionMemory

ADDR

PC

4

ADD

ADD

MUX

5

5

5

IF/ID ID/EX EX/MEM MEM/WB

Zero

SUB

Exemplo no Pipeline• Considere a seguinte sequência de instruções

lw $t0, 10($t1) sw $t3, 20($t4) add $t5, $t6, $t7 sub $t8, $t9, $t10

Algo novo na execução?

Diagrama de ciclo: Ciclo 1LW

5

RD1

RD2

RN1

RN2

WN

WD

RegisterFile

ALU

EXTND

16 32

RD

WD

DataMemory

ADDR

32

MUX

<<2

RD

InstructionMemory

ADDR

PC

4

ADD

ADD

MUX

5

5

5

IF/ID ID/EX EX/MEM MEM/WB

Zero

5

RD1

RD2

RN1

RN2

WN

WD

RegisterFile

ALU

EXTND

16 32

RD

WD

DataMemory

ADDR

32

MUX

<<2

RD

InstructionMemory

ADDR

PC

4

ADD

ADD

MUX

5

5

5

IF/ID ID/EX EX/MEM MEM/WB

Zero

LWSW

Diagrama de ciclo: Ciclo 2

5

RD1

RD2

RN1

RN2

WN

WD

RegisterFile

ALU

EXTND

16 32

RD

WD

DataMemory

ADDR

32

MUX

<<2

RD

InstructionMemory

ADDR

PC

4

ADD

ADD

MUX

5

5

5

IF/ID ID/EX EX/MEM MEM/WB

Zero

LWSWADD

Diagrama de ciclo: Ciclo 3

5

RD1

RD2

RN1

RN2

WN

WD

RegisterFile

ALU

EXTND

16 32

RD

WD

DataMemory

ADDR

32

MUX

<<2

RD

InstructionMemory

ADDR

PC

4

ADD

ADD

MUX

5

5

5

IF/ID ID/EX EX/MEM MEM/WB

Zero

LWSWADDSUB

Diagrama de ciclo: Ciclo 4

LWSWADDSUB

Diagrama de ciclo: Ciclo 5

5

RD1

RD2

RN1

RN2

WN

WD

RegisterFile

ALU

EXTND

16 32

RD

WD

DataMemory

ADDR

32

MUX

<<2

RD

InstructionMemory

ADDR

PC

4

ADD

ADD

MUX

5

5

IF/ID ID/EX EX/MEM MEM/WB

Zero

5 516

RD1

RD2

RN1 RN2 WN

WDRegister File ALU

EXTND

16 32

RD

WD

DataMemory

ADDR

5

Instruction I32

MUX

<<2RD

InstructionMemory

ADDR

PC

4

ADD

ADD

MUX

32

Zero

IF/ID ID/EX EX/MEM MEM/WB

64 bits97 bits 64 bits

128 bits

Bloco operativo com pipeline (2)

Endereço do registrador de escrita vem de OUTRA instrução, que está após no pipeline

O número do registrador de destino também é passado através dos registradores ID/EX, EX/MEM e MEM/WB, que agora tem de ter 5 bits a mais

5 516

RD1

RD2

RN1 RN2 WN

WDRegister File ALU

EXTND

16 32

RD

WD

DataMemory

ADDR

Instruction I32

MUX

<<2RD

InstructionMemory

ADDR

PC

4

ADD

ADD

MUX

32

Zero

IF/ID ID/EX EX/MEM MEM/WB

64 bits102 bits 69 bits

133 bits

Bloco operativo com pipeline (3)

5

5 516

RD1

RD2

RN1 RN2 WN

WDRegister File ALU

EXTND

16 32

RD

WD

DataMemory

ADDR

5

Instruction I32

MUX

<<2RD

InstructionMemory

ADDR

PC

4

ADD

ADD

MUX

32

Zero

IF/ID ID/EX EX/MEM MEM/WB

64 bits97 bits 64 bits

128 bits

Bloco operativo com pipeline (4)

Dados sendo movidos da direita para a esquerda podem causar hazard de dados

• Branches e escrita no último passo

Visão alternativa – Diagramas com vários Ciclos de relógio

IM REG ALU DM REGlw $t0, 10($t1)

sw $t3, 20($t4)

add $t5, $t6, $t7

CC 1 CC 2 CC 3 CC 4 CC 5 CC 6 CC 7

IM REG ALU DM REG

IM REG ALU DM REG

sub $t8, $t9, $t10 IM REG ALU DM REG

CC 8

Tempo

Pipeline Completo

Address

4

32

0

Add Addresult

Shiftleft 2

Ins

tru

ctio

n

Mux

0

1

Add

PC

0

Address

Writedata

Mux

1

Readdata 1

Readdata 2

Readregister 1

Readregister 2

16Sign

extend

Writeregister

Writedata

Readdata

1

ALUresult

Mux

ALU

Zero

Imem

Dmem

Regs

IF/ID ID/EX EX/MEM MEM/WB

64 bits 133 bits 102 bits 69 bits

5

Busca Decodificação Execução Memória Escr. Reg.

Notas• Uma diferença significativa na execução do tipo-R entre

multiciclo e pipeline• Escrita no banco de registradores é feito no 5º estágio do pipeline• No Multiciclo, é no 4º passo. Por quê?

• A grande diferença entre o pipeline e o multiciclo é o desacoplamento dos passos

• O CPI do pipeline ideal é de 1. Por quê?

39

Sumário• Princípios Básicos• MIPS Pipeline: Caminho de Dados• MIPS Pipeline: Controle• Outros exemplos• Exercícios

40

Controle do Pipeline• Design inicial motivado pelo monociclo

• Mesmos sinais de controle

• Observe que• Não há sinal separado para gravação no PC• Não há sinais separados para registradores que são escritos

em todo o ciclo• Não há sinal de leitura para a memória de instruções• Não há sinal de leitura para o banco de registradores

• É necessário configurar os bits para cada estágio do pipeline

• Necessidade de agrupar os sinais de controle para cada estágio

41

Bloco Operativo com Controle I

PC

Instructionmemory

Address

Inst

ruct

ion

Instruction[20– 16]

MemtoReg

ALUOp

Branch

RegDst

ALUSrc

4

16 32Instruction[15– 0]

0

0Registers

Writeregister

Writedata

Readdata 1

Readdata 2

Readregister 1

Readregister 2

Signextend

Mux

1Write

data

Read

data Mux

1

ALUcontrol

RegWrite

MemRead

Instruction[15– 11]

6

IF/ID ID/EX EX/MEM MEM/WB

MemWrite

Address

Datamemory

PCSrc

Zero

AddAdd

result

Shiftleft 2

ALUresult

ALU

Zero

Add

0

1

Mux

0

1

Mux

• 5 estágios• Busca de Instruções e incremento do PC

(IF)• Decodificação da instrução e busca dos

registradores (ID)• Execução e cálculo do Endereço (EX)• Acesso à Memória• Gravação do resultado no banco de

registradores (WB)

Sinais de controle I

Execution/Address Calculation stage control

linesMemory access stage

control lines

Write-back stage control

lines

InstructionReg Dst

ALU Op1

ALU Op0

ALU Src

Branch

Mem Read

Mem Write

R-format 1 1 0 0 0 0 0lw 0 0 0 1 0 1 0sw X 0 0 1 0 0 1beq X 0 1 0 1 0 0

Nada para controlar porque a leitura na memória de instruções e a escrita no

PC estão sempre habilitadas

• Controle é propagado junto com os dados – cada registrador de pipeline é estendido para guardar os bits de controle para dos estágio seguintes

• Os 6 bits do campo FUNCT (tipo R) são recuperados no EX pelo campo de imediato que propaga nos registradores de dados do pipeline

Controle através dos Estágios

Control

EX

M

WB

M

WB

WB

IF/ID ID/EX EX/MEM MEM/WB

Instruction

PC

Instructionmemory

Inst

ruct

ion

Add

Instruction[20– 16]

Mem

toR

eg

ALUOp

Branch

RegDst

ALUSrc

4

16 32Instruction[15– 0]

0

0

Mux

0

1

Add Addresult

RegistersWriteregister

Writedata

Readdata 1

Readdata 2

Readregister 1

Readregister 2

Signextend

Mux

1

ALUresult

Zero

Writedata

Readdata

Mux

1

ALUcontrol

Shiftleft 2

Re

gWrit

e

MemRead

Control

ALU

Instruction[15– 11]

6

EX

M

WB

M

WB

WBIF/ID

PCSrc

ID/EX

EX/MEM

MEM/WB

Mux

0

1

Mem

Writ

e

AddressData

memory

Address

Bloco Operativo com Controle II

Campo FUNCT

Execuçãocom controle• Sequência

de instruções:

lw $10, 20($1)sub $11, $2, $3and $12, $4, $7or $13, $6, $7add $14, $8, $9

“before<i>” significa a i-nésimaInstrução antes de lw

Ciclo 1 Ciclo 2

Execuçãocom controle• Sequência

de instruções:

lw $10, 20($1)sub $11, $2, $3and $12, $4, $7or $13, $6, $7add $14, $8, $9

“before<i>” significa a i-nésimaInstrução antes de lw

Ciclo 2

Execuçãocom controle• Sequência

de instruções:

lw $10, 20($1)sub $11, $2, $3and $12, $4, $7or $13, $6, $7add $14, $8, $9

“before<i>” significa a i-nésimaInstrução antes de lw

Ciclo 3

Execuçãocom controle• Sequência

de instruções:

lw $10, 20($1)sub $11, $2, $3and $12, $4, $7or $13, $6, $7add $14, $8, $9

“before<i>” significa a i-nésimaInstrução antes de lw

Ciclo 4

Execuçãocom controle• Sequência

de instruções:

lw $10, 20($1)sub $11, $2, $3and $12, $4, $7or $13, $6, $7add $14, $8, $9

Ciclo 5

Execuçãocom controle• Sequência

de instruções:

lw $10, 20($1)sub $11, $2, $3and $12, $4, $7or $13, $6, $7add $14, $8, $9

Ciclo 6“after <i>” significa a i-nésimaInstrução depois de add

Execuçãocom controle• Sequência

de instruções:

lw $10, 20($1)sub $11, $2, $3and $12, $4, $7or $13, $6, $7add $14, $8, $9

Ciclo 7“after <i>” significa a i-nésimaInstrução depois de add

Execuçãocom controle• Sequência

de instruções:

lw $10, 20($1)sub $11, $2, $3and $12, $4, $7or $13, $6, $7add $14, $8, $9

Ciclo 8“after <i>” significa a i-nésimaInstrução depois de add

WB

EX

M

Instructionmemory

Address

Mem

toR

eg

ALUOp

Branch

RegDst

ALUSrc

4

0

0

1

Add Addresult

1

ALUresult

Zero

ALUcontrol

Shiftleft 2

Reg

Writ

e

M

WB

Inst

ruct

ion

IF/ID EX/MEMID/EX

ID: after<3> EX: after<2> MEM: after<1> WB: add $14, . . .

MEM/WB

IF: after<4>

000

00

0000

000

00

000

0

00

00

0

1

0

Mux

0

1

Add

PC

0Writedata

Mux

1

Control

Registers

Readdata 1

Readdata 2

Readregister 1

Readregister 2

Instruction[20– 16]

Instruction[15– 0] Sign

extend

Instruction[15– 11]

MemRead

Mem

Wri

te

Mux

Mux

ALUReaddata

WB

14

14

Writeregister

Writedata

Datamemory

Address

Clock 9

Ciclo 9

Execuçãocom controle• Sequência

de instruções:

lw $10, 20($1)sub $11, $2, $3and $12, $4, $7or $13, $6, $7add $14, $8, $9

“after <i>” significa a i-nésimaInstrução depois de add

Sumário• Princípios Básicos• MIPS Pipeline: Caminho de Dados• MIPS Pipeline: Controle• Outros exemplos• Exercícios

55

56

Pipelines de Instruções• Evolução no número de estágios:

– 2 estágios

• fetch/decodificação, execução– 3 estágios

• fetch, decodificação/busca de operandos, execução– 4 estágios

• fetch, decodificação/busca de operandos, execução, store– 5 estágios

• fetch, decodificação/cálculo de endereço de operandos, busca de operandos, execução, store

– 6 estágios

• fetch, decodificação, cálculo de endereço de operandos, busca de operandos, execução, store

• Estágio só de decodificação é usual em processadores CISC. Por que?• Porque a tendência da evolução é quebrar o pipeline em mais estágios?

Exemplos Atuais – Pentium III e IV

57

Exemplos Atuais - ARM

58

Exemplos Atuais - Atom

59

Exemplos Atuais – Core i7

60

Mudança no Cenário

61

• 2000 – Pentium 4 – 20 estágios de pipeline • 1.3 – 2 GHz

• 2008 – Pentium D – Dual Core – 31 estágios de pipeline• 2.66 - 3.73 GHz

• 2012 – Corei 7 – 6 Cores – 14 estágios de pipeline• ~ 2GHz

Porque a frequência baixou?

62

Pipeline Aritmético• O pipeline pode ser empregado também em outros lugares.

• Ex.: pipeline aritmético

• O pipeline aritmético é empregado para acelerar as funções lógicas e aritméticas das ULAs.

• É a divisão das operações aritméticas em suboperações.• Todos microprocessadores modernos possuem pipeline aritmético.

• Pipeline de Somador de Ponto Flutuante com 5 estágios• Os cinco estágios:

• Comparação dos operandos A e B,• Ajuste da mantissa,• Soma dos operandos A e B• Verificação dos zeros da soma• Ajuste do expoente final

• Resulta no final um expoente e uma mantissa

63

Pipeline Aritmético

Sumário• Princípios Básicos• MIPS Pipeline: Caminho de Dados• MIPS Pipeline: Controle• Outros exemplos• Exercícios

64

• Dado um processador com 5 estágios de pipeline (F,DR,E,M,W), Tciclo = 2ns, pede-se:• quanto tempo será tomado para executar 1B de instruções,

supondo CPI = 1?• qual a aceleração em relação a:

• uma máquina monociclo com Período = 8ns;• uma máquina multiciclo com Período = 2ns, CPI = 4;

• Graças a melhora na tecnologia, passa-se o pipeline a 8 estágios (F1,F2,DR,E1,E2,M1,M2,W), com Tciclo = 1ns. • Quanto tempo será tomado para executar 1B de instruções,

supondo CPI = 1?• Qual a aceleração em relação a:

• uma máquina single-cycle com Tcycle = 8ns;• uma máquina multi-cycle com Tcycle = 1ns, CPI = 5;

Exercícios

Para Ler• Patterson, 2ª Edição e 3ª Edição

• 6.1 – 6.3

66

• Dicas• Tempo de execução = Nº instruções x CPI x Tciclo• Pipeline => Cuidado => Tencher + Tesvaziar

Exercícios