1 1998 Morgan Kaufmann Publishers AULA 06 - MIPS PIPELINE.

53
1 1998 Morgan Kaufmann Publishers AULA 06 - MIPS PIPELINE

Transcript of 1 1998 Morgan Kaufmann Publishers AULA 06 - MIPS PIPELINE.

Page 1: 1 1998 Morgan Kaufmann Publishers AULA 06 - MIPS PIPELINE.

11998 Morgan Kaufmann Publishers

AULA 06 - MIPS

PIPELINE

Page 2: 1 1998 Morgan Kaufmann Publishers AULA 06 - MIPS PIPELINE.

21998 Morgan Kaufmann Publishers

RegDst Branch

MemWrite

Mem

Rea

d Mem

toRe

g

Zer

o

ALUOp

AL

USr

cRegWrite

Contr

olALUControl

IMPLEMENTAÇÃO DO MIPS MONOCICLO

Page 3: 1 1998 Morgan Kaufmann Publishers AULA 06 - MIPS PIPELINE.

31998 Morgan Kaufmann Publishers

Page 4: 1 1998 Morgan Kaufmann Publishers AULA 06 - MIPS PIPELINE.

41998 Morgan Kaufmann Publishers

PC RI

MDR

A

BALUOut

Page 5: 1 1998 Morgan Kaufmann Publishers AULA 06 - MIPS PIPELINE.

51998 Morgan Kaufmann Publishers

PASSOS relativos ao MIPS Multiciclo

Aritmética reg-reg

Branch Step 3

Page 6: 1 1998 Morgan Kaufmann Publishers AULA 06 - MIPS PIPELINE.

61998 Morgan Kaufmann Publishers

Passo 1: Busca da instrução (Instruction Fetch)

Passo 2: Decod. da Instrução e Busca de Registradores

Passo 3 (dependente da instrução)

Referência à memória: ALUOut = A + sign-extend(IR[15-0]);Aritmética Reg-Reg: ALUOut = A op B;Aritmética Reg-Imm: ALUOut = A op Imm;Branch: se (A==B) PC = ALUOut;

Passo 4 (Aritmética ou acesso à memória)

Acesso à memória através de loads e stores MDR = Memory[ALUOut]; ou Memory[ALUOut] = B;Fim das instruções R-type: Reg[IR[15-11]] = ALUOut;

Passo 5 (Write-back, para instrução load)

Reg[IR[20-16]]= MDR;

PASSOS (CICLOS)

Page 7: 1 1998 Morgan Kaufmann Publishers AULA 06 - MIPS PIPELINE.

71998 Morgan Kaufmann Publishers

MULTICICLO x PIPELINE

• Pipeline: vários estágios funcionam juntos para instruções diferentes.

• Multiciclo: a instrução é executada em vários estágios (S) sequenciais.

Estágio ATIVO no ciclo 2

S1 S2 Sk

Latc

h Latc

h Latc

h

Latc

h Latc

h Latc

h

S1 S2 Sk

instrução i instrução i - 1 instrução i – (k -1)

Apenas uma instrução por vez.

k instruções por vez.

Page 8: 1 1998 Morgan Kaufmann Publishers AULA 06 - MIPS PIPELINE.

81998 Morgan Kaufmann Publishers

Pipeline: é natural!

• 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

Page 9: 1 1998 Morgan Kaufmann Publishers AULA 06 - MIPS PIPELINE.

91998 Morgan Kaufmann Publishers

Lavanderia Sequencial

• A lavanderia sequencial leva 6 horas para 4 volumes

• Se usarem o “pipeline”, quanto tempo levaria?

A

B

C

D

30 40 20 30 40 20 30 40 20 30 40 20

6 7 8 9 10 11 Meia noite

Task

Order

Tempo

Page 10: 1 1998 Morgan Kaufmann Publishers AULA 06 - MIPS PIPELINE.

101998 Morgan Kaufmann Publishers

Lavanderia em Pipeline

• Lavanderia em Pipeline leva 3.5 horas

A

B

C

D

6 7 8 9 10 11 Meia noite

ordem

Tempo

30 40 40 40 40 20

Page 11: 1 1998 Morgan Kaufmann Publishers AULA 06 - MIPS PIPELINE.

111998 Morgan Kaufmann Publishers

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

A

B

C

D

6 7 8 9

ordem

Tempo

30 40 40 40 40 20

Page 12: 1 1998 Morgan Kaufmann Publishers AULA 06 - MIPS PIPELINE.

121998 Morgan Kaufmann Publishers

Pipelines em Computadores

• Executa bilhões de instruções, tal que o importante seja o throughput

• Fatores desejados:

– todas as instruções tenham o mesmo comprimento,

– os campos de registradores sejam localizados numa mesma posição no formato de instrução,

– referências à memória somente através de instruções loads ou stores

• 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 = n.k/ (k + n - 1)

Para n grande, speedup ~ k

Page 13: 1 1998 Morgan Kaufmann Publishers AULA 06 - MIPS PIPELINE.

131998 Morgan Kaufmann Publishers

Pipeline no MIPS

multiciclo

pipeline

Page 14: 1 1998 Morgan Kaufmann Publishers AULA 06 - MIPS PIPELINE.

141998 Morgan Kaufmann Publishers

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.

Page 15: 1 1998 Morgan Kaufmann Publishers AULA 06 - MIPS PIPELINE.

151998 Morgan Kaufmann Publishers

Idéia Básica

MEM.INSTR.

REGS.

ALU

SOMADOR

MEM.DADOS

SOMADOR

Page 16: 1 1998 Morgan Kaufmann Publishers AULA 06 - MIPS PIPELINE.

161998 Morgan Kaufmann Publishers

Fluxo de dados com latch’s entre os estágios

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

PC

Mem.Instr.

Regist.

ALU

Mem.dados

somador

somador

Page 17: 1 1998 Morgan Kaufmann Publishers AULA 06 - MIPS PIPELINE.

171998 Morgan Kaufmann Publishers

Pipelines representados graficamente

IM Reg DM Reg

IM Reg DM Reg

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

Time (in clock cycles)

lw $10, 20($1)

Programexecutionorder(in instructions)

sub $11, $2, $3

ALU

ALU

Page 18: 1 1998 Morgan Kaufmann Publishers AULA 06 - MIPS PIPELINE.

181998 Morgan Kaufmann Publishers

PCSrc

Branc

h

MemRead

MemWrite

ALUOp

ALUSrc

RegWrite

RegDst

MemtoReg

Mem.Inst.

Regs.

Mem.dados

ALUPC

CONTROLE DO PIPELINE

Page 19: 1 1998 Morgan Kaufmann Publishers AULA 06 - MIPS PIPELINE.

191998 Morgan Kaufmann Publishers

• 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

Page 20: 1 1998 Morgan Kaufmann Publishers AULA 06 - MIPS PIPELINE.

201998 Morgan Kaufmann Publishers

Controle do Pipeline

Execution/Address Calculation stage control lines

Memory access stage control lines

Write-back stage control

lines

InstructionReg Dst

ALU Op1

ALU Op0

ALU Src Branch

Mem Read

Mem Write

Reg write

Mem to Reg

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

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

Os sinais são repassados pelos estágios como os dados

Page 21: 1 1998 Morgan Kaufmann Publishers AULA 06 - MIPS PIPELINE.

211998 Morgan Kaufmann Publishers

Branc

h

RegDst

MemWrite

Mem

Rea

d

Mem

toRe

g

RegW

rite

PCSrc

AL

UO

p

Fluxo de dados e controle

Page 22: 1 1998 Morgan Kaufmann Publishers AULA 06 - MIPS PIPELINE.

221998 Morgan Kaufmann Publishers

• Pode ocorrer iniciando uma instrução antes de terminar a anterior

• dependências que “vão retroceder no tempo” são conflitos de dados

Dependências de dados

IM Reg

IM Reg

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

Time (in clock cycles)

sub $2, $1, $3

Programexecutionorder(in instructions)

and $12, $2, $5

IM Reg DM Reg

IM DM Reg

IM DM Reg

CC 7 CC 8 CC 9

10 10 10 10 10/– 20 – 20 – 20 – 20 – 20

or $13, $6, $2

add $14, $2, $2

sw $15, 100($2)

Value of register $2:

DM Reg

Reg

Reg

Reg

DM

Page 23: 1 1998 Morgan Kaufmann Publishers AULA 06 - MIPS PIPELINE.

231998 Morgan Kaufmann Publishers

- Atuar no caminho do banco de registr. p/ substituir o valor de leit/escrita de registrador

- Antecipação da ALU

Solução por Antecipação – usar os resultados temporários, sem esperar que eles sejam escritos

what if this $2 was $13?

IM Reg

IM Reg

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

Time (in clock cycles)

sub $2, $1, $3

Programexecution order(in instructions)

and $12, $2, $5

IM Reg DM Reg

IM DM Reg

IM DM Reg

CC 7 CC 8 CC 9

10 10 10 10 10/– 20 – 20 – 20 – 20 – 20

or $13, $6, $2

add $14, $2, $2

sw $15, 100($2)

Value of register $2 :

DM Reg

Reg

Reg

Reg

X X X – 20 X X X X XValue of EX/MEM :X X X X – 20 X X X XValue of MEM/WB :

DM

Page 24: 1 1998 Morgan Kaufmann Publishers AULA 06 - MIPS PIPELINE.

241998 Morgan Kaufmann Publishers

Solução por Antecipação

Unidade de antecipação

Page 25: 1 1998 Morgan Kaufmann Publishers AULA 06 - MIPS PIPELINE.

251998 Morgan Kaufmann Publishers

sub $2,$1,$3and $12,$2,$5

Re

gW

rite

Antecipação do estágio EX/MEM

EX

/ME

MR

eg

iste

rRd

Rs

EX

/ME

MR

eg

Wri

te

Rt

Seleciona MUXdo lado A

da ALU paraantecipação

Seleciona MUXdo lado B

da ALU paraantecipação

$2

$2

$5

Page 26: 1 1998 Morgan Kaufmann Publishers AULA 06 - MIPS PIPELINE.

261998 Morgan Kaufmann Publishers

sub $2,$1,$3

Re

gW

rite

or $13,$6,$2

Antecipação do estágio MEM/WB

ME

M/W

BR

eg

iste

rRd

Rs

ME

M/W

BR

eg

Wri

te

Rt

Seleciona MUXdo lado A

da ALU paraantecipação

Seleciona MUXdo lado B

da ALU paraantecipação

$2

$2

$6

Page 27: 1 1998 Morgan Kaufmann Publishers AULA 06 - MIPS PIPELINE.

271998 Morgan Kaufmann Publishers

00

01

10

00

01

10

MU

X A

MU

X B

CIRCUITO DE ANTECIPAÇÃO (FORWARDING UNIT)

=

EX

/ME

MR

eg

iste

rRd

Rs

=

EX

/ME

MR

eg

Wri

te

Rt

MUX ASA1

MUX BSB0

=

ME

M/W

BR

eg

iste

rRd

Rs

=

ME

M/W

BR

eg

Wri

te

Rt

MUX ASA0

MUX BSB1

SELEÇÃO DOMUX A

SELEÇÃO DOMUX B

Page 28: 1 1998 Morgan Kaufmann Publishers AULA 06 - MIPS PIPELINE.

281998 Morgan Kaufmann Publishers

- 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

Nem sempre é possível solucionar por antecipação (Fazer o Load de uma palavra pode causar um conflito)

Reg

IM

Reg

Reg

IM

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

Time (in clock cycles)

lw $2, 20($1)

Programexecutionorder(in instructions)

and $4, $2, $5

IM Reg DM Reg

IM DM Reg

IM DM Reg

CC 7 CC 8 CC 9

or $8, $2, $6

add $9, $4, $2

slt $1, $6, $7

DM Reg

Reg

Reg

DM

Page 29: 1 1998 Morgan Kaufmann Publishers AULA 06 - MIPS PIPELINE.

291998 Morgan Kaufmann Publishers

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

Page 30: 1 1998 Morgan Kaufmann Publishers AULA 06 - MIPS PIPELINE.

301998 Morgan Kaufmann Publishers

IM Reg DM Reg

DM Reg

Reg DM Reg

IM Reg DM Reg

IM Reg DM Reg

IM Reg

IM

lw $2,20($1)

and $4,$2,$5

or $8, $2, $8

add $9, $4, $2

slt $1, $6, $7 IM Reg DM Reg

nop

Parada com inserção de nop a partir do estágio EX

Page 31: 1 1998 Morgan Kaufmann Publishers AULA 06 - MIPS PIPELINE.

311998 Morgan Kaufmann Publishers

Unidade de detecção de conflitos• A parada faz com que uma instrução que não faz nada (nop) prossiga

Page 32: 1 1998 Morgan Kaufmann Publishers AULA 06 - MIPS PIPELINE.

321998 Morgan Kaufmann Publishers

Exemplo de inserção de parada

sinais 0

Page 33: 1 1998 Morgan Kaufmann Publishers AULA 06 - MIPS PIPELINE.

331998 Morgan Kaufmann Publishers

• 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

Conflitos de Desvio (Branch)

Reg

Reg

CC 1

Time (in clock cycles)

40 beq $1, $3, 7

Programexecutionorder(in instructions)

IM Reg

IM DM

IM DM

IM DM

DM

DM Reg

Reg Reg

Reg

Reg

RegIM

44 and $12, $2, $5

48 or $13, $6, $2

52 add $14, $2, $2

72 lw $4, 50($7)

CC 2 CC 3 CC 4 CC 5 CC 6 CC 7 CC 8 CC 9

Reg

Page 34: 1 1998 Morgan Kaufmann Publishers AULA 06 - MIPS PIPELINE.

341998 Morgan Kaufmann Publishers

Controle para limpar as instruções posteriores

IFFlush

além de antecipar o cálculo da condição

Page 35: 1 1998 Morgan Kaufmann Publishers AULA 06 - MIPS PIPELINE.

351998 Morgan Kaufmann Publishers

beq $1,$3,7and $12,$2,$5

Exemplo de beq e atualização do PC

Resulta em NOP

endereço 72 lw $4, 50($7)

4044

Page 36: 1 1998 Morgan Kaufmann Publishers AULA 06 - MIPS PIPELINE.

361998 Morgan Kaufmann Publishers

RESULTADO DO CONTROLE DE DESVIO

Necessidade de limpar apenas uma instrução

Page 37: 1 1998 Morgan Kaufmann Publishers AULA 06 - MIPS PIPELINE.

371998 Morgan Kaufmann Publishers

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

Page 38: 1 1998 Morgan Kaufmann Publishers AULA 06 - MIPS PIPELINE.

381998 Morgan Kaufmann Publishers

MIPS superescalar

Page 39: 1 1998 Morgan Kaufmann Publishers AULA 06 - MIPS PIPELINE.

391998 Morgan Kaufmann Publishers

MIPS superescalar

Tipo de instrução

Estágios do pipeline

R ou desvio IF ID EX MEM WB

Load/store IF ID EX MEM WB

R ou desvio IF ID EX MEM WB

Load/store IF ID EX MEM WB

R ou desvio IF ID EX MEM WB

Load/store IF ID EX MEM WB

R ou desvio IF ID EX MEM WB

Load/store IF ID EX MEM WB

Page 40: 1 1998 Morgan Kaufmann Publishers AULA 06 - MIPS PIPELINE.

401998 Morgan Kaufmann Publishers

EXEMPLO

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

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

O código:

pode ser escalonado para o MIPS superescalar da seguinte forma:

5 instruções em 4 ciclos

Page 41: 1 1998 Morgan Kaufmann Publishers AULA 06 - MIPS PIPELINE.

411998 Morgan Kaufmann Publishers

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) =

$s1 inicial

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

Page 42: 1 1998 Morgan Kaufmann Publishers AULA 06 - MIPS PIPELINE.

421998 Morgan Kaufmann Publishers

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

Page 43: 1 1998 Morgan Kaufmann Publishers AULA 06 - MIPS PIPELINE.

431998 Morgan Kaufmann Publishers

Escalação Dinâmica

Despacho em ordem

Execuçãofora de ordem

Unidade de Comprometimento:escrita final do resultado em ordem

Unidadesfuncionais

Page 44: 1 1998 Morgan Kaufmann Publishers AULA 06 - MIPS PIPELINE.

441998 Morgan Kaufmann Publishers

A microarquitetura do Pentium 4

Page 45: 1 1998 Morgan Kaufmann Publishers AULA 06 - MIPS PIPELINE.

451998 Morgan Kaufmann Publishers

Multiprocessadores• criar computadores potentes conectando muitos computadores pequenos

Cache

Processor

Cache

Processor

Cache

Processor

Single bus

Memory I/ONetwork

Cache

Processor

Cache

Processor

Cache

Processor

Memory Memory Memory

Multiprocessador de memóriacompartilhada centralizada

Multiprocessador de memóriadistribuída

Page 46: 1 1998 Morgan Kaufmann Publishers AULA 06 - MIPS PIPELINE.

461998 Morgan Kaufmann Publishers

CPU de um único thread

• Thread é uma seqüência de instruções de um programa

RAM - Diferentes cores = quatro diferentes programas em execução na memória

7 Pipelines, sendo apenas o programa de cor vermelhaem execução

Nota-se os espaços em branco dos estágios pipeline ociosos

Front end – busca até 4 instruções

Page 47: 1 1998 Morgan Kaufmann Publishers AULA 06 - MIPS PIPELINE.

471998 Morgan Kaufmann Publishers

Single Threaded SMP (Symmetric Multiprocessor)

Os diferentes programas são executados em CPUs distintos para não deixar muitos programas em espera.

Programa vermelho numa CPU

amarelo em outra

Page 48: 1 1998 Morgan Kaufmann Publishers AULA 06 - MIPS PIPELINE.

481998 Morgan Kaufmann Publishers

Superthreading ou multithreading

• CPU com capacidade para executar mais de um thread simultaneamente,

porém, cada estágio do pipeline deve conter instruções de apenas um thread

• Não se pode emitir instruções de threads distintos num mesmo instante

Page 49: 1 1998 Morgan Kaufmann Publishers AULA 06 - MIPS PIPELINE.

491998 Morgan Kaufmann Publishers

Hyper-threading (HT)Simultaneous multithreading (SMT)

• Não existe restrição de

emissão de instruções

para threads diferentes

em cada clock.

• Compara-se ao single-threaded SMP

Single-threaded SMP

Page 50: 1 1998 Morgan Kaufmann Publishers AULA 06 - MIPS PIPELINE.

501998 Morgan Kaufmann Publishers

Superscalar SimultaneousMultithreading

Multithreading

Issue slots

Clo

ck c

ycle

s Empty

Thread 1

Thread 2

Thread 3

Thread 4

Formas de Execução dos Threads

Page 51: 1 1998 Morgan Kaufmann Publishers AULA 06 - MIPS PIPELINE.

511998 Morgan Kaufmann Publishers

Superescalar SMT

Chips de um único CORE

Page 52: 1 1998 Morgan Kaufmann Publishers AULA 06 - MIPS PIPELINE.

521998 Morgan Kaufmann Publishers

Processadores Multi-Core

• Um único chip com múltiplos cores (CPUs), cada um executando threads distintos como em single-threaded SMP

• Compatível em softare a uma arquitetura SMT porém tecnologicamente mais interessante,

pois usando tecnologia que consome menos energia pode ser usado, e o desempenho aumenta com o número de CORES.

Page 53: 1 1998 Morgan Kaufmann Publishers AULA 06 - MIPS PIPELINE.

531998 Morgan Kaufmann Publishers

REFERÊNCIAS SOBRE SMT E MULTICORE

• http://arstechnica.com/articles/paedia/cpu/hyperthreading.ars

• http://www.intel.com/cd/ids/developer/asmo-na/eng/211198.htm?page=1