aula 06 - mips pipeline

53
1 1998 Morgan Kaufmann Publishers AULA 06 - MIPS PIPELINE

Upload: felcia

Post on 22-Jan-2016

68 views

Category:

Documents


0 download

DESCRIPTION

AULA 06 - MIPS PIPELINE. IMPLEMENTAÇÃO DO MIPS MONOCICLO. RegDst. Branch. Control. MemRead. MemtoReg. Zero. RegWrite. ALUSrc. MemWrite. ALUControl. ALUOp. A. PC. R I. B. ALUOut. M D R. PASSOS relativos ao MIPS Multiciclo. Aritmética reg-reg. Branch Step 3. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: AULA 06 - MIPS PIPELINE

11998 Morgan Kaufmann Publishers

AULA 06 - MIPS

PIPELINE

Page 2: 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: AULA 06 - MIPS PIPELINE

31998 Morgan Kaufmann Publishers

Page 4: AULA 06 - MIPS PIPELINE

41998 Morgan Kaufmann Publishers

PC RI

MDR

A

BALUOut

Page 5: AULA 06 - MIPS PIPELINE

51998 Morgan Kaufmann Publishers

PASSOS relativos ao MIPS Multiciclo

Aritmética reg-reg

Branch Step 3

Page 6: 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: 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: 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: 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: 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: 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: 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: AULA 06 - MIPS PIPELINE

131998 Morgan Kaufmann Publishers

Pipeline no MIPS

multiciclo

pipeline

Page 14: 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: AULA 06 - MIPS PIPELINE

151998 Morgan Kaufmann Publishers

Idéia Básica

MEM.INSTR.

REGS.

ALU

SOMADOR

MEM.DADOS

SOMADOR

Page 16: 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: 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: 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: 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: 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: 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: 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: 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: AULA 06 - MIPS PIPELINE

241998 Morgan Kaufmann Publishers

Solução por Antecipação

Unidade de antecipação

Page 25: 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: 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: 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: 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: AULA 06 - MIPS PIPELINE

291998 Morgan Kaufmann Publishers

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

Page 30: 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: 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: AULA 06 - MIPS PIPELINE

321998 Morgan Kaufmann Publishers

Exemplo de inserção de parada

sinais 0

Page 33: 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: 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: 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: AULA 06 - MIPS PIPELINE

361998 Morgan Kaufmann Publishers

RESULTADO DO CONTROLE DE DESVIO

Necessidade de limpar apenas uma instrução

Page 37: 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: AULA 06 - MIPS PIPELINE

381998 Morgan Kaufmann Publishers

MIPS superescalar

Page 39: 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: 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: 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: 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: 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: AULA 06 - MIPS PIPELINE

441998 Morgan Kaufmann Publishers

A microarquitetura do Pentium 4

Page 45: 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: 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: 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: 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: 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: 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: AULA 06 - MIPS PIPELINE

511998 Morgan Kaufmann Publishers

Superescalar SMT

Chips de um único CORE

Page 52: 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: 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