AULA 06 - MIPS PIPELINE

Preview:

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

Citation preview

11998 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

31998 Morgan Kaufmann Publishers

41998 Morgan Kaufmann Publishers

PC RI

MDR

A

BALUOut

51998 Morgan Kaufmann Publishers

PASSOS relativos ao MIPS Multiciclo

Aritmética reg-reg

Branch Step 3

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)

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.

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

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

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

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

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

131998 Morgan Kaufmann Publishers

Pipeline no MIPS

multiciclo

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.

151998 Morgan Kaufmann Publishers

Idéia Básica

MEM.INSTR.

REGS.

ALU

SOMADOR

MEM.DADOS

SOMADOR

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

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

181998 Morgan Kaufmann Publishers

PCSrc

Branc

h

MemRead

MemWrite

ALUOp

ALUSrc

RegWrite

RegDst

MemtoReg

Mem.Inst.

Regs.

Mem.dados

ALUPC

CONTROLE DO 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

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

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

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

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

241998 Morgan Kaufmann Publishers

Solução por Antecipação

Unidade de antecipação

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

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

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

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

291998 Morgan Kaufmann Publishers

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

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

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

321998 Morgan Kaufmann Publishers

Exemplo de inserção de parada

sinais 0

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

341998 Morgan Kaufmann Publishers

Controle para limpar as instruções posteriores

IFFlush

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

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

361998 Morgan Kaufmann Publishers

RESULTADO DO CONTROLE DE DESVIO

Necessidade de limpar apenas uma instrução

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

381998 Morgan Kaufmann Publishers

MIPS superescalar

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

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

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

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

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

441998 Morgan Kaufmann Publishers

A microarquitetura do Pentium 4

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

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

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

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

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

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

511998 Morgan Kaufmann Publishers

Superescalar SMT

Chips de um único CORE

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.

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

Recommended