AULA 06 - MIPS
PIPELINE
1998 Morgan Kaufmann Publishers
1
IMPLEMENTAÇÃO DO MIPS MONOCICLO
RegDst
MemtoReg
Zero
ALUSrc
RegWrite
MemRead
Control
Branch
MemWrite
ALUControl
ALUOp
1998 Morgan Kaufmann Publishers
2
1998 Morgan Kaufmann Publishers
3
PC
R
I
A
B
ALUOut
M
D
R
1998 Morgan Kaufmann Publishers
4
PASSOS relativos ao MIPS Multiciclo
Aritmética
reg-reg
Branch
Step 3
1998 Morgan Kaufmann Publishers
5
PASSOS (CICLOS)
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;
1998 Morgan Kaufmann Publishers
6
MULTICICLO x PIPELINE
• Multiciclo: a instrução é executada em vários estágios (S) sequenciais.
S2
Latch
Latch
Latch
S1
Sk
Estágio ATIVO no ciclo 2
Apenas uma instrução por vez.
• Pipeline: vários estágios funcionam juntos para instruções diferentes.
instrução i
S2
instrução i - 1
Latch
Latch
Latch
S1
Sk
instrução i – (k -1)
k instruções por vez.
1998 Morgan Kaufmann Publishers
7
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
1998 Morgan Kaufmann Publishers
8
Lavanderia Sequencial
6
7
8
9
10
11 Meia noite
Tempo
30 40 20 30 40 20 30 40 20 30 40 20
T
a
s
k
A
B
O
r
d
e
r
C
D
• A lavanderia sequencial leva 6 horas para 4 volumes
• Se usarem o “pipeline”, quanto tempo levaria?
1998 Morgan Kaufmann Publishers
9
Lavanderia em Pipeline
6
7
8
9
10
11 Meia noite
Tempo
30 40
o
r
d
e
m
40
40
40 20
A
B
C
D
• Lavanderia em Pipeline leva 3.5 horas
1998 Morgan Kaufmann Publishers
10
Lições sobre o Pipeline
6
7
8
30 40
A
B
C
D
40
40
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
9
Tempo
o
r
d
e
m
•
40 20
1998 Morgan Kaufmann Publishers
11
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
1998 Morgan Kaufmann Publishers
12
Pipeline no MIPS
multiciclo
pipeline
1998 Morgan Kaufmann Publishers
13
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.
1998 Morgan Kaufmann Publishers
14
Idéia Básica
SOMADOR
REGS.
SOMADOR
MEM.
INSTR.
ALU
MEM.
DADOS
1998 Morgan Kaufmann Publishers
15
Fluxo de dados com latch’s entre os estágios
IF/ID
somador
ID/EX
EX/MEM
somador
MEM/WB
Regist.
PC
ALU
Mem.
Instr.
Mem.
dados
1998 Morgan Kaufmann Publishers
16
Pipelines representados graficamente
Time (in clock cycles)
Program
execution
order
(in instructions)
lw $10, 20($1)
sub $11, $2, $3
CC 1
CC 2
CC 3
CC 4
CC 5
IM
Reg
ALU
DM
Reg
IM
Reg
ALU
DM
CC 6
Reg
1998 Morgan Kaufmann Publishers
17
CONTROLE DO PIPELINE
PCSrc
Branch
RegWrite
Regs.
Mem
Read
ALUSrc
PC
Mem
toReg
ALU
Mem.
Inst.
ALUOp
Mem. Mem
dados Write
RegDst
1998 Morgan Kaufmann Publishers
18
Controle do Pipeline
•
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.
1998 Morgan Kaufmann Publishers
19
Os sinais são repassados pelos estágios
Controle do Pipeline
como os dados
Execution/Address Calculation Memory access stage
control lines
stage control lines
Mem Mem
Reg ALU ALU ALU
Src Branch Read Write
Op0
Op1
Instruction Dst
0
0
0
0
0
1
1
R-format
lw
0
1
0
1
0
0
0
sw
1
0
0
1
0
0
X
beq
0
0
1
0
1
0
X
IF/ID
ID/EX
EX/MEM
Write-back
stage control
lines
Reg Mem to
write Reg
0
1
1
1
X
0
X
0
MEM/WB
1998 Morgan Kaufmann Publishers
20
Fluxo de dados e controle
PCSrc
MemtoReg
MemRead
Branch
RegWrite
ALUOp
MemWrite
RegDst
1998 Morgan Kaufmann Publishers
21
Dependências de dados
•
•
Pode ocorrer iniciando uma instrução antes de terminar a anterior
dependências que “vão retroceder no tempo” são conflitos de dados
Time (in clock cycles)
CC 1
Value of
register $2: 10
CC 2
CC 3
CC 4
CC 5
CC 6
CC 7
CC 8
CC 9
10
10
10
10/– 20
– 20
– 20
– 20
– 20
DM
Reg
Program
execution
order
(in instructions)
sub $2, $1, $3
and $12, $2, $5
or $13, $6, $2
add $14, $2, $2
sw $15, 100($2)
IM
Reg
IM
DM
Reg
IM
DM
Reg
IM
Reg
DM
Reg
IM
Reg
Reg
Reg
DM
Reg
1998 Morgan Kaufmann Publishers
22
Solução por Antecipação – usar os resultados
temporários, sem esperar que eles sejam escritos
- Atuar no caminho do banco de registr. p/ substituir o valor de leit/escrita de registrador
- Antecipação da ALU
Time (in clock cycles)
CC 1
Value of register $2 : 10
Value of EX/MEM : X
Value of MEM/WB : X
CC 2
CC 3
CC 4
CC 5
CC 6
CC 7
CC 8
CC 9
10
X
X
10
X
X
10
– 20
X
10/– 20
X
– 20
– 20
X
X
– 20
X
X
– 20
X
X
– 20
X
X
DM
Reg
Program
execution order
(in instructions)
sub $2, $1, $3
and $12, $2, $5
or $13, $6, $2
add $14, $2, $2
sw $15, 100($2)
IM
Reg
IM
Reg
IM
DM
Reg
IM
Reg
DM
Reg
IM
Reg
DM
Reg
Reg
DM
Reg
1998 Morgan Kaufmann Publishers
what if this $2 was $13?
23
Solução por Antecipação
Unidade de antecipação
1998 Morgan Kaufmann Publishers
24
Antecipação do estágio EX/MEM
sub $2,$1,$3
Seleciona MUX
do lado A
da ALU para
antecipação
EX/MEMRegWrite
$5
Rt
Rs
$2
EX/MEMRegisterRd
$2
RegWrite
and $12,$2,$5
Seleciona MUX
do lado B
da ALU para
antecipação
1998 Morgan Kaufmann Publishers
25
Antecipação do estágio MEM/WB
Seleciona MUX
do lado A
da ALU para
antecipação
$2
MEM/WBRegWrite
$2
Rt
Rs
$6
MEM/WBRegisterRd
sub $2,$1,$3
RegWrite
or $13,$6,$2
Seleciona MUX
do lado B
da ALU para
antecipação
1998 Morgan Kaufmann Publishers
26
=
=
MUX A
SA1
MUX A
SA0
SELEÇÃO DO
MUX A
MEM/WBRegWrite
Rt
MEM/WBRegisterRd
10
EX/MEMRegWrite
Rs
01
Rs
00
MUX B
10
Rt
01
EX/MEMRegisterRd
00
MUX A
CIRCUITO DE ANTECIPAÇÃO (FORWARDING UNIT)
=
=
MUX B
SB0
MUX B
SB1
SELEÇÃO DO
MUX B
1998 Morgan Kaufmann Publishers
27
Nem sempre é possível solucionar por antecipação (Fazer
o Load de uma palavra pode causar um conflito)
- Se uma instrução tenta ler um registrador seguindo uma instrução de
load word que escreve no mesmo registrador.
Time (in clock cycles)
Program
CC 1
execution
order
(in instructions)
lw $2, 20($1)
and $4, $2, $5
or $8, $2, $6
add $9, $4, $2
slt $1, $6, $7
•
IM
CC 2
CC 3
Reg
IM
CC 4
CC 5
DM
Reg
Reg
IM
DM
Reg
IM
CC 6
CC 8
CC 9
Reg
DM
Reg
IM
CC 7
Reg
DM
Reg
Reg
DM
Reg
Portanto, necessitamos que a unidade de detecção de conflitos
1998 Morgan Kaufmann Publishers 28
paralize, em um ciclo, as instruções seguintes ao load word
Parada (Stall)
manter instruções nos mesmos estágios
1998 Morgan Kaufmann Publishers
29
Parada com inserção de nop a partir do estágio EX
lw $2,20($1)
IM
Reg
DM
DM
nop
and $4,$2,$5
or $8, $2, $8
add $9, $4, $2
slt $1, $6, $7
Reg
IM
Reg
Reg
IM
IM
Reg
DM
Reg
IM
Reg
DM
Reg
IM
Reg
DM
Reg
Reg
DM
Reg
1998 Morgan Kaufmann Publishers
30
Unidade de detecção de conflitos
• A parada faz com que uma instrução que não faz nada (nop) prossiga
1998 Morgan Kaufmann Publishers
31
Exemplo de inserção de parada
sinais 0
1998 Morgan Kaufmann Publishers
32
Conflitos de Desvio (Branch)
•
Quando é decidido pelo branch, outras instruções estão em pipeline!
Time (in clock cycles)
Program
execution
CC 1
CC 2
order
(in instructions)
40 beq $1, $3, 7
44 and $12, $2, $5
48 or $13, $6, $2
52 add $14, $2, $2
72 lw $4, 50($7)
•
IM
CC 3
Reg
IM
CC 4
CC 5
DM
Reg
Reg
IM
DM
Reg
IM
CC 6
CC 8
CC 9
Reg
DM
Reg
IM
CC 7
Reg
DM
Reg
Reg
DM
Reg
O pipeline equivale a previsão de “não ocorrer branch”
– Solução: hardware para desprezar as instruções posteriores
1998 Morgan Kaufmann Publishers 33
caso haja branch
Controle para limpar as instruções posteriores
além de antecipar o cálculo da condição
IFFlush
1998 Morgan Kaufmann Publishers
34
Exemplo de beq e atualização do PC
44
and $12,$2,$5
40
beq $1,$3,7
endereço 72
lw $4, 50($7)
Resulta em NOP
1998 Morgan Kaufmann Publishers
35
RESULTADO DO CONTROLE DE DESVIO
Necessidade de limpar apenas uma instrução
1998 Morgan Kaufmann Publishers
36
Melhorando o desempenho
•
Tentar evitar paradas! P.ex., reordenar essas instruções:
lw
lw
sw
sw
•
$t0,
$t2,
$t2,
$t0,
0($t1)
4($t1)
0($t1)
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
1998 Morgan Kaufmann Publishers
37
MIPS superescalar
1998 Morgan Kaufmann Publishers
38
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
1998 Morgan Kaufmann Publishers
39
EXEMPLO
O código:
loop: lw
add
sw
addi
bne
$t0, 0 ($s1)
$t0, $t0,$s2
$t0, 0($s1)
$s1, $s1, -4
$s1, $zero, loop
# t0 = elemento de array
# soma o elemento do array a um valor escalar em $s2
# armazena o resultado
# decrementa o ponteiro
# desvia para loop se $s1 diferente de 0
pode ser escalonado para o MIPS superescalar da seguinte forma:
R ou desvio
loop:
Load/store
Ciclo de clock
lw
1
$t0, 0($s1)
addi $s1, $s1,-4
2
add $t0 , $t0, $s2
3
bne $s1, $zero, loop sw
$t0, 4($s1)
4
5 instruções em 4 ciclos
1998 Morgan Kaufmann Publishers
40
Desdobramento de laço (loop unrolling)
loop:
R ou desvio
Load/store
Ciclo
de clock
Observações
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
add $t3, $t3, $s2
sw $t1, 12($s1) 6
16($s1) =
$s1 inicial
sw $t2, 8($s1) 7
bne $s1, $zero, loop sw $t3, 4($s1) 8
14 instruções em 8 ciclos
1998 Morgan Kaufmann Publishers
41
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
1998 Morgan Kaufmann Publishers
42
Escalação Dinâmica
Despacho em ordem
Unidades
funcionais
Execução
fora de ordem
Unidade de Comprometimento:
escrita final do resultado
em ordem
43
1998 Morgan Kaufmann Publishers
A microarquitetura do Pentium 4
1998 Morgan Kaufmann Publishers
44
Multiprocessadores
•
criar computadores potentes conectando muitos computadores pequenos
Processor
Processor
Processor
Cache
Cache
Cache
Processor
Processor
Processor
Cache
Cache
Cache
Memory
Memory
Memory
Single bus
Memory
I/O
Network
Multiprocessador de memória
compartilhada centralizada
Multiprocessador de memória
distribuída
1998 Morgan Kaufmann Publishers
45
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
Front end – busca até
4 instruções
7 Pipelines, sendo apenas
o programa de cor vermelha
em execução
Nota-se os espaços
em branco dos estágios
pipeline ociosos
1998 Morgan Kaufmann Publishers
46
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
1998 Morgan Kaufmann Publishers
47
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
1998 Morgan Kaufmann Publishers
48
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 singlethreaded SMP
Single-threaded SMP
1998 Morgan Kaufmann Publishers
49
Formas de Execução dos Threads
Superscalar
Multithreading
Simultaneous
Multithreading
Clock cycles
Empty
Thread 1
Thread 2
Thread 3
Thread 4
Issue slots
1998 Morgan Kaufmann Publishers
50
Chips de um único CORE
Superescalar
SMT
1998 Morgan Kaufmann Publishers
51
Processadores Multi-Core
•
Um único chip com múltiplos cores
(CPUs), cada um executando
threads distintos como em singlethreaded 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.
1998 Morgan Kaufmann Publishers
52
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
1998 Morgan Kaufmann Publishers
53
Download

Pipeline