- O documento discute o pipeline no processador MIPS, dividindo a execução das instruções em cinco estágios: busca de instrução, decodificação, execução, acesso à memória e escrita no registrador.
- Para implementar o pipeline, os dados precisam ser armazenados em registradores entre os estágios. Isso permite que múltiplas instruções sejam processadas simultaneamente de forma overlapped, com cada estágio trabalhando em uma instrução diferente a cada ciclo.
- Os sinais de controle precis
2. 2
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
3. 3
No multiciclo..o que se pode melhorar?
PC
0
M
u
x
1
Instruction
[25– 21]
Address
Memory
MemData
Write
data
Instruction
[20– 16]
Read
Read
register 2 data 1
Registers
Write
Read
register data 2
0
M
u
x
1
Read
register 1
Instruction
[15– 0]
Instruction
register
Instruction
[15– 0]
Memory
data
register
0
M
Instruction u
x
[15– 11]
1
A
B
4
Write
data
0
M
u
x
1
16
Sign
extend
32
Zero
ALU ALU
result
ALUOut
0
1 M
u
2 x
3
Shift
left 2
• 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?
6. Multiciclo
• 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!
7. Pipeline
• 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
8. Monociclo
Assuma:
•
•
2ns para acessos à memória e operação na ULA.
1ns para acesso ao banco de registradores.
Program
execution
Time
order
(in instructions)
lw $1, 100($0)
lw $2, 200($0)
2
Instruction
Reg
fetch
4
6
ALU
Data
access
8 ns
8
10
12
14
ALU
Data
access
16
18
Reg
Instruction
Reg
fetch
lw $3, 300($0)
8 ns
Reg
Instruction
fetch
...
8 ns
• 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
9. Multiciclo
Assuma:
•
•
2ns para acessos à memória e operação na ULA.
1ns para acesso ao banco de registradores.
Program
execution
Time
order
(in instructions)
lw $1, 100($0)
lw $2, 200($0)
2
Instruction
fetch
4
Reg
6
ALU
8
Data
access
10
12
14
16
18
Reg
2 ns
lw $3, 300($0)
Instruction
fetch
2 ns
Reg
ALU
Data
access
Reg
Instruction
fetch
.
2 ns
• 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
10. Pipeline
Assuma:
•
•
2ns para acessos à memória e operação na ULA.
1ns para acesso ao banco de registradores.
Program
2
execution
Time
order
(in instructions)
Instruction
lw $1, 100($0)
fetch
lw $2, 200($0)
lw $3, 300($0)
2 ns
4
Reg
Instruction
fetch
2 ns
6
ALU
Reg
Instruction
fetch
2 ns
8
Data
access
ALU
Reg
2 ns
10
14
12
Reg
Data
access
Reg
ALU
Data
access
2 ns
2 ns
• 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
Reg
2 ns
11. 11
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
12. 12
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
14. 14
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)
15. 15
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
17. 17
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
18. Bloco operativo com pipeline
Largos o suficiente para manter os dados
Registradores do Pipeline
ADD
ADD
4
64 bits
PC
ADDR
RD
128 bits
<<2
Instruction I
32
16
32
5
5
RN1
Instruction
Memory
RN2
97 bits
64 bits
5
WN
RD1
Register File
ALU
Zero
WD
RD2
16
IF/ID
E
X
T
N
D
M
U
X
ADDR
Data
MemoryRD
32
ID/EX
WD
EX/MEM
MEM/WB
M
U
X
19. 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
28. 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?
33. Diagrama de ciclo: Ciclo 5
SUB
ADD
IF/ID
SW
ID/EX
EX/MEM
LW
MEM/WB
ADD
ADD
4
<<2
PC
ADDR
RD
Instruction
Memory
32
5
RN1
5
RN2
5
WN
RD1
Register
File RD2
WD
16
E
X 32
T
N
D
ALU
M
U
X
Zero
ADDR
Data
Memory RD
WD
M
U
X
34. Bloco operativo com pipeline (2)
ADD
ADD
4
64 bits
PC
ADDR
RD
128 bits
<<2
Instruction I
32
16
32
5
5
RN1
Instruction
Memory
RN2
97 bits
64 bits
5
WN
RD1
Register File
ALU
Zero
WD
RD2
16
IF/ID
E
X
T
N
D
M
U
X
ADDR
Data
MemoryRD
32
ID/EX
WD
EX/MEM
M
U
X
MEM/WB
Endereço do registrador de escrita vem de OUTRA instrução, que está após no pi
35. Bloco operativo com pipeline (3)
ADD
ADD
4
133 bits
<<2
64 bits
PC
ADDR
RD
Instruction
Memory
Instruction I
32
16
102 bits
69 bits
32
5
5
RN1
RN2
5
WN
RD1
Register File
ALU
Zero
WD
RD2
16
E
X
T
N
D
32
M
U
X
ADDR
Data
MemoryRD
WD
M
U
X
IF/ID
ID/EX
EX/MEM
MEM/WB
O número do registrador de destino também é passado através dos registradores ID
EX/MEM e MEM/WB, que agora tem de ter 5 bits a mais
36. Bloco operativo com pipeline (4)
• Branches e escrita no último passo
ADD
ADD
4
64 bits
PC
ADDR
128 bits
<<2
Instruction I
RD
32
Instruction
Memory
16
32
5
5
RN1
RN2
97 bits
64 bits
5
WN
RD1
Register File
ALU
Zero
WD
RD2
16
E
X
T
N
D
32
M
U
X
ADDR
Data
MemoryRD
WD
M
U
X
IF/ID
ID/EX
EX/MEM
MEM/WB
Dados sendo movidos da direita para a esquerda podem causar hazard
de dados
37. Visão alternativa –
Diagramas com vários Ciclos de relógio
CC 1
CC 2
CC 3
CC 4
CC 5
CC 6
CC 7
CC 8
Tempo
lw $t0, 10($t1)
IM
sw $t3, 20($t4)
add $t5, $t6, $t7
sub$t8, $t9, $t10
REG
ALU
DM
REG
IM
REG
ALU
DM
IM
REG
ALU
DM
IM
REG
ALU
REG
REG
DM
REG
39. 39
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ê?
41. 41
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
42. Bloco Operativo com Controle I
PCSrc
0
M
u
x
1
IF/ID
ID/EX
EX/MEM
MEM/WB
Add
Add
result
Add
4
Branch
Shift
left 2
PC
Address
Instruction
memory
Instruction
RegWrite
Read
register 1
MemWrite
Read
data 1
Read
register 2
Registers Read
Write
data 2
register
Write
data
ALUSrc
Zero
Zero
ALU ALU
result
0
M
u
x
1
MemtoReg
Address
Data
memory
Write
data
Instruction
16
[15– 0]
Sign
extend
32
6
ALU
control
Instruction
[20– 16]
Instruction
[15– 11]
0
M
u
x
1
RegDst
ALUOp
MemRead
Read
data
1
M
u
x
0
43. Sinais de controle I
• 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)
Instruction
R-format
lw
sw
beq
Execution/Address
Calculation stage control
lines
Reg
ALU
ALU
ALU
Dst
Op1
Op0
Src
1
1
0
0
0
0
0
1
X
0
0
1
X
0
1
0
Nada para controlar porque a leitura na
memória de instruções e a escrita no
PC estão sempre habilitadas
Memory access stage
control lines
Branc Mem Mem
h
Read Write
0
0
0
0
1
0
0
0
1
1
0
0
44. Controle através dos Estágios
• Controle é propagado junto com os dados – cada registrador de pipeline é
estendido para guardar os bits de controle para dos estágio seguintes
WB
Instruction
IF/ID
M
WB
EX
Control
M
WB
ID/EX
EX/MEM
MEM/WB
• 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
45. Bloco Operativo com Controle II
PCSrc
ID/EX
0
M
u
x
1
WB
Control
EX/MEM
M
EX
IF/ID
WB
M
MEM/WB
WB
Add
Add
Add result
Instruction
memory
ALUSrc
Read
register 1
Read
data 1
Read
register 2
Registers Read
Write
data 2
register
Write
data
Zero
ALU ALU
result
0
M
u
x
1
MemtoReg
Address
Branch
Shift
left 2
MemWrite
PC
Instruction
RegWrite
4
Address
Data
memory
Read
data
Write
data
Instruction 16
[15– 0]
Instruction
[20– 16]
Instruction
[15– 11]
Sign
extend
32
6
ALU
control
0
M
u
x
1
ALUOp
Campo FUNCT
RegDst
MemRead
1
M
u
x
0
46. Execução
com controle
• Sequência
de instruções:
lw
sub
and
or
add
$10,
$11,
$12,
$13,
$14,
20($1)
$2, $3
$4, $7
$6, $7
$8, $9
“before<i>” significa a i-nésima
Instrução antes de lw
Ciclo 1
Ci
47. Execução
com controle
• Sequência
de instruções:
lw
sub
and
or
add
$10,
$11,
$12,
$13,
$14,
20($1)
$2, $3
$4, $7
$6, $7
$8, $9
“before<i>” significa a i-nésima
Instrução antes de lw
Ciclo 2
48. Execução
com controle
• Sequência
de instruções:
lw
sub
and
or
add
$10,
$11,
$12,
$13,
$14,
20($1)
$2, $3
$4, $7
$6, $7
$8, $9
“before<i>” significa a i-nésima
Instrução antes de lw
Ciclo 3
49. Execução
com controle
• Sequência
de instruções:
lw
sub
and
or
add
$10,
$11,
$12,
$13,
$14,
20($1)
$2, $3
$4, $7
$6, $7
$8, $9
“before<i>” significa a i-nésima
Instrução antes de lw
Ciclo 4
51. Execução
com controle
• Sequência
de instruções:
lw
sub
and
or
add
$10,
$11,
$12,
$13,
$14,
20($1)
$2, $3
$4, $7
$6, $7
$8, $9
“after <i>” significa a i-nésima
Instrução depois de add
Ciclo 6
52. Execução
com controle
• Sequência
de instruções:
lw
sub
and
or
add
$10,
$11,
$12,
$13,
$14,
20($1)
$2, $3
$4, $7
$6, $7
$8, $9
“after <i>” significa a i-nésima
Instrução depois de add
Ciclo 7
53. Execução
com controle
• Sequência
de instruções:
lw
sub
and
or
add
$10,
$11,
$12,
$13,
$14,
20($1)
$2, $3
$4, $7
$6, $7
$8, $9
“after <i>” significa a i-nésima
Instrução depois de add
Ciclo 8
54. Execução
com controle
IF: after<4>
• Sequência
ID: after<3>
0
M
u
x
1
de instruções:
EX: after<2>
IF/ID
ID/EX
00
Control
WB
M
WB: add $14, . . .
EX/MEM
MEM/WB
00
000
WB
0
00
EX
0
M
00
0
0
0
1
WB 0
Add
Add
Add result
4
Address
Instruction
memory
ALUSrc
Read
register 1
14
Read
data 1
Read
register 2
Registers Read
Write
data 2
register
Zero
ALU ALU
result
0
M
u
x
1
Write
data
MemtoReg
PC
Branch
Shift
left 2
MemWrite
20($1)
$2, $3
$4, $7
$6, $7
$8, $9
RegWrite
$10,
$11,
$12,
$13,
$14,
000
0000
Instruction
lw
sub
and
or
add
MEM: after<1>
Address
Data
memory
Read
data
1
M
u
x
0
Write
data
Instruction
[15– 0]
Instruction
[20– 16]
Instruction
[15– 11]
Clock 9
“after <i>” significa a i-nésima
Instrução depois de add
Sign
extend
ALU
control
0
M
u
x
1
ALUOp
14
RegDst
Ciclo 9
MemRead
56. 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?
61. 61
Mudança no Cenário
• 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. 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
65. Exercícios
• 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;